Android: com.bytedance.speechengine:speechengine_tob: 0.0.15.0
主要参考BiTtsActivity
创建语音对话 SDK 引擎实例前调用,完成网络环境等相关依赖配置。APP 生命周期内仅需执行一次。
初始化引擎对象并设置回调监听。
语音对话 SDK 通过发送指令接口 sendDirective 触发各种操作,需要注意不建议在 SDK 的回调线程中调用该接口。
startSessionPayload参数示例如下,包含了音色、音频生成参数等。
双向流式TTS支持在一个链接中多次调用StartSession和FinishSession,每调用一次表示开始合成服务和结束合成服务,但必须在收到SessionFinished回调后才能重新StartSession( StartEngine -> [FinishSession -> StartSession](可循环调用) -> StopEngine)
调用StartSession时data字段有如下2种设置方式:
- 传空字符串:表示使用SEDirectiveStartEngine时传入的 startSessionPayload参数来合成;
- 新传入json格式的sessionpayload参数:更新合成参数,按新参数来合成文本;
如果没有文本需要合成了,或者需要强制结束时可以调用FinishSession让服务端基于已收到的文本完成音频合成并返回。
注意:如果传输文本最后不包含标点符号,那么服务端会等待后续文本到来才会触发合成。超时4秒没有收到后续文本也会触发合成。如果期望服务端立马开始合成则需要调用FinishSession。
文本内容需要拼装车json格式的字符串传入。如果有其他参数可以透传给服务端。
可以调用多次DIRECTIVE_EVENT_TASK_REQUEST向服务端发送待合成的文本内容。服务端会切句逐个返回。如果需要立即返回音频内容,可以在发送DIRECTIVE_EVENT_TASK_REQUEST前后调用StartSession和FinishSession确保音频马上返回。
如果要取消当前合成服务,期望服务端不再返回音频。则调用CancleSession
可以在播放音频时发送指令DIRECTIVE_PAUSE_PLAYER,暂停tts音频播放。
可以在播放音频时发送指令DIRECTIVE_RESUME_PLAYER,恢复tts音频播放
当不再需要语音对话后,建议对引擎实例进行销毁,释放内存资源。(注:务必先调用StopEngine再destroyEngine)