8

私は OSX と iOS で VOIP アプリケーションを開発しており、オーディオ フローに AudioQueue を使用する予定です。知りたいことは、AudioQueue はデフォルトでアコースティック エコー キャンセレーションをサポートしているか、それともサポートを追加する必要があるかです。
実装する必要がある場合は、私は信じています。 Speex のようにいくつかのオープン ソース ライブラリを実装する必要があります

4

2 に答える 2

21

私の知る限り、オーディオ ユニットを使用してシステムのエコー キャンセレーションにアクセスする必要があります。kAudioUnitSubType_VoiceProcessingIO代わりに を 使用してそれを行いますkAudioUnitSubType_RemoteIO

レイテンシーを制御するために、とにかく Audio Units を使用したいでしょう。

レンダリング コールバック関数を使用して Audio Queue からデータを取得し、それを I/O ユニットに渡すことができます。発信の場合は、 を使用しますAudioUnitRender

于 2013-03-18T08:52:24.820 に答える
-1

Davidとこの投稿のおかげで、iOS のエコー キャンセレーションには次の変更が必要であることがわかりました。

desc.componentSubType = kAudioUnitSubType_VoiceProcessingIO

これにより、 Apple のドキュメントに従って、ハードウェア エコー抑制が有効になります。ただし、AudioStream の説明には特定のフラグを使用する必要があります。

audioFormat.mFormatFlags = kAudioFormatFlagsCanonical;
于 2015-04-26T14:17:53.907 に答える