13

簡単なオーディオトラックを再生するアプリを作成しており、トラックの再生中に近くにノイズがないかどうかを知らせてください。これは、iPhoneのスピーカーで曲が再生されている間にマイクからライブ録音を行うことによって行われます。音楽の再生の一部ではない音は、ノイズとして定義されます。

この機能を実装する最も簡単な方法は何でしょうか?

私はそれをオンラインでかなり広範囲に調査しましたが、この特定の問題の解決策を示すものを見つけることができませんでした。それは私が読んださまざまな技術の組み合わせかもしれませんが、最終的には解決策になります。

すでに実装
している曲の再生とオーディオの録音を同時に行います。

私が試したこと
注:すでに試したことを追加することをお勧めしますので、次の部分を追加します。しかし、これが問題を解決する正しい方法であると言っているわけではありません。それは私が試したものにすぎません。

私はaurioTouch2サンプルアプリケーションをハッキングしました。私が行ったのは、曲を1回再生し、高速フーリエ変換値を記録することでした(記録されるデータの量を低く抑えるためにかなり低いサンプルレートで)。次に、トラックが再度再生されたときに、基本的に、ライブ再生fftデータと記録されたfftデータを使用して作成された出力グラフ間の相関係数を(タイムステップごとに)計算します(したがって、 fftモードのアプリ)。
この「一種の」作品。過剰な音/ノイズが部屋にある場合、相関係数は明らかに低くなりますが、感度はそれほど高くなく、fftデータの記録時に使用された音量レベルにも依存します。結局、これは最善のアプローチではないかもしれないと私は考えています。

誰かがこれが可能だと思いますか?もしそうなら、最善のアプローチは何でしょうか?
さらに詳しい説明が必要かどうかお尋ねください。

4

2 に答える 2

1

環境内のノイズの量を知りたいだけで、元の信号と記録された信号の2つの信号がありますか?その後、ソリューションは完全に問題ありません。あなたは信号を同期させて、あなたに類似性を与えるいくつかの数を見つける必要があります。fftを回避し、元の信号を使用することもできます(適切なプレゼンテーションで)。

Autocorellationは、信号を同期するための優れた方法です。Autocorellation-indexは、類似性を与える数値です。

もちろん、音量が小さいと、ノイズは(音楽に比べて)大きくなり、影響が大きくなります。ボリュームを検出できるはずなので、いくつかの補正係数を追加できるはずです。しかし、これは「自然な」問題であるため、すべてのアルゴリズムにこの問題があると思います。

別の解決策は、記録された信号から元の信号を差し引くことです。そうすれば、両方の信号の差としてノイズを取得する必要があります。次に、ノイズの力もあります...

于 2012-10-01T11:21:28.843 に答える
1

結局、アプリではこれを行わないことにしました。最初に曲のキャリブレーションを行い、最も支配的な周波数のセットを収集し、周囲の部屋のノイズに対して同じことを行い、曲の再生中の決定プロセスでそれらの周波数を使用するデモを行いました。まだ多くの調整が必要だと感じましたが、問題なく動作しました。オーディオ関連のプログラミングに関する限られた知識でできる最高のことでした:)

于 2013-07-03T16:37:09.503 に答える