問題タブ [aec]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - webrtc でのアコースティック エコー キャンセレーション (AEC)
ローカル WiFi で動作するビデオ チャット アプリに取り組んでいます。デバイスのスピーカーを使用しているため、エコーの問題に直面しています。私の質問は、エコーをキャンセルする方法です。これは、オーディオ トラックのコードです。
したがって、音質を改善するためにここで何ができるか、ガイドラインを高く評価します。
opus-codec ライブラリについて聞いたことがありますが、それに関するヘルプは見つかりませんでした。それはフィードバックです???
c++ - WebRTC オーディオ処理モジュール (APM) と再生デバイスのエコー遅延の計算
私はオーディオ処理に非常に慣れていません。オーディオを片方向に録音およびストリーミングし、もう一方の端では録音しないプログラムを作成しました。基本的に、ある場所で記録されたものは何でも別の場所に送信します。ただし、このプログラムが録音ソースと同じ場所にオーディオを出力する場合も多くあります。これにより、オーディオの遅延 (多くの要因に依存する) により、顕著な「エコー」が発生します。
他に何かあるかどうかわからないので、WebRTC のオーディオ処理モジュールをゲイン コントロールとアコースティック エコー キャンセレーションに使用しようとしています。ゲイン コントロールはうまく機能しているように見えますが、AEC はあまりうまく機能していません。正しいストリーム遅延を設定していないためか、これが AEC の目的ではない可能性があるためだと思います。
私が使用している現在のコードは、少なくとも最初に発生したエコーを取り除くために、ファイルから記録したものを読み取ります。ストリーム遅延を 0 に設定すると、現在のオーディオが完全にキャンセルされることが想像できます。さまざまな値を試してみましたが、あまり役に立ちませんでした。
私の質問は、これが十分に具体的であることを願っています。このモデルで何が間違っているのでしょうか?
次のインクルードとライブラリを使用: http://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing/
android - Android の AEC とノイズ サプレッサーが一部のデバイスで機能しない
VoIP 機能を備えた Android Unity アプリの開発中に、一部のデバイス (具体的には Galaxy S6) でマイクがスピーカーから出力された音を拾い、多くの静電気、歪み、エコーが発生することを発見しました。このため、私は Android の AEC および NS 機能の一部を活用するためのネイティブ ソリューションに取り組み始めました。
Note 4 などの一部のデバイスで完全に動作する次のテストベッドを作成しました。Galaxy S6 で同じアプリを実行すると、ARC と NS がうまく適用されていないか、まったく適用されていないように見えます。
AudioRecord に VOICE_COMMUNICATION を使用する、MIC を使用して NoiseSuppressor と AcousticEchoCanceller を手動で作成する、NuPlayer/AwesomePlayer を無効化/有効化するなど、多くのことを試しました。デバイスは、AEC がサポートされ、有効になっていることを示していますが、実際には起こっていないようです。ヘッドフォンを使用するか、スピーカーフォンの代わりにハンドセットを使用すると、問題は完全に解消されます (マイクがスピーカーの音を拾うことができません)。ここで何か巨大なものを見落としているのでしょうか、それともバグが報告される可能性はありますか?
AEC と NS が他のデバイスで完全に機能していなくても、疑いはありません。
android - VoIP アプリを使用して通話するときに聞こえるこの高音ノイズは何ですか?
VoIP アプリで作業しているとき、アコースティック エコー キャンセレーションに苦労しています。遠端、近端、出力の音をダンプしました。出力は良好で、エコーは含まれていません。しかし、Androidスマートフォンを呼び出すと、スピーカーの音量を上げるとすぐに、私を夢中にさせるこの高音が出ます。
この音の正体と回避/除去方法を教えてください。
android - 避けられないエコーを止める最も効率的な方法
マイクとスピーカーを備えたものとAndroidフォンの間でUDPを介して音声をストリーミングするモジュラーシステムを作成しました。マイクとスピーカーが互いにそれほど離れていない場合、電話で録音されたものはすべてスピーカーで再生され、同時に録音されて電話に送り返されるため、避けられないエコーが発生します。
これまでのところ問題は、再生時にマイクが録音していることです。たとえば、重要な再生中に録音を停止するコードが送信された場合、問題は解決されます。これは、プッシュツートーク ボタン (通話タイプの状況にはあまり適していません)、または最大振幅を感知して何か重要なことを言っているのか、それともただのノイズなのかを判断するアルゴリズムによって実現されます。後者の方が使いやすいですが、ノイズの多い環境では問題が発生しやすくなります。
長い講義で申し訳ありませんが、この問題を解決するためのより効率的で確実な方法があるかどうかを知りたいです。
PSハードウェア側にエコーをデジタルで削除するのに十分な処理能力がなく、方法もわかりません。ある種のアナログフィルターでもそれを行うことができると確信していますが、それを行う方法もわかりません。
編集: mattmのおかげで、AEC のようなものが必要であることがわかりましたが、最も効率的でも実用的でもないかもしれません。
WIFI-UART モジュール (HLK-RM04) を使用していますが、大きな問題があります。モジュールが 8 ビット オーディオ サンプルを IP データグラムに変換しているときに、非常に大きな遅延が発生します。何らかの理由で、Android から送信されたデータグラムを解凍するときにこの遅延は存在しません => Android からサンプルを受信するには ~50ms かかりますが、マイクからサンプルを受信するには ~650ms かかります。私は 7200 のサンプリング レートを使用しているため、AEC アルゴリズムは、「リアルタイム」を維持するために少なくとも 4680 サンプル/秒のデータ セットで動作する必要があります。
java - Android AcousticEchoCanceler はほとんどのデバイスで動作しないようです
スピーカーからの音をキャンセルするためにマイクを必要とするアプリケーションを構築しています。まったく同じ問題を抱えている他の人が長期間にわたって応答されなかったため、この問題はほとんどオンラインの陰謀のようです.
Android のネイティブ ハードウェア アクセラレーション AcousticEchoCanceler は、ほとんどのデバイスで動作しないようです。Nexus 5 や Moto X など、多くのデバイスでテストが行われ、動作しているように見えたものもありましたが、テストしたほとんどすべての Samsung デバイスはバックグラウンド サウンドを除去できませんでした。注: テストしたすべての電話は、AcousticEchoCanceler.isAvailable()
ただし、Skype や WhatsApp などのアプリケーションは、アプリのコンテキスト外の音をキャンセルするように見えるため、解決策が必要です。つまり、通話がスピーカーで行われ、マイクが受信したフィードバックをキャンセルします。
この単純化された録音アプリは、サウンドをファイルに録音し、後で再生をクリックすると再生されます。
MainActivity.java
activity_main.xml
AndroidManfist.xml のアクセス許可
デバイスが動作するかどうかを確認するには、バックグラウンドで何かを再生し、クリックStart Recording
して小さなセクターを録音し、Stop Recording
この時点でクリックPlay Back
して、バックグラウンド サウンドが聞こえるかどうかを確認します。バックグラウンド サウンドが聞こえる場合は、AEC が機能していません。しかし、なぜこの不一致が発生するのか、またはエコー キャンセレーションをどのように達成するのですか (アプリ コンテキスト内のノイズ キャンセレーションのために、アプリ内で既に WebRTC を使用しています)。
どんな助けでも大歓迎です!
android - Android カメラ エラー: aec_calculate_sensitivity ビニングが 1 未満です
カメラ (前面と背面) を使用する Unity で Android アプリを開発しています。アプリが起動すると、logcat で 1 秒間に約 20 回、このエラーがスパムになります。アプリを再度閉じると停止します。に関する情報を見つけようとしましaec_calculate_sensitivity
たが、残念ながら結果はありませんでした。それは私が自分で定義するものではありません。カメラを使用する他のアプリケーションでもエラーは表示されないようです。この原因をどこから探し始めるか知っている人はいますか?
Unity とTastyBitsの CameraCaptureKitを使用しています
エラーログ:
E/mm-camera-CORE(353): aec_calculate_sensitivity ビニングが 1 未満です
誰がこれを引き起こす可能性があるか考えていますか?
android - 48 kHz に対応するアコースティック エコー キャンセレーション (AEC) ライブラリはありますか?
48 kHz のサンプリング レートで動作する VoIP アプリケーションを開発しています。内部で 48 kHz を使用する Opus をコーデックとして使用し、現在のほとんどの Android ハードウェアは 48 kHz でネイティブに動作するため、AEC は私が今欠けているパズルの唯一のピースです。私はすでに WebRTC の実装を見つけましたが、それを機能させる方法がわかりません。メモリがランダムに破損し、遅かれ早かれ全体がクラッシュするようです。クラッシュしていないときは、フレームの半分ほど静かであるかのように、音はやや分厚いです。20 ミリ秒のフレームを処理するコードは次のとおりです。
実際のエコー キャンセレーションをコメント アウトし、float 変換と帯域分割を行ったり来たりすると、メモリが破損せず、変な音にならず、無期限に実行されます。(ファーエンド/スピーカー信号をAECに渡します。質問に含めることでコードを混乱させたくありませんでした)
また、Android の組み込み AEC も試しました。機能している間は、キャプチャした信号を 16 kHz からアップサンプリングします。