模块 API

mod_tencent

mod_tencent 是一个ASR/TTS模块,它通过HTTPS与腾讯云端进行语音合成(TTS)交互,通过WebSocket与腾讯云端进行语音识别(ASR)交互。

ASR

mod_tencent 中包含 ASR 服务,提供 asr 引擎 tencenttencent_asrtencent 使用 WebSocket 与腾讯语音识别接口交互,腾讯接口文档参见实时语音识别接口tencent_asr 使用 HTTP REST 与腾讯语音一句话识别接口交互,腾讯接口文档参见一句话识别接口

tencent 引擎参数说明

腾讯 tencent asr 引擎参数分为配置文件参数与临时参数。配置文件参数可在界面或xml文件内进行修改,重载模块生效。临时参数一般跟随命令出现,该参数只会在当前这句话中生效。临时参数与配置文件参数部分参数存在重叠,当两者同名参数同时出现时,临时参数优先级高于配置文件参数。

配置文件参数说明

	<asr-ws>
		<param name="asr-url" value="wss://asr.cloud.tencent.com/asr/v2"/>
		<param name="app-id" value=""/>
		<param name="secret-id" value=""/>
		<param name="secret-key" value=""/>
		<param name="model-type" value="8k_zh_large"/>
		<param name="need-vad" value="1"/>
		<param name="filter-empty-result" value="0"/>
		<param name="threshold" value="400"/>
		<param name="vad-mode" value="-2"/>
		<param name="start-input-timers" value="true"/>
		<param name="no-input-timeout" value="5000"/>
		<param name="speech-timeout" value="5000"/>
		<param name="confidence-threshold" value="400"/>
		<param name="silence-ms" value="500"/>
		<!--<param name="voice-ms" value="500"/>-->
		<param name="segment-recording-prefix" value=""/>
		<param name="segment-recording-ext" value=""/>
		<param name="disable-engine-data" value=""/>
		<param name="speech-noise-threshold" value="0"/> <!-- [-1, 1] -->
		<param name="hotword-list" value=""/>
		<param name="hotword-id" value=""/>
		<param name="customization-id" value=""/>
		<param name="convert-num-mode" value=""/>
		<param name="filter-dirty" value="2"/>
		<param name="filter-modal" value="1"/>
		<param name="filter-punc" value="0"/>
		<param name="pcm-segment-recording-prefix" value=""/>
		<!-- <param name="buffer-keep-ms" value="500"/> -->
	</asr-ws>
  • asr-url: 腾讯asr语音识别的地址。
  • app-id: 腾讯项目ID,获取方式参见API 密钥管理页面
  • secret-id: 秘钥ID,详情参见API 密钥管理页面
  • secret-key: 秘钥,详情参见API 密钥管理页面
  • model-type:语言引擎模型类型,详情参考实时语音识别接口中的engine_model_type
  • need-vad:是否开启腾讯asr vad功能,默认值为1,即开启vad功能。
  • filter-empty-result:是否回调识别空结果,0:回调空结果,1:不回调空结果,默认值为0。
  • threshold:vad检测的噪音阈值,默认值为400。
  • vad-mode:vad模式,详见VAD
  • start-input-timers:开启收集语音计时,默认false。
  • no-input-timeout:无输入(未检测到通话)超时时间,单位毫秒。默认值5000。
  • speech-timeout:语音超时时间,单位毫秒。默认值为5000,最小值为2000。
  • confidence-threshold:静音阈值,默认值400。
  • silence-ms:语音断句检测阈值,单位毫秒。默认值1000。
  • voice-ms:在指定时间内,如果连续检测到说话声音大于threshold。则认为说话人开始说话,单位毫秒,默认值为240。
  • segment-recording-prefix:分段录音路径,若为空则不开启分段录音,默认值为空。
  • segment-recording-ext:分段录音文件后缀,缺省为 wav
  • disable-engine-data:是否在asr识别结果内添加engine_data param,默认为false。
  • speech-noise-threshold: 噪音参数阈值,默认为0,取值范围:[-1,1]。
  • hotword-list:临时热词表,默认不携带。详情参考实时语音识别接口中的hotword_list
  • hotword-id:热词表 id,默认不携带。详情参考实时语音识别接口中的hotword_id
  • customization-id:自学习模型 id,默认不携带。详情参考实时语音识别接口中的customization_id
  • convert-num-mode:是否进行阿拉伯数字智能转换,0:不转换,直接输出中文数字,1:根据场景智能转换为阿拉伯数字,3: 打开数学相关数字转换。默认值为1。
  • filter-dirty:是否过滤脏词,0:不过滤脏词;1:过滤脏词;2:将脏词替换为*,默认为0。
  • filter-modal:是否过滤语气词,0:不过滤语气词;1:部分过滤;2:严格过滤,默认为0。
  • filter-punc:是否过滤句末的句号,0:不过滤句末的句号;1:过滤句末的句号,默认为0。
  • pcm-segment-recording-prefix:分段PCM原始识别语音数据录音路径,若为空则不开启分段录音,默认值为空。
  • buffer-keep-mstts 非打断模式下,在 tts 播放结束前多少毫秒开始语音识别,防止用户在 tts播放结束前抢先说一些字,没有被识别到,如果不使用 buffer-keep-ms,可能会造成语音识别语义的误差,比如将不需要识别成需要。单位为毫秒,缺省值为 500,最大值为100000,也就是最小为500ms,最大为100s。

