本文にスキップする
Version: 7.0

オーディオレシーバー

オーディオレシーバー機能を利用すると、実際のオーディオストリームに影響を与えずにオーディオデータを取得できます。アプリケーションでは、この機能を利用してオーディオデータのコピーを受け取り、さまざまな用途に使用できます。

対応する通話タイプ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は以下のとおりです。