離散フーリエ変換-基本をすばやく見つける?


9

まず、私は謝罪します。私はソフトウェア開発者であり、純粋な数学に飛び込んでいないのは非常に長い期間なので、私の質問は馬鹿げているように見えるかもしれません。私は望みません。

コンテキストは、音楽のピッチ認識です。

音符を取り、それにフーリエ変換を適用すると、特定の周波数の振幅の合計が無限になります。たとえば、任意の楽器で基本がである音符を演奏すると、フーリエ変換後、F 2 F 3 F n Fで高調波が発生します。すべての周波数には、楽器の音色を定義する特定の振幅があります(ピアノ、声、トランペットなどすべてはこの音に従いますが、すべての倍音に対して異なる振幅があります)。FF2FFF

今私がしたいのは、与えられたオーディオ信号からです、見つけます。それだけ。常にバックグラウンドノイズなどがあるため、見た目よりも複雑です。さらに、Fは必ずしも最大の振幅を持つ周波数である必要はありません。FF

したがって、を見つけるための私のアイデアは、DFT(実際には速度のFFT)を適用し、周波数Fを見つけることです。これにより、F + 2 F + 3 F + + n FがFFT出力で最大になります。FFF+2F+F++F

それは可能だと思いますか?それは非常に短い時間で可能だと思いますか(<5ミリ秒としましょう)?


おそらくこれが答えになる可能性があります:edaboard.com/thread197897.html

ええ、でもそれは別の方法ですね。私見、簡単ですが、ハーモニックサウンドとインハーモニックサウンドを区別できないため、信頼性は低くなります...
Dinaiz

回答:


6

あなたが説明しているのは、このスタンフォードCCRMA論文にリストされている、ピッチ推定の高調波プロダクトスペクトル法と非常に似ています。

FFTは "振幅の無限合計"を提供しませんが、FFTの長さに応じて有限数の結果ビンを提供します。

5 mSは、200 Hzの音符の1周期のみで、200 Hz未満の周期のごく一部です。音楽のピッチ認識では、通常、ピッチ音の周期性の複数の周期を聞いたり分析したりする必要があります。そして、多くの音楽はG2以下の音符を使用しています。十分な長さのデータがある場合、最新のPCまたはモバイルデバイスでは、そのデータからピッチ推定値を計算するのに数ミリ秒ではなく、数マイクロ秒しかかからない場合があります。


いい視点ね。ただし、すでに2Fと3Fがある場合、Fは実際には必要ありません。あなたの例では、2F = 400hzと3F = 600hzなので、5ミリ秒の周期を持つのに十分な音が聞こえなくても、Fが200であったことがわかりますか?また、ウェーブレット変換について聞いたことがあります。これを行うより良い方法だと思いますか?
Dinaiz、2011

@Dinaiz:ピッチ音のソース、および倍音周波数のそれらの断片が実際に静止しているかどうかに依存します。ウェーブレットは完全に別の質問です。
hotpaw2

したがって、この方法は「ほぼリアルタイム」でf0を見つけるのには適していません。現在の技術状態では、任意の楽器で数ミリ秒未満でf0を見つけることはまったく可能ですか?それとも失われた原因であり、私は探求を放棄する必要がありますか?:D
ディナイズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.