2

入力音にエフェクト(リバーブ、ディレイなど)を加えて再生するiPhone用のリアルタイムオーディオアプリがあります。だから私は古典的な増幅されたオーディオループの問題を抱えています。あなたはおそらくこれに精通しています。これは、マイクをラウドスピーカーの近くに置いた場合によく発生します (入力からの音が増幅されたり、消えたり、戻ったりするなど)。

これを修正する方法についてのアイデアを聞くことは素晴らしいことです。

(私はすでにしようとしました:

  1. フィードバックが大きくなるのを防ぐために、最大音量を制限します。
  2. フィルタを使用して、一部の周波数を制限します。
  3. 新しい入力信号から以前に出力された信号を差し引く(これが最善の方法だと思いますが、これは完璧ではありません。タイミングが良くても(そう思う)、この方法ではサウンドが台無しになりすぎます)

ありがとう。

4

3 に答える 3

5

あなたの3番と2番の組み合わせがおそらく最高です。アダプティブアコースティックエコーキャンセレーションを検索します。

nLMSを使用するAECは実装が非常に簡単ですが、CPUを少し消費します。エコーの長さ(ミリ秒)によっては、低いサンプルレートを使用すると機能する場合があります。

適応にFFTを使用する高速バージョンがあります。適応はそれほど速くありませんが、エコーテールが長くないモバイルアプリではおそらく問題ありません。

AECが機能する方法は、スピーカーとマイク間のエコーパスの音響モデルに収束し、そのモデルを使用してマイク入力から出力エコーを差し引くことです。それは何が起こっているかを知っており、それをモデルに通し、エコーがどうなるかについての推測を取得し、次にそのエコーを入力から削除します。時間が経つにつれて、モデルは良くなり、エコーは小さくなります。

于 2013-02-24T13:33:57.703 に答える
1

すでにご存知かもしれませんが、念のため、出力を正しいスピーカーにルーティングしていることを確認してください。「再生と録音」のオーディオ セッション カテゴリを設定するとドキュメントに記載されているように、デフォルトの出力は一番上のスピーカー (通話中に耳を傾けるスピーカー) です。下部に別のスピーカーがあり、マイクに非常に近いため、より多くのフィードバックが生成されます. 「再生と録音」カテゴリを設定した場合、通常は手動でオーバーライドして間違った (下の) スピーカーにルーティングする必要がありますが、念のため言及しておきます。

于 2013-03-07T10:13:16.663 に答える
0

この問題を解決しようとしている他の人を助けるために: AEC とハイパス、ローパス フィルターの組み合わせ。

http://speex.org、それは AEC 部分が仕事をします。ハイパスローパスフィルターは非常に簡単に実装できます。(LP、HP フィルターの実装については、Apple AccelerometerGraph の例を参照してください)

于 2013-03-09T14:24:33.277 に答える