模块 API

mod_wsstream 模块文档

mod_wsstream 是一个处理 websocket 以及语音合成(tts)的模块。

火山 TTS

火山引擎中包含 TTS 服务,其中在线语言合成 API 的文档地址为 https://www.volcengine.com/docs/6561/79821

mod_wsstream 模块中增加了 tts 引擎 volengine, volengine tts 引擎使用了火山 tts 的 websocket api。

调用示例:

这里以一个系统路由为例,先执行 app answer,然后调用 speak 执行 tts 引擎。

answer
speak volengine|defualt|火山引擎TTS,这是一个测试字符串。

配置文件

<configuration name="volcengine.conf" description="volcengine configuration">
	<tts>
		<param name="tts-url" value="wss://openspeech.bytedance.com/api/v1/tts/ws_binary"/>
		<param name="cluster" value="volcano_tts"/>
		<param name="appid" value=""/>
		<param name="token" value=""/>
		<param name="disable-cache" value="true"/>
		<param name="tts-file-ext" value="wav"/>
		<param name="token-expires" value="36000"/>  <!-- default value -->
		<param name="volume" value="50"/> <!-- [0, 100] -->
		<param name="speed-rate" value="0"/> <!-- [-500, 500] -->
		<param name="pich-rate" value="0"/> <!-- [-500, 500] -->
		<!-- force rate, comment out to use native session rate -->
		<!-- <param name="rate" value="24000"/> -->
		<!-- [0.2, 3] -->
		<!-- <param name="speed-ratio" value="1.0"/> -->
		<!-- [0.1, 3] -->
		<!-- <param name="volume-ratio" value="1.0"/> -->
		<!-- [0.1, 3] -->
		<!-- <param name="pich-ratio" value="1.0"/> -->
		<!-- <param name="emotion" value="happy"/> -->
		<!-- language, cn, ... -->
		<!-- <param name="language" value="cn"/> -->
		<!-- silence duration in ms -->
		<!-- <param name="silence_duration" value="125"/> -->
	</tts>
</configuration>
  • tts-url: 是火山 websocket 语音合成的地址。
  • cluster: 业务集群,如果使用火山内部的音色选择 volcano_tts, 如果使用复制音色需要设置成 volcano_mega,参考火山引擎文档
  • appid: 是火山引擎的 appid,如何获取参考 火山引擎文档
  • token: 是火山引擎的 token,同上。
  • disable-cache: 是否禁用缓存。
  • tts-file-ext: 语音合成缓存文件扩展名。
  • token-expires: token 过期时间。
  • volume: 音量。
  • speed-rate: 语速。
  • pich-rate: 音调。

参数说明

除了上述配置文件中的参数之外,还可以在调用 speak 命令传入文字的的同时携带临时参数。 该参数只会在当前这句话中生效。

例子:

speak volengine|default|{speed-ratio=1.5,silence-duration=125}测试语句。

这里的 speed-ratiosilence-duration 会覆盖配置文件中的参数。

所有的临时参数如下:

  • voice: string 音色。
  • silence-duration: int 这个语句最后的静音时长,单位是毫秒。
  • speed-ratio: float 语速,范围是 [0.2, 3],默认值 1,保留一位小数。
  • volume-ratio: float 音量,范围是 [0.1, 3],默认是 1,保留一位小数。
  • pich-ratio: float 音调,范围是 [0.1, 3]默认是 1,保留一位小数。
  • emotion: string 情感/风格,参考 火山引擎文档
  • language: string 语言类型,参考 火山引擎文档
  • cluster: string 集群名称,复制音色使用 volcano_mega, 内置音色使用 volcano_tts,参考火山引擎文档

minimax T2A Stream TTS

mod_wsstream 模块中增加了 tts 引擎 minimax(流式语音生成), minimax tts 流式语音生成使用的是 HTTP 协议。

官方文档

调用示例:

这里以一个系统路由为例,先执行 app answer,然后调用 speak 执行 tts 引擎。

answer
speak minimax|defualt|minimax TTS,这是一个测试字符串。

配置文件

<configuration name="minimax.conf" description="minimax configuration">
	<tts>
        <param name="tts-url" value="https://api.minimax.chat/v1/tts/stream"/>
        <param name="token" value="token"/>
        <param name="group-id" value=""/>
        <param name="model" value="speech-01"/>
        <param name="volume" value="1.0"/> <!-- [0, 10] -->
        <param name="pitch" value="0"/> <!-- [-12, 12] -->
        <param name="bitrate" value="32000"/> <!-- default 128000, option: 32000,64000,128000 -->
        <param name="audio-sample-rate" value="16000" /> <!-- default 32000, option: 16000, 24000, 32000 -->
        <param name="format" value="pcm" /> <!-- default mp3, option: mp3, pcm, flac-->
        <param name="speed" value="1.0" /> <!-- default 1.0, option: [0.5, 2.0] -->
        <param name= "curl-timeout" value="60" />
        <param name= "curl-connect-timeout" value="10" />
        <param name= "tts-file-ext" value="wav" />
        <param name= "voice-id" value="liepin_azhe2_test_1222" />
        <param name= "disable-cache" value="true" />
	</tts>
