2

F = fft(x)1)およびを使用して得られた FFT および STFT 係数があると仮定しS = spectrogram(x)ます。これらの係数を音声特徴としてどのように使用できますか? (ここでは、音声機能はパターン認識の意味で使用されます)。

2) 次のコードは、信号の PSD と最も強力な周波数 (kHz) を示していますか?

Hs = spectrogram.periodogram;
p = psd(Hs, x, 'Fs', 22050);
[C, I] = max(p.data);
max_f = p.Frequencies(I);

n3) (2) が OK の場合、PSD を使用して信号内の最も強力な周波数を見つけるにはどうすればよいですか?

4) PSD と同様に、FFT や STFT を使用して最も強力な周波数を見つけるにはどうすればよいですか?

前もって感謝します。

4

2 に答える 2

2

「オーディオ機能」の意味を定義する必要があると思います。達成しようとしていることによって、さまざまな種類の機能があります(たとえば、これらのペーパーで取り上げられている機能のいくつかを参照してください)。

「最も強力な周波数」について話すとき、私はあなたが何らかの形のピッチ検出をしたいと思っていると思いますか?その場合、PSDのピークは確かに最も支配的な周波数を与えますが、それは必ずしもあなたが聞くピッチではありません。たとえば、楽器が200Hzで音を鳴らしている場合、200、400、600、800などにスペクトルのピークがありますが、必ずしも200Hzが最大振幅になるとは限りません。実際、ローパスフィルターを適用して200Hzの成分を除去しても、それがピッチであると認識できます(電話で音楽を聞くと、この効果が聞こえます。これは仮想ピッチと呼ばれます)。

ピッチを検出したい場合は、ピッチ推定アルゴリズムを読むことをお勧めします。

編集:オーディオ分類に関する研究に関する論文はかなりたくさんあるので、Eric Sc​​heirer、George Tzanetakis、MartinMcKinneyなどの研究を検索してください。また、 MIRメーリングリストにも登録します。このリストにはこの分野のコアな人々がた​​くさんいて、アーカイブには役立つものがたくさんあるからです。「最も強力な周波数」についてのあなたの質問については、私はあなたがそれが何を意味するのかよくわかりません。複数の楽器を演奏しながら音楽を聴く場合、一般的に支配的な周波数は1つではありません。ミックスのおかげでしばしば目立つ知覚可能なメロディーがしばしばありますが、それがあなたが何を意味するのかはわかりません。

于 2013-01-21T09:52:35.650 に答える
2

1)S = spectrogram(x)信号xを複数の部分に分割し、各部分のPSDを計算することにより、時間の関数としてFFTを提供します。fft(X)信号全体のfftを一度に提供します。前者は周波数コンテンツの変化を追跡する可能性が高く、後者は全体的な周波数コンテンツを確認するのに役立ちます。私はオーディオ処理にあまり精通していませんが、2つの信号のパワースペクトルが同じであっても、FFTの複雑な位相を少し変更すると、時間領域で信号が劇的に異なる可能性があります。

2)構文は、Matlabで慣れているものとは少し異なるように見えますが、答えは「はい」です。頻度の単位は、使用した正確な構文によって異なります。

3)このsort関数を使用して、n個の最も強力な周波数ビンを取得できます[B,IX] = sort(p.data)freq_maxn = p.Frequencies(IX(1:n))

4)PSD = | FFT | ^ 2/N。言い換えると、PSDは、FFTの大きさの2乗の単純なスケーリングバージョンです。ただし、実数値の信号の場合、残りの半分は単純に複素共役であるため、FFTの半分のみが使用されます。そのシーケンスを取得すると、最大周波数と最初のn周波数の計算は、(2)と(3)と同じままになります。詳細については、[ピリオドグラム](http://www.mathworks.com/help/signal/ref/periodogram.html)を参照してください。

于 2013-01-21T06:56:49.637 に答える