tts简介
tts 全称Text-to-Speech,是一种文字转语音的技术,是实现ai与人类交互必不可少的技术。
常用于智能客服、数字人、机器人场景。
tts的api调用
tts的api一般基于WebSocket(以下简称WS)连接实现。
整体流程为:建立连接->配置会话->传输文本->合成控制->结束会话
建立连接
核心参数:
- model:模型名称
- url:连接地址
配置会话
核心参数(设置当前连接的一些配置):
- voice:设置音色(必填项)
- languageType:设置语言(默认根据传入文本自动选择)
- mode:设置交互模式(分为 server_commit 与 commit 两种,下文细说)
- format:设置格式(默认为
pcm,可选:wav、mp3、opus,推荐在模型支持的情况下选择opus)
其他还有很多参数,在这就不一一细说了,我认为对于搭建一个智能客服助手这类商业场景了解这四个参数已经足够,剩余的参数更倾向于如何定制一个私人的情感陪伴类产品。
传输文本
默认流式传输文本,这没什么可讲的了。
合成控制
这里就涉及到我们的交互模式了
server_commit(推荐,也是默认值)
由大模型厂商的服务端自动决定合成时机,兼顾延迟和质量。
commit
由我们的服务端决定合成时机,优势是极低延迟,缺点是要自己管理句子分块。
所以我推荐采取默认值 server_commit。
结束会话
finish(推荐)
结束当前轮次会话,而不断开WS连接,方便后续进行 WS 连接的复用。
close
断开 WS 连接,后续使用 tts 服务需要重新建立 WS 连接,会导致 TCP 三次握手性能损耗。
为什么 TTS 要采用 WS 连接的一些思考
Chat模型看首token到达时间,用SSE实现流式输出足够了。
TTS 的终极目标是实时语音对话,如果像 Chat 一样,得把所有话都想好再说出口,相当于人类的写稿子,再照完整稿子念。那首音频的延迟过于长久了,就好像你和别人对话,对方思考一分多钟才说出口,存在长时间冷场。