临时参数说明

例子:

play_and_detect_speech /root/10s.wav detect:tencent {start-input-timers=true,no-input-timeout=5000,speech-timeout=5000,asr-result-fire-session-event=true,param-done=true}default

这里的 start-input-timersno-input-timeoutspeech-timeout会覆盖配置文件中的参数,而asr-result-fire-session-event为临时参数所特有的。

所有支持的临时参数如下:

  • param-done:作为最后一个参数传入,表上所有参数传入完毕。
  • no-input-timeout:无输入(未检测到通话)超时时间,单位毫秒。默认值5000。
  • speech-timeout:语音超时时间,单位毫秒。默认值为5000,最小值为2000。
  • start-input-timers:开启收集语音计时,默认false。
  • confidence-threshold:静音阈值,默认值400。
  • silence-ms:静音检测时间,单位毫秒。默认值500,最小值20。
  • vad-mode:vad模式,详见VAD
  • add-punc:是否添加标点符号,默认值为false。
  • auto-resume:语音识别完成后是否重置asr,默认值为false。
  • asr-result-fire-switch-event:语音识别完成后是否发送DETECTED_SPEECH事件,默认值为false。
  • asr-result-fire-session-event:是否将识别结果放入session event queue内,默认值为false。
  • app-uuid:执行本次asr命令时的标识uuid,最终会放入DETECTED_SPEECH事件内,作为回调辨别依据。
  • segment-recording-prefix:分段录音路径,若为空则不开启分段录音,默认值为空。
  • segment-recording-ext:分段录音文件后缀,缺省为 wav
  • disable-engine-data:是否在asr识别结果内添加engine_data param,默认为false。
  • speech-noise-threshold: 噪音参数阈值,默认为0,取值范围:[-1,1]。
  • model-type:语言引擎模型类型,详情参考实时语音识别接口中的engine_model_type
  • need-vad:是否开启腾讯asr vad功能,默认值为1,即开启vad功能。
  • filter-empty-result:是否回调识别空结果,0:回调空结果,1:不回调空结果,默认值为0。
  • filter-dirty:是否过滤脏词,0:不过滤脏词;1:过滤脏词;2:将脏词替换为*,默认为0。
  • filter-modal:是否过滤语气词,0:不过滤语气词;1:部分过滤;2:严格过滤,默认为0。
  • filter-punc:是否过滤句末的句号,0:不过滤句末的句号;1:过滤句末的句号,默认为0。
  • hotword-list:临时热词表,默认不携带。详情参考实时语音识别接口中的hotword_list
  • customization-id:自学习模型 id,默认不携带。详情参考实时语音识别接口中的customization_id
  • convert-num-mode:是否进行阿拉伯数字智能转换,0:不转换,直接输出中文数字,1:根据场景智能转换为阿拉伯数字,3: 打开数学相关数字转换。默认值为1。
  • pcm-segment-recording-prefix:分段PCM原始识别语音数据录音路径,若为空则不开启分段录音,默认值为空,文件名为引擎识别返回的message_id。
  • buffer-keep-mstts 非打断模式下,在 tts 播放结束前多少毫秒开始语音识别,防止用户在 tts播放结束前抢先说一些字,没有被识别到,如果不使用 buffer-keep-ms,可能会造成语音识别语义的误差,比如将不需要识别成需要。单位为毫秒,缺省值为 500,最大值为100000,也就是最小为500ms,最大为100s。

