ピアノのピッチ検出


8

私はピアノのチューニングプログラムに取り組んでおり、その一部にはリアルタイムのピッチ検出が必要です。これは私がこれまでに行ったスキームで、ある程度は機能しますが、おそらくいくつかの改良を使用できます。

モノラル、44.1kHz、16ビットPCMオーディオを2 ^ 14サンプルのチャンクでキャプチャしています。最後の4つのサンプルを長さ2 ^ 16のバッファーに結合し、ハンウィンドウをバッファーに適用して、FFTを実行します。次に、FFTの結果を2つの解像度でバケット化します。最初に、200バケットにバケット化してから、この粒度でHPSピッチ検出アルゴリズムを実行します。ここで正確な周波数を取得する必要はありません。近づきたいだけです。次に、12000バケットにバケット化すると、10Hzから10kHzまで1セントの解像度になります。200ビンHPSアルゴリズムからおおよその周波数がわかったら、12000ビンケースのその範囲でピークを検索して、より正確な周波数を取得します。

これは、キーボードの中央にあるノートでは問題なく動作するようです。低音で発生するのは、通常、実際の音の2番目または3番目の部分である約1.5秒の音の誤認と、その後の正しい音の誤認です。

何が起こっているのかを確認するために作成したすべてのスペクトルプロットでは、予想されるピークよりも広い幅があります。この幅は、200ビンから12000ビンのケースで視覚的にある程度一貫しています。200ビンの場合、ピークが狭くなると予想していました。

ですから、信号処理は私にとっては初めてなので、私が質問することは考えられない問題があるかもしれませんが、特定の質問に関しては、サンプルサイズはこのタスクに十分ですか?ハーンはウィンドウの正しい選択ですか?FFTの前にデータを平滑化する必要がありますか?ビンの数に対してHPSはどの程度敏感ですか?多くのビンを使用した場合、非調和性により、部分音がHPSアルゴリズムの2、3、4などで除算する単純なアプローチと基本波をオーバーラップしない可能性があると考えていました。


このアプリケーションでは、定数Q変換は役に立ちますか?wellesley.edu/Physics/brown/pubs/cq1stPaper.pdf
Atul Ingle

好奇心旺盛:信号の取り込みにはどのようなハードウェアデバイスを使用していますか?
両生類2013年

Samson CO1Uマイクを使用しています。
DrTodd13 2013年

回答:


6

このスレッドに似ています:

DFTまたはFFTなしで周波数を見つけるアルゴリズムはありますか?

FFTは、チューナーを構築する特定の効率的な方法ではありません。より優れた(そして安価な)方法には、自己相関、フェーズロックループ、遅延ロックループなどがあります。

1つの例は、ローカルの最大値と最小値のトラッキングを使用して基本周波数を大まかに調整し、ローカル発振器と位相ロックループを使用してこの周波数を正確にトラッキングすることです。これにより、周波数が低くても、基本波が弱い場合でも、チューニング中の移動する基本波をすばやく連続的に、高い精度で追跡できます。


まあ、私は非調和性測定と部分一致計算のためにプログラムの他の場所でFFTを使用していました。ですから、この目的のために再利用するのも私にとって最も簡単でした。私は安いことにあまり関心がありませんが、フェーズロックループの方が優れている場合は、それらをチェックします。これは私の専門分野ではないので、これらのいくつかを実装することは不可能に思えるかもしれません。
DrTodd13 2013年

2

「ピアノチューニングソフトウェア」または類似のアイテムを検索すると、ヒット数が多くなります。

あらゆる種類の楽器には、その音に影響を与える独特の音響的/物理的/環境的特性があります。そして、何千もの本や研究論文が示唆するように、それは複雑になる可能性があります(例:調性、攻撃/減衰特性、非調和性など)。

ピッチ検出はそれ自体が幅広い分野です。以下は利用可能なもののほんの一部です: 概要記事1スタック交換ポスト および 概要記事2

特定の質問について:1)サンプルサイズは過剰に見えます– SNRと波形の安定性によっては、より少ないサイクルを使用する他の方法を使用して高い周波数精度を得ることができます。(一部のメソッドはFFTベースです)。そして、長いサンプル時間でアタック/ディケイをキャプチャしている可能性があります。2)長方形以外のウィンドウは、周波数領域でビーム幅を広げますが、これを使用するべきではないという意味ではありません。HannはHPSで一般的です。 、私が見てきたことから、3)上記の最初のリンクで述べたように、HPSは低周波数ではうまく機能せず、不調和が低い弦に影響を及ぼします。あなたの全体的な方法については、多くのページを書く必要がなく、私が扱っていた周波数範囲と高調波に応じて、私はそれを異なる方法で行うと言えるでしょう。


ケプストラムの変種のいくつかは試してみるのが面白そうなので、それから始めます。おそらく、「攻撃」/ハンマーストライキに対応するサンプルの部分を破棄する必要があります。ノートがやや安定した状態に達するまでにかかる時間を知っている人はいますか、それともフィルタリングできるように初期状態を特徴付ける方法がありますか?
DrTodd13 2013年

