このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
音楽信号からの音声の抽出
標準のデジタル ミュージック シンセサイザーを実装し、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 = []; for kj = 1:length(mel) song = [song note(mel(kj),acc(kj)) zeros(1,0.01*fs)]; end song = 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
秒の時間分解能、0
% の隣接するセグメント間のオーバーラップを指定します。[パワーの範囲] を –50
dB と –10
dB に設定します。
[アナライザー] タブで、[複製] を 3 回クリックして歌曲のコピーを 3 つ作成します。信号テーブルの [名前] 列をダブルクリックして、コピーの名前を high
、medium
、low
に変更します。コピーを上の 2 つと左下の表示に移動します。
信号テーブル内の 3 つの複製信号をすべて選択し、[前処理] をクリックして前処理モードを開始します。
high
信号を、信号テーブルで名前をクリックして選択します。[関数] ギャラリーから [ハイパス] を選択します。[関数パラメーター] パネルで450
Hz の通過帯域周波数を入力し、急峻さを0.95
に増やします。[適用] をクリックします。medium
信号を、信号テーブルで名前をクリックして選択します。[関数] ギャラリーから [バンドパス] を選択します。[関数パラメーター] パネルで、低域および高域通過帯域周波数としてそれぞれ230
Hz と450
Hz を入力します。急峻さを0.95
に増やします。[適用] をクリックします。low
信号を、信号テーブルで名前をクリックして選択します。[関数] ギャラリーから [ローパス] を選択します。[関数パラメーター] パネルで230
Hz の通過帯域周波数を入力し、急峻さを0.95
に増やします。[適用] をクリックします。
[すべて確定] をクリックして前処理結果を保存し、モードを終了します。
フィルター処理された信号を含む 3 つの表示それぞれにスペクトログラムを表示します。
元の信号の名前の隣にあるチェック ボックスをオフにして元の信号を削除します。
[表示] タブの [時間-周波数] をクリックしてスペクトログラムの表示を追加し、[時間] をクリックして時間の表示を削除します。
[スペクトログラム] タブで、
0.31
秒の時間分解能を指定し、隣接するセグメント間のオーバーラップとして0
% を指定します。[パワーの範囲] を–50
dB と–10
dB に設定します。
フィルター処理された 3 つの信号を、信号テーブルの [名前] 列をクリックして選択します。[アナライザー] タブで [エクスポート] をクリックして信号を music.mat
という MAT ファイルに保存します。MATLAB で、ファイルをワークスペースに読み込みます。3 つの信号のスペクトルをプロットします。
load music pspectrum(low) hold on pspectrum(medium) pspectrum(high) hold off
% To hear the different voices, type % sound(low.low,fs), pause(5), sound(medium.medium,fs), pause(5), sound(high.high,fs)
参考
アプリ
関数
関連する例
- 相関する信号間の遅延の検出
- ウィンドウの漏れを変化させることでトーンを分解する
- パーシステンス スペクトルを使用した干渉の検出
- 複素包絡線を使用した変調と復調
- 再代入したスペクトログラムを使用したリッジの検出と追跡
- 不等間隔サンプル信号のリサンプリングおよびフィルター処理
- 独自の関数を使用した飽和信号のクリップ除去
- 振動信号の包絡線スペクトルの計算
- クジラの歌からの関心領域の抽出