オーディオレシーバー
オーディオレシーバー機能を利用すると、実際のオーディオストリームに影響を与えずにオーディオデータを取得できます。アプリケーションでは、この機能を利用してオーディオデータのコピーを受け取り、さまざまな用途に使用できます。
| 対応する通話タイプ | SDKの最低バージョン |
|---|---|
| 1対1通話、グループ通話(カンファレンス) | PlanetKit 7.0 |
Note
オーディオレシーバーを通じて取得したオーディオデータは、VQE制御が適用される前のオーディオストリームです。
活用事例
オーディオレシーバーの主な活用例は次のとおりです。
- オーディオ分析と転写(音声→テキスト変換)
- 音声アクティビティ検出(VAD)
- オーディオ品質のモニタリング
- 通話分析と指標の収集
- リアルタイムのオーディオ可視化とレベルメータリング
- 通話オーディオをファイルとして録音
実装段階
オーディオレシーバー機能を実装するには、次の手順に従います。
ローカルユーザー向けオーディオレシーバー
ローカルユーザー向けオーディオレシーバーの実装
ローカルユーザーのオーディオデータを受信するために、PlanetKitAudioMicCaptureDelegateに準拠するクラスを作成します。
import PlanetKit
class MicrophoneAudioReceiver: NSObject, PlanetKitAudioMicCaptureDelegate {
func didCapture(frameCnt: UInt32,
channels: UInt32,
sampleRate: UInt32,
sampleType: PlanetKitAudioSampleType,
timestamp: AudioTimeStamp,
outData: UnsafeMutableRawPointer!,
outDataLen: UInt32) {
// Audio data parameters:
// - frameCnt: Number of audio frames in this callback
// - channels: Number of audio channels
// - sampleRate: Sample rate
// - sampleType: Sample type
// - timestamp: Audio timestamp structure
// - outData: Pointer to audio data
// - outDataLen: Size of audio data in bytes
// Use the audio data for your use case
// Note: Audio data pointer is only valid during this callback
// Copy the data if you need to process it asynchronously
}
}
オーディオレシーバーの設定
ローカルユーザーのオーディオデータの受信を開始するには、オーディオセッションを通じてレシーバーを登録します。
let audioSession = PlanetKitAudioManager.shared.session
let micReceiver = MicrophoneAudioReceiver()
audioSession.addMicReceiver(micReceiver)
オーディオレシーバーの解除
オーディオデータの受信を中止するには、レシーバーの登録を解除します。
audioSession.removeMicReceiver(micReceiver)
ピア向けオーディオレシーバー
ピア向けオーディオレシーバーの実装
ピアのオーディオデータを受信するために、PlanetKitAudioSpkPlayDelegateに準拠するクラスを作成します。
import PlanetKit
class SpeakerAudioReceiver: NSObject, PlanetKitAudioSpkPlayDelegate {
func willPlay(frameCnt: UInt32,
channels: UInt32,
sampleRate: UInt32,
sampleType: PlanetKitAudioSampleType,
timestamp: AudioTimeStamp,
playBuf: UnsafeMutableRawPointer!,
playBufSize: UInt32) -> Int32 {
// Audio data parameters:
// - frameCnt: Number of audio frames in this callback
// - channels: Number of audio channels
// - sampleRate: Sample rate
// - sampleType: Sample type
// - timestamp: Audio timestamp structure
// - playBuf: Pointer to audio data to be played
// - playBufSize: Size of audio data in bytes
// Use the audio data for your use case
// Note: Audio data pointer is only valid during this callback
// Copy the data if you need to process it asynchronously
// Return the number of bytes consumed
// Typically, return the full buffer size
return Int32(playBufSize)
}
}
オーディオレシーバーの設定
オーディオデータの受信を開始するには、オーディオセッションを通じてレシーバーを登録します。
let audioSession = PlanetKitAudioManager.shared.session
let speakerReceiver = SpeakerAudioReceiver()
audioSession.addSpeakerReceiver(speakerReceiver)
オーディオレシーバーの解除
オーディオデータの受信を中止するには、レシーバーの登録を解除します。
audioSession.removeSpeakerReceiver(speakerReceiver)
関連API
オーディオレシーバー機能に関連するAPIは以下のとおりです。