web-dev-qa-db-ja.com

デフォルトのiPhoneヘッドフォンによるアクティブノイズキャンセリング

デフォルトのiPhoneヘッドフォンを使用してアクティブノイズキャンセリングを実装するアプリを作成したいと思います。つまり、iPhoneのヘッドフォンマイクを使用して外部オーディオを受信し、180度の位相シフトを行います。最後に、デフォルトのヘッドホンスピーカーで反転音を再生して外部音をキャンセルします(アクティブノイズキャンセリング)。

参照: http://electronics.howstuffworks.com/gadgets/audio-music/noise-canceling-headphone.htm

これはiPhoneアプリで実現できますか?

13
Ashok

音が343m/sで伝わる場合、マイクとスピーカーの間の距離が0.5メートルであると仮定すると、処理時間は約1.5ミリ秒になります。不可能ではありませんが、簡単なことでもありません。特に、さまざまなコンポーネントが実際に再生を開始し、録音がアプリに到達するまでにかかる時間を考慮すると、そうです。これが、アクティブノイズキャンセリングヘッドホンのほとんどが専用のハードウェアを必要とする理由でもあると思います。

そうは言っても、絶対にやるべきだと思います。私もこれにとても興味があります。入力に対してフーリエ変換を実行してから、前述のように180度位相シフトし、それを時間領域に変換して、最後にユーザーに再生する必要があると思いますか?

8
lericson

私が見ている問題は、正しいノイズキャンセリングを行うために1つのコンポーネントが欠落していることです。完全な出力を検知し、ノイズキャンセリングシステムのループを閉じるには、ヘッドフォン出力にマイクが必要です。

よろしく

1
Giuseppe

デフォルトのiPhoneヘッドフォンを使用してノイズキャンセリングプロジェクトを作成できますが、iPhoneアプリでは不可能な可能性があります。このタイプのアプリケーションはリアルタイムアプリケーションと見なされるため、カーネルドライバーでは可能ですが、ユーザーアプリケーションでは不可能です。つまり、低レベルで実装する必要があります。 @lericsonが言ったように、シグナルを処理するのに必要なのはほんのわずかですms。マイクとイヤホンの距離が短いほど、処理時間が短くなります(そしてノイズキャンセリングの結果が向上する可能性があります)。

比較的安価なiPhoneヘッドフォンを入出力として使用する同様のプロジェクトがあります。 VHDLコードを使用してFPGAボードにノイズキャンセリングを実装しました(FPGA回路が高速で、処理時間がより予測可能/測定可能です)。 180度の位相シフトを行う必要があるだけでなく、マイクとイヤホンの距離、つまり信号がマイクからイヤホンに移動する時間についても考慮する必要があります。これらの変数は位相シフトも作成するため、計算に含める必要があります。

0
Jason Liu