调用示例

以一个系统路由为例,先执行 app answer,然后调用 play_and_detect_speech 执行 asr 引擎。

answer
play_and_detect_speech /root/10s.wav detect:tencent {start-input-timers=true,no-input-timeout=5000,speech-timeout=5000}default

上述命令中的/root/10s.wav为容器内已存在的音频文件,请根据实际情况更改。

若您使用XCC进行语音合成,请参考XCC DETECT,同时将示例中的asr_engine更换为tencent

tencent_asr 引擎参数说明

腾讯 tencent_asr 引擎参数分为配置文件参数与临时参数。配置文件参数可在界面或xml文件内进行修改,重载模块生效。临时参数一般跟随命令出现,该参数只会在当前这句话中生效。临时参数与配置文件参数部分参数存在重叠,当两者同名参数同时出现时,临时参数优先级高于配置文件参数。

配置文件参数说明

	<asr-rest>
		<param name="asr-url" value="https://asr.tencentcloudapi.com"/>
		<param name="secret-id" value=""/>
		<param name="secret-key" value=""/>
		<param name="threshold" value="400"/>
		<param name="vad-mode" value="-2"/>
		<param name="start-input-timers" value="true"/>
		<param name="no-input-timeout" value="5000"/>
		<param name="speech-timeout" value="5000"/>
		<param name="confidence-threshold" value="400"/>
		<param name="silence-ms" value="500"/>
		<param name="eng-service-type" value="16k_zh_dialect"/>
		<param name="hotword-list" value=""/>
		<param name="hotword-id" value=""/>
		<param name="customization-id" value=""/>
		<param name="convert-num-mode" value=""/>
		<param name="filter-dirty" value="2"/>
		<param name="filter-modal" value="1"/>
		<param name="filter-punc" value="0"/>
		<param name="word-info" value="0"/>
	</asr-rest>
  • asr-url: 腾讯asr语音识别的地址。
  • app-id: 腾讯项目ID,获取方式参见API 密钥管理页面
  • secret-id: 秘钥ID,详情参见API 密钥管理页面
  • secret-key: 秘钥,详情参见API 密钥管理页面
  • need-vad:是否开启腾讯asr vad功能,默认值为1,即开启vad功能。
  • threshold:vad检测的噪音阈值,默认值为400。
  • vad-mode:vad模式,详见VAD
  • start-input-timers:开启收集语音计时,默认false。
  • no-input-timeout:无输入(未检测到通话)超时时间,单位毫秒。默认值5000。
  • speech-timeout:语音超时时间,单位毫秒。默认值为5000,最小值为2000。
  • confidence-threshold:静音阈值,默认值400。
  • silence-ms:语音断句检测阈值,单位毫秒。默认值1000。
  • speech-noise-threshold: 噪音参数阈值,默认为0,取值范围:[-1,1]。
  • hotword-list:临时热词表,默认不携带。详情参考实时语音识别接口中的hotword_list
  • hotword-id:热词表 id,默认不携带。详情参考实时语音识别接口中的hotword_id
  • customization-id:自学习模型 id,默认不携带。详情参考实时语音识别接口中的customization_id
  • convert-num-mode:是否进行阿拉伯数字智能转换,0:不转换,直接输出中文数字,1:根据场景智能转换为阿拉伯数字。
  • filter-dirty:是否过滤脏词,0:不过滤脏词;1:过滤脏词;2:将脏词替换为*,默认为0。
  • filter-modal:是否过滤语气词,0:不过滤语气词;1:部分过滤;2:严格过滤,默认为0。
  • filter-punc:是否过滤句末的句号,0:不过滤句末的句号;1:过滤句末的句号,默认为0。
  • eng-service-type:引擎模型类型。8k_zh:中文电话通用; 8k_en:英文电话通用; 6k_zh_dialect:多方言。
  • word-info:是否显示词级别时间戳。0:不显示;1:显示,不包含标点时间戳,2:显示,包含标点时间戳。默认值为 0。

例子:

play_and_detect_speech /root/10s.wav detect:tencent_asr {start-input-timers=true,no-input-timeout=5000,speech-timeout=5000}default

这里的 start-input-timersno-input-timeoutspeech-timeout会覆盖配置文件中的参数。

