オーディオフック
PlanetKitは、オーディオフック(audio hooking)という機能を提供します。これは、Planet Cloudが相手にオーディオを転送する前にオーディオデータを取得(フック)する機能です。ローカルユーザーの音声を変えたり、オーディオデータを音声認識に活用したりする用途で使用できます。
| 対応する通話タイプ | SDKの最低バージョン |
|---|---|
| 1対1通話 | 5.5 |
概要
オーディオフック機能を使用するためのメソッドは、PlanetKitCallクラスで提供しています。
オーディオフックの有効化
オーディオフックを有効にするには、PlanetKitCallHookedAudioDelegateの実装を引数としてenableHookMyAudio()を呼び出します。
オーディオフックが有効になると、didHookイベントを通じてPlanetKitHookedAudioオブジェクトを受け取ることができます。
オーディオデータの修正(オプション)
オーディオデータを修正するには、PlanetKitHookedAudioのdataを他のDataオブジェクトに設定してください。
PlanetKitHookedAudioクラスでは、未加工(raw)オーディオデータ(data)のみ修正できます。channel、sampleCount、sampleRate、sampleType、seqのようなメタデータは修正できません。dataを修正する際は、必ずメタデータが示す形式を維持する必要があります。
オーディオデータの復元
フックしたオーディオデータを元に戻すには、PlanetKitHookedAudioオブジェクトを引数としてputHookedMyAudioBack()を呼び出します。
オーディオフックを有効にした後は、オーディオデータの修正有無にかかわらず、フックしたオーディオデータを必ず元に戻す必要があります。そうしないと、相手にオーディオが転送されません。
オーディオフックの無効化
オーディオフックを無効にするには、disableHookMyAudio()を呼び出します。
サンプルコード
以下のサンプルコードは、音声を変えるためにオーディオフック機能を使用する方法を示しています。
// Get instance of PlanetKitCall
var call: PlanetKitCall?
// Implement audio modifier with PlanetKitCallHookedAudioDelegate
class HookedAudioModifier: PlanetKitCallHookedAudioDelegate {
func didHook(_ call: PlanetKitCall, audio: PlanetKitHookedAudio) {
// process `audio.data` as necessary
if !call.putHookedMyAudioBack(audio: audio) {
NSLog("putHookedMyAudioBack returned false")
}
}
}
// HookedAudioModifier object
let modifier = HookedAudioModifier()
// Method to enable audio hook
func enableAudioHook(call: PlanetKitCall, modifier: HookedAudioModifier) {
call.enableHookMyAudio(delegate: modifier) { success in
if success {
NSLog("Audio hook enabled successfully")
} else {
NSLog("Failed to enable audio hook")
}
}
}
// Method to disable the audio hook
func disableAudioHook(call: PlanetKitCall) {
call.disableHookMyAudio() { success in
if success {
NSLog("Audio hook disabled successfully")
} else {
NSLog("Failed to disable audio hook")
}
}
}
関連API
オーディオフックに関連するAPIは、以下のとおりです。