</configuration>
  • tts-url: 是火山 minimax 语音合成的地址。
  • token: 是 minimax token。
  • group-id: 用户所属的组。该值应拼接在调用API的url末尾。
  • model: 调用的模型版本,比如:speech-01。
  • volume: 生成声音的音量。可选,默认值为1.0,取值越大,音量越高。
  • pitch: 生成声音的语调。可选,默认值为0(0为原音色输出,取值需为整数)。
  • bitrate: 生成声音的比特率。可选,默认值为128000。
  • audio-sample-rate: 生成声音的采样率。可选,默认为32000。
  • format: 生成声音的音频格式。默认mp3,范围[mp3,pcm,flac]。
  • speed: 生成声音的语速。可选,默认值为1.0,取值越大,语速越快
  • voice-id: 请求的音色编号,具体值参考官方文档。
  • curl-connect-timeout: http 请求建立连接的超时时间,单位为秒。
  • curl-timeout: http 连接建立完成后,等待数据传输完成的最大时间,单位为秒。
  • disable-cache: 是否禁用缓存,默认为false,也就是默认缓存是开启的。
  • tts-file-ext: 语音合成缓存文件扩展名。

参数说明

除了上述配置文件中的参数之外,还可以在调用 speak 命令传入文字的同时携带临时参数。该参数只会在当前这句话中生效。

例子:

speak minimax|male-qn-qingse|{speed=1}测试语句。

所有的临时参数如下:

  • voice: string 音色。
  • group_id: string 组标识符。
  • model: string 模型名称。
  • volume: float 音量,范围是 [0, 10],默认值 1.0。
  • pitch: int8_t 音调,范围是 [-12, 12],默认值 0。
  • bitrate: uint32_t 比特率,支持 32000, 64000, 128000,默认值 128000。
  • audio_sample_rate: uint32_t 音频采样率,支持 16000, 24000, 32000,默认值 32000。
  • format: string 音频格式,支持 mp3, pcm, flac,默认值 pcm。
  • speed: float 语速,范围是 [0.5, 2.0],默认值 1.0。

minimax T2A v2 TTS

官方文档

与 T2A Stream 共用一个配置文件,section ttsv2

mod_wsstream 模块中增加了 tts 引擎 minimaxv2, minimaxv2 tts 流式语音生成使用的也是 HTTP API。

自定义音色使用本TTS

<configuration name="minimax.conf" description="minimax configuration">
  <ttsv2>
    <param name="tts-url" value="https://api.minimax.chat/v1/t2a_v2"/>
    <param name="token" value=""/>
    <param name="group-id" value=""/>
    <param name="model" value="speech-01-240228"/>
    <param name="volume" value="1.0"/> <!-- [0, 10] -->
    <param name="pitch" value="0"/> <!-- [-12, 12] -->
    <param name="bitrate" value="32000"/> <!-- default 128000, option:[32000,64000,128000] -->
    <param name="audio-sample-rate" value="8000" /> <!-- default 32000, option: [8000,16000,22050,24000,32000] -->
    <param name="format" value="pcm" /> <!-- default mp3, option: mp3, pcm, flac-->
    <param name="channel" value="1" /> <!-- default 1, option: 1, 2 -->
    <param name="speed" value="1.0" /> <!-- default 1.0, option: [0.5, 2.0] -->
    <param name= "voice-id" value="liepin_0627_number1" />
    <param name="stream" value="true" />
    <param name= "curl-timeout" value="60" />
    <param name= "curl-connect-timeout" value="10" />
  </ttsv2>
</configuration>

参数与 T2A stream 不同处:

新增参数:

  • channel: 音频通道数,默认为 1,可选 1 或 2, 一般不用修改
  • audio-sample-rate: 音频采样率:增加了8000 选项,请使用8000,因为与FreeSWITCH兼容,可以省去重采样的计算。
  • model: 模型本api支持以下模型, 具体参考官方文档模型列表部分
    • speech-01-turbo
    • speech-01-240228
    • speech-01-turbo-240228

缓存失败异常情况说明

  • HTTP 请求传输时长: 不论 minimax 还是 minimaxv2,都是基于 HTTP 协议的 TTS 引擎,如果请求的文本过长,HTTP 数据传输可能需要较长时间,所以建议配置 curl-timeout 值较大些,建议60,否则如果配置太短,可能会导致不能完整的接收合成的音频数据,这样最终会导致缓存数据失败。

  • 数据传输过长中出现异常情况:数据传输中出现异常情况也会导致缓存失败,异常情况可以通过日志捕获到,一般是 invalid chunk data format 这样的提示。

说明:如果 HTTP 下载的过程中发生 TTS 打断(break),或者通话挂机,不会影响 TTS 缓存的生成。如果是发生 通话挂机,客户发了 SIP BYE 后,FS 需要等 TTS 下载完成之后才会回 SIP 200 OK。(在此期间可能会不断的收到 SIP BYE,超过一定时间后 客户端会报错)。

AISTREAM

基于 WebSocket 的 AI 流媒体通信协议。本协议目前处于 Beta 版。

文档正在完善中,敬请期待。

VAD