所有支持的临时参数如下:

  • no-input-timeout:无输入(未检测到通话)超时时间,单位毫秒。默认值5000。
  • speech-timeout:语音超时时间,单位毫秒。默认值为5000,最小值为2000。
  • start-input-timers:开启收集语音计时,默认false。
  • confidence-threshold:静音阈值,默认值400。
  • silence-ms:静音检测时间,单位毫秒。默认值500,最小值20。
  • vad-mode:vad模式,详见VAD
  • filter-dirty:是否过滤脏词,0:不过滤脏词;1:过滤脏词;2:将脏词替换为*,默认为0。
  • filter-modal:是否过滤语气词,0:不过滤语气词;1:部分过滤;2:严格过滤,默认为0。
  • filter-punc:是否过滤句末的句号,0:不过滤句末的句号;1:过滤句末的句号,默认为0。
  • hotword-list:临时热词表,默认不携带。详情参考实时语音识别接口中的hotword_list
  • customization-id:自学习模型 id,默认不携带。详情参考实时语音识别接口中的customization_id
  • convert-num-mode:是否进行阿拉伯数字智能转换,0:不转换,直接输出中文数字,1:根据场景智能转换为阿拉伯数字。
  • eng-service-type:引擎模型类型。8k_zh:中文电话通用; 8k_en:英文电话通用; 6k_zh_dialect:多方言。
  • word-info:是否显示词级别时间戳。0:不显示;1:显示,不包含标点时间戳,2:显示,包含标点时间戳。默认值为 0。

调用示例

以一个系统路由为例,先执行 app answer,然后调用 play_and_detect_speech 执行 asr 引擎。

answer
play_and_detect_speech /root/10s.wav detect:tencent_asr {start-input-timers=true,no-input-timeout=5000,speech-timeout=5000,asr-result-fire-switch-event=true}default

TTS

mod_tencent 中包含 TTS 服务,提供 TTS 引擎 tencenttencent_tts,即腾讯的语音合成。 tencent 使用 WebSocket 实现了实时语音合成,可以达到边合成边播放的效果。腾讯接口文档参见实时语音合成接口tencent_tts 使用 HTTP REST 实现了语音合成,腾讯接口文档参见一句话识别接口

tencent 引擎参数说明

腾讯 tts 参数分为配置文件参数与临时参数。配置文件参数可在界面或xml文件内进行修改,重载模块生效。临时参数一般跟随命令出现,该参数只会在当前这句话中生效。临时参数与配置文件参数部分参数存在重叠,当两者同名参数同时出现时,临时参数优先级高于配置文件参数。

配置文件参数说明

	<tts-ws>
		<param name="tts-url" value="wss://tts.cloud.tencent.com/stream_ws"/>
		<param name="disable-cache" value="false"/>
		<param name="app-id" value="a"/>
		<param name="secret-id" value="i"/>
		<param name="secret-key" value="s"/>
		<param name="voice-type" value="1001"/>
		<param name="volume" value="1"/>
		<param name="speed" value="1"/>
		<param name="voice-type" value="0"/>
		<param name="enable-subtitle" value="false"/>
		<param name="segment-rate" value="0"/>
		<param name="emotion-category" value=""/>
		<param name="emotion-intensity" value="100"/>
		<param name="fast-voice-type" value=""/>
	</tts-ws>
  • tts-url:腾讯TTS接口地址。
  • app-id:- app-id: 腾讯项目ID,获取方式参见API 密钥管理页面
  • secret-id: 秘钥ID,详情参见API 密钥管理页面
  • secret-key: 秘钥,详情参见API 密钥管理页面
  • volume:音量,默认值为1。
  • speed:语速,默认值为0。范围:[-2,6],分别对应不同语速: -2: 代表0.6倍 -1: 代表0.8倍 0: 代表1.0倍(默认) 1: 代表1.2倍 2: 代表1.5倍 6: 代表2.5倍 如果需要更细化的语速,可以保留小数点后 2 位,例如0.5/1.25/2.81等。 参数值与实际语速转换,可参考 代码示例
  • voice-type:音色 ID,默认值为0,详情参考语音合成接口中的VoiceType
  • enable-subtitle:是否开启时间戳功能,默认为false。
  • segment-rate:断句敏感阈值,取值范围:[0,1,2],默认值:0 该值越大越不容易断句,模型会更倾向于仅按照标点符号断句。此参数建议不要随意调整,可能会影响合成效果。
  • emotion-category:控制合成音频的情感,仅支持多情感音色使。取值: neutral(中性)、sad(悲伤)、happy(高兴)、angry(生气)、fear(恐惧)、news(新闻)、story(故事)、radio(广播)、poetry(诗歌)、call(客服)、sajiao(撒娇)、disgusted(厌恶)、amaze(震惊)、peaceful(平静)、exciting(兴奋)、aojiao(傲娇)、jieshuo(解说)
  • emotion-intensity:控制合成音频情感程度,取值范围为 [50,200],默认为 100;只有参数emotion-category不为空时生效。