情報はそこにありますが、見つけるのは難しいかもしれません-たとえば、「攻撃」特性に関する「ピアノの世界」フォーラムからのこのスレッドを見てください:pianoworld.com/forum/ubbthreads.php/topics/1125286/What% 20is
Kevin McGee

2

別の答えはPLLを示唆しています。私はあなたはPLLから離れるべきだと思います:ピッチトラッキングに関するほとんどの文献は自動相関(「YINピッチトラッキング」の検索-YINは自己相関に基づく最新のピッチトラッキングアルゴリズムです)とFFTに焦点を当てています。無線機のように、PLLは周波数の小さな変動を追跡するのに適していると思います

自己相関を開始するのに適しています。高速で効率的かつ正確です。ただし、FFTを非常に正確かつ高速にするためのコツがあります(FFTを使用するほとんどの手法は、マグニチュードを調べるだけですが、位相情報も使用できます)。したがって、FFTに慣れている場合は、その手法も使用できます。

これらの手法のいずれかを使用する場合、高調波を低減し、基本波に焦点を合わせるために、ローパスを使用したプレフィルタリングをお勧めします。FFTを使用すると、代わりに、またはそれに加えて、最初の極大値を調べるようなトリックを使用できます。

これは、フィルタリングなどの出発点として適しています。また、あまりにも多くの作業を回避するためのいくつかのヒントを提供し、ソースコードにリンクします。http//blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html

この本には、フェーズ情報を使用してYINとFFTの両方を説明するセクションがあります:http : //www.amazon.com/DAFX-Digital-Udo-ouml-lzer/dp/0470665998

最後に、ピアノの詳細を理解する必要があります。チューナー自体が特別なWRT(ストレッチチューニングなど)を行う必要があるかどうか、それがピアノのチューニングを担当する人に任されているかどうかはわかりませんが、少なくともそのことを理解する必要があります。別のポスターは、調波の外れを調べることを提案しましたが、主な問題は、基音を特定して調整することです。


素敵な情報、ありがとう!私が興味を持ったのは、「エントロピーに基づく楽器のチューニング」という論文でした。エントロピーの測定値を使用して、ピアノ固有の非調和性に基づいて特定のピアノのチューニングを計算します。私は最初に論文の結果を複製し、それからそこから進んでいきました。それが成功したら、私はこの投稿の内容を使用して、ピアノを計算されたチューニングに合わせることができます。FFTフェーズの使用について話すとき、それは通常破棄される出力であり、私が使用できるものですか?他の誰かのFFTパッケージを使用しています。
DrTodd13 2013年

私はそれらのテクニックに精通していません(しかし、興味深いように聞こえます)。そのドメインに移る前に、標準的なテクニックから始めます。私はあなたがエミュレートしたい高度なテクニックに最もよく似た標準的なテクニックを選びますが。
ビョルンロシュ

FFT出力は通常、実数部と虚数部です。通常の方法でこれをマグニチュードとフェーズに変換できます(実数+虚数とマグ&フェーズはどちらも複素数の有効な表現です)。これをピッチトラッキングに使用する方法は微妙です。詳細については、DAFXの本を読む必要があります。
ビョルンロシュ

2

表示される広いピークは、信号処理のアーティファクトではなく、物理現象の結果である可能性があります。一般に、FFT結果の狭いピークは、時間領域のウィンドウで周期的に変調されていない正弦波を表します。しかし、ピアノの弦の振動はそれだけではありません。それらは時間とともに進化し、顕著な変調を生み出します。

いくつかの効果:ノートごとに複数のピアノ弦が響板を通してエネルギーを交換します。総振動エネルギーは時間とともに減衰します。振動モードは、最初は少し不調和かもしれません。各モードの振動の正確な周波数(調和)は、弦の剛性と直径がゼロでないため、振幅の減衰とともに変化する可能性があります。そして、各高調波は異なる速度で減衰する場合があります。

これらの複数の変調のどれを「ピッチ」と呼びたいかを決定する必要があり(聴覚学の本が役立つかもしれません)、FFTの「ワイドピーク」内でそれをより適切に追跡する方法を見つける必要があります。


1

ピアノの低音、特にアップライトでは、スペクトルが伸びる傾向があります(基本波と最初の倍音の間の距離は1オクターブより少し大きいなど)。これがピアノにパーカッシブなサウンドを与えるものであり、古いアップライトの最低音はしばしばノートよりも音のように聞こえます。私が理解しているように、これが、チープアップライトに特定のパーカッシブなホンキートンクサウンドがある理由です。この優れたピアノチューナー(アルゴリズムではなく人々)は、低音の基音よりも低音でピアノをチューニングするため、人間の耳はこれらの音の低音の相互作用に集中する傾向があります。調和級数の引き伸ばしも、スペクトルの予想よりも広いピークの原因である可能性があります。


まあ、非調和性は変動性と同じではありません。非調和性はピークが別のポイントになる原因になりますが、ピークが広くなる理由はわかりません。おそらく、ピーク幅は、時間の経過に伴う固有の信号の変動が原因であるので、サンプル周期を短くすると、変動が減少しますか?
DrTodd13 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.