2

私は Windows Phone 8 用の VoIP アプリケーションに取り組んでおり、スピーカーフォンの使用時に生成されるエコーをキャンセルしたいと考えています。Speex が提供する AEC モジュールをアプリケーションに統合しようとしましたが、役に立ちませんでした。私のアプリケーションは正常に動作しますが、エコーは持続します。私のコードは MS Chatterbox VoIP アプリケーションに基づいており、キャプチャとレンダリングに WASAPI を使用しています。これは関連するセクションの形式です (既に存在し機能しているものと新しいものを示すようにしました):

初期化:

// I've tried tail lengths between 100-500ms (800-4000 samples @ 8KHz)
echoState = speex_echo_state_init (80, 800) 
speex_echo_ctl(echoState, SPEEX_ECHO_SET_SAMPLING_RATE, 8000);

レンダリング (10 ミリ秒ごとに実行):

Read 10ms (80 samples) data from network (8KHz, 16 bit, mono)

NEW - speex_echo_playback(echoState, networkData)

Upsample data to 48KHz
Render data

キャプチャ (10 ミリ秒ごとに実行):

Capture 10ms of data (48KHz, 16 bit, mono)
Downsample to 8KHz

NEW - speex_echo_capture(echoState, downsampledData, echoCancelledData)

Send echoCancelledData to network

Speex のドキュメントを読み、このサイトのいくつかの投稿 (Wp8 の質問に対する Speex の多くはありませんが、Android に対するいくつかの Speex) を見た後、私はこれが彼らの適切な実装である、またはそれに近いという印象を受けました。 API。では、なぜ機能しないのでしょうか。

前もって感謝します

4

0 に答える 0