临时参数说明

例子:

session:set_tts_params("tencent", "default")
session:answer()
session:speak("{voice-type=1018,speed=1}欢迎使用小樱桃智能语音产品")

上面是个lua脚本,这里的 voice-typespeed会覆盖配置文件中的参数。 所有支持的临时参数如下:

  • volume音量。
  • speed:语速。
  • voice-type:音色id。
  • enable-subtitle:是否开启时间戳功能。
  • emotion-category:控制合成音频的情感。
  • emotion-intensity:控制合成音频情感程度。

若使用XCC进行TTS放音,请参考XCC TTS,同时将示例中的tts_engine更换为tencent

tencent_tts 引擎参数说明

腾讯 tts 参数分为配置文件参数与临时参数。配置文件参数可在界面或xml文件内进行修改,重载模块生效。临时参数一般跟随命令出现,该参数只会在当前这句话中生效。临时参数与配置文件参数部分参数存在重叠,当两者同名参数同时出现时,临时参数优先级高于配置文件参数。

配置文件参数说明

	<tts-rest>
		<param name="tts-url" value="https://tts.tencentcloudapi.com"/>
		<param name="secret-id" value="i"/>
		<param name="secret-key" value="s"/>
		<param name="model-type" value="1"/>
		<param name="voice-type" value="1001"/>
		<param name="volume" value="0"/>
		<param name="speed" value="0"/>
		<param name="primary-language" value="1"/>
		<param name="enable-subtitle" value="false"/>
		<param name="segment-rate" value="0"/>
		<param name="emotion-category" value=""/>
		<param name="emotion-intensity" value="100"/>
	</tts-rest>
  • tts-url:腾讯TTS接口地址。
  • secret-id: 秘钥ID,详情参见API 密钥管理页面
  • secret-key: 秘钥,详情参见API 密钥管理页面
  • model-type:模型类型,1为默认模型。
  • volume:音量,默认值为0。
  • speed:语速,默认值为0。范围:[-2,6],分别对应不同语速: -2: 代表0.6倍 -1: 代表0.8倍 0: 代表1.0倍(默认) 1: 代表1.2倍 2: 代表1.5倍 6: 代表2.5倍 如果需要更细化的语速,可以保留小数点后 2 位,例如0.5/1.25/2.81等。 参数值与实际语速转换,可参考 代码示例
  • primary-language:主语言类型:1-中文(默认)、2-英文、3-日文。
  • voice-type:音色 ID,默认值为0,详情参考语音合成接口中的VoiceType
  • enable-subtitle:是否开启时间戳功能,默认为false。
  • segment-rate:断句敏感阈值,取值范围:[0,1,2],默认值:0 该值越大越不容易断句,模型会更倾向于仅按照标点符号断句。此参数建议不要随意调整,可能会影响合成效果。
  • emotion-category:控制合成音频的情感,仅支持多情感音色使。取值: neutral(中性)、sad(悲伤)、happy(高兴)、angry(生气)、fear(恐惧)、news(新闻)、story(故事)、radio(广播)、poetry(诗歌)、call(客服)、sajiao(撒娇)、disgusted(厌恶)、amaze(震惊)、peaceful(平静)、exciting(兴奋)、aojiao(傲娇)、jieshuo(解说)
  • emotion-intensity:控制合成音频情感程度,取值范围为 [50,200],默认为 100;只有参数emotion-category不为空时生效。

临时参数说明

例子:

session:set_tts_params("tencent_tts", "default")
session:answer()
session:speak("{voice-type=1018,speed=1,primary-language=1}欢迎使用小樱桃智能语音产品")

上面是个lua脚本,这里的 voice-typespeedprimary-language会覆盖配置文件中的参数。 所有支持的临时参数如下:

  • volume:音量。
  • speed:语速。
  • voice-type:音色id。
  • model-type:模型类型。
  • primary-language:主语言类型。
  • enable-subtitle:是否开启时间戳功能。
  • emotion-category:控制合成音频的情感。
  • emotion-intensity:控制合成音频情感程度。
阿里云