AOQ Client SDK は、カスタムオーディオ再生をサポートしています。オーディオフレームコールバックの仕組みにより、デコードされた PCM データがアプリケーション層に渡されるため、独自のオーディオレンダリングロジックを実装できます。
概要
デフォルトでは、AOQ Client SDK は受信したリモートオーディオデータをシステムスピーカーまたはイヤピースから再生します。シナリオによっては、SDK の内蔵オーディオ再生モジュールが要件を満たさない場合があります。カスタムオーディオ再生は、次のような場合に役立ちます。
- 受信したオーディオデータを、カスタムの再生デバイスまたはオーディオ処理パイプラインに出力する。
- 受信したオーディオデータを後処理する (AI 音声認識やオーディオエフェクトなど)。
- オーディオ再生デバイスの競合を回避する。
前提条件
createEngineを呼び出して、エンジンインスタンスが作成されていること。- サーバーへの接続が確立されていること (
onConnectionStatusChangeコールバックでAoqConnectionStatusConnectedが報告されていること)。
実装
1. 外部モードでのオーディオ再生開始
startAudioPlayer を呼び出す際に isExternal=true を設定して、SDK の内部オーディオレンダリングデバイスを無効化します。以降、オーディオの再生はアプリケーション層が担当します。
パラメーター | タイプ | デフォルト | 説明 |
|---|---|---|---|
isVoipMode | boolean | false | VoIP モード (ハードウェア AEC) を有効にするかどうか。モバイル端末で有効です。 |
isDefaultSpeaker | boolean | true | デフォルトでスピーカーを使用するかどうか。モバイル端末で有効です。 |
isExternal | boolean | false | 外部再生モードを使用するかどうか。true の場合、SDK は再生デバイスを開きません。 |
channel | int | 1 | チャンネル数 |
2. オーディオフレームコールバックリスナーの設定
setAudioFrameObserver を呼び出して、オーディオフレームデータのコールバックリスナーを登録します。onPlaybackAudioFrame コールバックメソッドを実装し、再生用の PCM データを受信します。
3. 再生データコールバックの有効化
enableAudioFrameObserver を呼び出して、再生側のオーディオフレームコールバックを有効化します。データソースとして AoqAudioSourcePlayback を指定します。
パラメーター | タイプ | デフォルト | 説明 |
|---|---|---|---|
sampleRate | int | 48000 | コールバックのオーディオサンプルレート (Hz) |
channels | int | 1 | コールバックのオーディオチャンネル数 |
mode | AoqAudioObserverMode | AoqAudioObserverModeReadOnly | 読み取り/書き込みモード |
4. カスタムオーディオレンダリングの実装
onPlaybackAudioFrame コールバックで PCM データを受信したら、アプリケーション層でレンダリングと再生を行います。一般的な方法は次のとおりです。
- Android AudioTrack:AudioTrack を使用して PCM データをシステムオーディオデバイスに書き込みます。
- AI 音声認識:PCM データを ASR エンジンに渡して音声認識を行います。
- オーディオエフェクト:再生前に PCM データにオーディオエフェクトを適用します。
- ファイルストレージ:受信したオーディオデータをローカルファイルに保存します。
onPlaybackAudioFrameコールバックは SDK の内部スレッドで実行されます。frame.dataPtrはコールバックの実行中のみ有効です。非同期でデータを使用する必要がある場合は、先にコピーしてください。AudioTrack.writeはブロッキング操作です。SDK は一定のレートでコールバックを呼び出すため、コールバック内で直接書き込んでも問題ありません。- エンジンの終了時や再生停止時に処理を停止できるよう、
mPlayRunningフラグを管理してください。