ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

信号のサンプルレートの変更

この例では、信号のサンプルレートの変更方法を説明します。この例は 2 つの部分で構成されています。最初の部分では、正弦波入力のサンプルレートを 44.1 kHz から 48 kHz に変更します。このワークフローは、オーディオ処理で一般に使用されています。コンパクト ディスクで使用されているサンプルレートは 44.1 kHz で、デジタル オーディオ テープで使用されているサンプルレートは 48 kHz です。2 番目の部分では、録音された音声サンプルのサンプルレートを 7418 Hz から 8192 Hz に変更します。

44.1 kHz でサンプリングされた正弦波の和から構成される入力信号を作成します。この正弦波は、2、4、8 kHz の周波数をもちます。

Fs = 44.1e3;
t = 0:1/Fs:1-1/Fs;
x = cos(2*pi*2000*t)+1/2*sin(2*pi*4000*(t-pi/4))+1/4*cos(2*pi*8000*t);

サンプルレートを 44.1 kHz から 48 kHz に変更するため、ある指定した許容誤差の範囲で、元のサンプルレート 44100 の P/Q 倍が 48000 になるように有理数 (整数の比) P/Q を決定する必要があります。

これらの係数の決定には rat を使用します。新規サンプルレート 48000 の元のサンプルレート 44100 に対する比を入力します。

[P,Q] = rat(48e3/Fs);
abs(P/Q*Fs-48000)
ans = 7.2760e-12

P/Q*Fs は目的のサンプルレート 48000 と 10-12 の次数だけで異なっていることがわかります。

resample の入力として、rat で求めた係数を分子と分母に使用して、48 kHz でサンプリングした波形を出力します。

xnew = resample(x,P,Q);

コンピューターでオーディオを再生する場合、2 つの波形を再生することができます。信号を再生する前に、音量を心地よいレベルに設定します。2 つの異なるサンプルレートで信号を聞くことができるように、play コマンドを別々に実行します。

% P44_1 = audioplayer(x,44100);
% P48 = audioplayer(xnew,48000);
% play(P44_1)
% play(P48)

音声サンプルのサンプルレートを 7418 Hz から 8192 Hz に変更します。音声信号は "MATLAB®" という発声の録音です。

音声サンプルを読み込みます。

load mtlb

mtlb.mat ファイルを読み込むと、音声信号 mtlb とサンプルレート Fs が MATLAB ワークスペースに取り込まれます。

新規サンプルレート 8192 の元のサンプルレートに対する比の有理数近似を計算します。rat を使用して近似値を計算します。

[P,Q] = rat(8192/Fs);

新規サンプルレートで音声サンプルをリサンプリングします。2 つの信号をプロットします。

mtlb_new = resample(mtlb,P,Q);

subplot(2,1,1)
plot((0:length(mtlb)-1)/Fs,mtlb)
subplot(2,1,2)
plot((0:length(mtlb_new)-1)/(P/Q*Fs),mtlb_new)

コンピューターにオーディオ出力機能がある場合、比較のため、それぞれのサンプルレートで 2 つの波形を再生することができます。音声を再生する前に、コンピューターで音量を心地よい聴取レベルに設定します。play コマンドを別々に実行して、異なるサンプルレートで音声サンプルを比較します。

% Pmtlb = audioplayer(mtlb,Fs);
% Pmtlb_new = audioplayer(mtlb_new,8192);
% play(Pmtlb)
% play(Pmtlb_new)

参考