Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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

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

fs = 2e3;
t = 0:1/fs:0.3-1/fs; fq = [-Inf -9:2]/12;
note = @(f,g) [1 1 1]*sin(2*pi*440*2.^[fq(g)-1 fq(g) fq(f)+1]'.*t);

mel = [5 3 1 3 5 5 5 0 3 3 3 0 5 8 8 0 5 3 1 3 5 5 5 5 3 3 5 3 1]+1;
acc = [5 0 8 0 5 0 5 5 3 0 3 3 5 0 8 8 5 0 8 0 5 5 5 0 3 3 5 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(song,SampleRate=fs);

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

Signal Analyzer window showing three copies of the waveform and spectrum of a music signal. A fourth display shows the spectrogram of the signal.

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

信号テーブル内の 3 つの複製信号をすべて選択し、[前処理] をクリックして前処理モードを開始します。

  1. high 信号を、信号テーブルで名前をクリックして選択します。[関数] ギャラリーから [ハイパス] を選択します。[関数パラメーター] パネルで 450 Hz の通過帯域周波数を入力し、急峻さを 0.95 に増やします。[適用] をクリックします。

  2. medium 信号を、信号テーブルで名前をクリックして選択します。[関数] ギャラリーから [バンドパス] を選択します。[関数パラメーター] パネルで、低域および高域通過帯域周波数としてそれぞれ 230 Hz と 450 Hz を入力します。急峻さを 0.95 に増やします。[適用] をクリックします。

  3. low 信号を、信号テーブルで名前をクリックして選択します。[関数] ギャラリーから [ローパス] を選択します。[関数パラメーター] パネルで 230 Hz の通過帯域周波数を入力し、急峻さを 0.95 に増やします。[適用] をクリックします。

[すべて確定] をクリックして前処理結果を保存し、モードを終了します。

Signal Analyzer window showing highpass-filtered, bandpass-filtered, and lowpass-filtered copies of a music signal

フィルター処理された信号を含む 3 つの表示それぞれにスペクトログラムを表示します。

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

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

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

Signal Analyzer window showing the three voices in a music signal

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

load music

pspectrum(low)
hold on
pspectrum(medium)
pspectrum(high)
hold off

Figure contains an axes object. The axes object with title Fres = 1.9536 Hz, xlabel Frequency (kHz), ylabel Power Spectrum (dB) contains 3 objects of type line.

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

参考

アプリ

関数

関連する例

詳細