終わり!自分自身に少し感動しました。
当社の製品にはエコーキャンセル機能が必要であり、考えられる技術的解決策が 3 つ特定されました。
1) MCU を使用してオーディオ信号のオーディオ出力とオーディオ入力を検出し、オプションの 2 つのチャネル切り替えの間のオーディオ出力とオーディオ入力の強度に応じて、サウンド信号の両側の強度を計算するアルゴリズムを作成します。半二重通話効果ですが、現在市場には全二重通話効果があり、半二重では製品の競争力が低下します
(2) CPU ベンダーのエコー キャンセル アルゴリズムを使用します。実際のテストのエコー除去は、すべての調整可能なパラメーターの調整とベンダーとの多くのラウンド ディスカッションによって十分にきれいではなく、期待される効果からはほど遠いものです。ベンダーからのフィードバックは、MIC をスピーカーから可能な限り分離するためにハウジングを改善することですが、ID 設計、音質、音量の要件によりハウジングを変更する余地はありません。
(3) webrtc や speex などのオープンソースのエコー キャンセル アルゴリズムをインターネットからダウンロードし、クロスコンパイル後に製品に移植します。
4) オーディオ アルゴリズムを専門とする会社からアルゴリズムを購入しますが、製品ごとに追加コストが必要となり、製品の競争力が大幅に低下します。
オプションを比較検討した後、オープンソース アルゴリズムを使用するソリューションについて徹底的に調査することにしました。
そこで、github、gitee、その他のサイトから C と matlab の両方で一連のエコー キャンセル コードをダウンロードしました。
2 つの音声をオクターブで合成し、近端のマイク キャプチャ音声と遠端の基準音声を含むダブルトーク シーンのセクションを生成します。
次に、オンラインでダウンロードしたエコーキャンセル用のコードを実行し、出力音声を分析して、その中から最適に機能するアルゴリズムを選択します。
結果から、webrtc オーディオ処理の AEC アルゴリズムは良好ではなく、エコー キャンセルはきれいではなく、ダブルトーク シーンでは明らかに言葉の飲み込みが見られます。 webrtc オーディオ処理の AEC3 アルゴリズムはクリーンですが、ダブルトークの相手の音を非常に抑制し、音が断続的で不自然です。
Speex にはわずかなエコーがあります。AEC アルゴリズムの Matlab 言語実装を見つけるのが最善です。エコー除去は非常にきれいです。ダブルスピーキングはわずかな言葉の飲み込み現象のみです。
次に、Visual Studio を使用して webrtc audioprocessing aec のオープン ソース コードをコンパイルおよびデバッグします。上記の matlab の aec アルゴリズムを参照してコードを変更し、オンライン デバッグを使用してブレークポイントを設定し、シングル ステップ実行およびその他の分析を行います。ステートメントごとに値が変更され、最終的に取得されるデータと matlab 言語の aec アルゴリズムの結果は同一です。 取得される最終データは、matlab の aec アルゴリズムの結果とまったく同じです。
今日、製品にコンパイルし、MIC と SPEAKER のゲインを適切な値に調整し、実際に通話してエコー キャンセルの効果をテストしました。結果は驚くほど良好です。
これにより、小さな目標を上回る売上を達成できる製品を設計することが期待されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3