質問

音符のピッチ検出にANNを使用しようとしています。ネットワークは単純な 2 層 MLP で、その入力は基本的に DFT (平均化および対数分布) であり、12 個の出力が特定のオクターブの 12 個の音に対応します。

ネットワークは、何らかの楽器で演奏される 12 音のいくつかのサンプル (一度に 1 音ずつ) と、「沈黙」のいくつかのサンプルを使用してトレーニングされます。

実際、結果は良好です。このネットワークは、さまざまな楽器によって演奏される音を非常に正確に検出することができ、ノイズに比較的耐性があり、曲の演奏中に完全に正気を失うことさえありません。

ただし、目標はポリフォニックサウンドを検出できるようにすることです。そのため、2 つ以上のノートが一緒に演奏されると、対応する 2 つのニューロンが発火します。驚くべきことは、ネットワークは実際にはすでにある程度それを実行しています (モノラル サンプルのみでトレーニングされています)。ただし、モノラル ノートの場合よりも一貫性と精度が低くなります。私の質問は、ポリフニックサウンドを認識する能力を強化するにはどうすればよいですか?

問題は、なぜそれが実際にすでに機能しているのかが本当に理解できないことです。異なるノート (またはその DFT) は、基本的に、ネットワークがトレーニングされる空間内の異なる点です。これで、類似した音 (近い点) は認識するが、音の組み合わせ (各トレーニング例から離れた点を形成する) の出力をどのように「結論づける」のかはわかりました。同様に、(0,0) (0,1) (1,0) = (0) でトレーニングされた AND ネットワークは、(1,1) = (1) と「結論付ける」ことは期待されません。

これに対する強引なアプローチは、できるだけ多くのポリフォニック サンプルを使用してネットワークをトレーニングすることです。ただし、ネットワークはモノラルのサンプルからアイデアを漠然と理解しているように見えるため、おそらくここにはもっと根本的な何かがあるでしょう。

何かヒントはありますか?(長くなってしまってごめんなさい、ところで:)。

役に立ちましたか?

解決

すでに機能している理由はおそらく非常に単純で、出力を 1 つだけ選択するようにトレーニングしていないためです (少なくとも、トレーニングしていないと思います)。出力が入力と重みの単なるドット積である単純な場合、重みは対応するピッチの整合フィルターになります。すべてが線形であるため、複数の整合フィルターが同時に良好な一致を検出した場合、複数の出力が同時にアクティブになります (ポリフォニックノートの場合と同様)。ネットワークにはおそらく非線形性が含まれているため、状況はもう少し複雑になりますが、考え方はおそらく同じです。

それを改善する方法については、ポリフォニック サンプルを使用したトレーニングが可能性の 1 つであることは確かです。もう 1 つの可能性は、線形フィルターに切り替えることです。ポリフォニック サウンドの DFT は、基本的には個々のサウンドの DFT の合計です。入力の線形結合が、対応する出力の線形結合になるようにする必要があるため、線形フィルターが適切です。

ちなみに、そもそもなぜこれにニューラルネットワークを使うのでしょうか?DFT を見て、たとえば最大周波数を取るだけで、より簡単に良い結果が得られるようです。

他のヒント

アンシ・クラプリ は、ニューラル ネットワークを使用してポリフォニック録音でピッチ検出を実行する方法を発表した、評判の高いオーディオ研究者です。

クラプリの方法とあなたの方法を比較してみるとよいでしょう。それは彼の修士論文に詳しく記載されており、 音楽の自動採譜のための信号処理方法. 。彼の多くの論文をオンラインで見つけることも、アルゴリズムとテスト結果を説明した彼の本を購入することもできます。彼の修士論文は以下にリンクされています。

https://www.cs.tut.fi/sgn/arg/klap/phd/klap_phd.pdf

ポリフォニック録音におけるピッチ検出は非常に難しいテーマであり、多くの論争が含まれています。十分に読む準備をしてください。以下のリンクには、私が無料アプリ用に開発したポリフォニック録音時のピッチ検出の別のアプローチが含まれています。 ピッチスコーププレーヤー. 。私の C++ ソース コードは GitHub.com で入手でき、以下のリンク内で参照できます。無料の実行可能バージョン ピッチスコーププレーヤー Web からも入手でき、Windows 上で実行できます。

リアルタイムピッチ検出

I 2つの正弦波との間の差を検出することにCTRNN(連続時間リカレントニューラルネットワーク)に進化して実験を行いました。私は、中程度の成功を収めたが、これらのニューロンの銀行をフォローアップするための時間がなかった(すなわち蝸牛に似たバンドで)ます。

1つの可能なアプローチは、短い断片を生成するために採用遺伝的プログラミングする(GP)になるであろうピッチを検出したコードの。あなたがうまくいけば、人間が読めるだろうかピッチ検出作品のためのルールを生成することができるだろう。この道ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top