Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

音楽信号からの音声の抽出

標準のデジタルミュージックシンセサイザーを実装し,3音声配置で民謡の演奏に使用します。サンプルレートを 2 kHz に指定します。歌曲を MATLAB® の timetable として保存します。

fs = 2e3; t = 0:1/fs:0.3-1/fs; l = [0 130.81 146.83 164.81 174.61 196.00 220 246.94]; m = [0 261.63 293.66 329.63 349.23 392.00 440 493.88]; h = [0 523.25 587.33 659.25 698.46 783.99 880 987.77]; note = @(f,g) [1 1 1]*sin(2*pi*[l(g) m(g) h(f)]'.*t); mel = [3 2 1 2 3 3 3 0 2 2 2 0 3 5 5 0 3 2 1 2 3 3 3 3 2 2 3 2 1]+1; acc = [3 0 5 0 3 0 3 3 2 0 2 2 3 0 5 5 3 0 5 0 3 3 3 0 2 2 3 0 1]+1; song = [];forkj = 1:length(mel) song = [song note(mel(kj),acc(kj)) zeros(1,0.01*fs)];endsong = song'/(max(abs(song))+0.1);% To hear, type sound(song,fs)tune = timetable(seconds((0:length(song)-1)'/fs),song);

信号アナライザーを開いて、ワークスペース ブラウザーから信号テーブルに timetable をドラッグします。[グリッドの表示]▼ をクリックして、2 行 2 列のグリッドの表示を作成します。上の 2 つと左下の表示を選択し、[スペクトル]ボタンをクリックしてスペクトル表示を追加します。右下の表示を選択し、[時間-周波数]をクリックしてスペクトログラムの表示を追加し、[時間]をクリックして時間の表示を削除します。4 つすべての表示に歌曲をドラッグします。右下の表示を選択し、[スペクトログラム]タブで、0.31 秒 (310 ms) の時間分解能、0% の隣接するセグメント間のオーバーラップを指定します。[パワーの範囲] - 50 dB と - 10 dB に設定します。

[アナライザー]タブで、[複製]を 3 回クリックして歌曲のコピーを 3 つ作成します。信号テーブルの[名前]列をダブルクリックして、コピーの名前をhighmediumlowに変更します。コピーを上の 2 つと左下の表示に移動します。

フィルターを使用して複製信号を前処理します。

  1. high信号を、信号テーブルで名前をクリックして選択します。[アナライザー]タブの[ハイパス]をクリックします。表示された[ハイパス]タブで 450 Hz の通過帯域周波数を入力し、急峻さを 0.95 に増やします。[ハイパス]をクリックします。

  2. medium信号を、信号テーブルで名前をクリックして選択します。[アナライザー]タブの[前処理]▼ をクリックして、[バンドパス]を選択します。表示された[バンドパス]タブで、低域および高域通過帯域周波数としてそれぞれ 230 Hz と 450 Hz を入力します。急峻さを 0.95 に増やします。[バンドパス]をクリックします。

  3. low信号を、信号テーブルで名前をクリックして選択します。[アナライザー]タブの[ローパス]をクリックします。表示された[ローパス]タブで、230 Hz の通過帯域周波数を入力し、急峻さを 0.95 に増やします。[ローパス]をクリックします。

フィルター処理された信号が含まれる 3 つの表示のそれぞれで次を行います。

  1. 元の信号の名前の隣にあるチェック ボックスをオフにして元の信号を削除します。

  2. [表示]タブの[時間-周波数]をクリックしてスペクトログラムの表示を追加し、[時間]をクリックして時間の表示を削除します。

  3. [スペクトログラム]タブで、0.31 秒の時間分解能を指定し、隣接するセグメント間のオーバーラップとして 0% を指定します。[パワーの範囲] - 50 dB と - 10 dB に設定します。

フィルター処理された 3 つの信号を、信号テーブルの[名前]列をクリックして選択します。[アナライザー]タブで[エクスポート]をクリックして信号をmusic.matという MAT ファイルに保存します。MATLAB で、ファイルをワークスペースに読み込みます。3 つの信号のスペクトルをプロットします。

loadmusicpspectrum(low) holdonpspectrum(medium) pspectrum(high) holdoff

% To hear the different voices, type% sound(low.low,fs), pause(5), sound(medium.medium,fs), pause(5), sound(high.high,fs)

参考

アプリ

関数

関連する例

詳細