オーディオフック
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は、以下のとおりです。