模块 API
mod_tencent
mod_tencent
是一个ASR/TTS模块,它通过HTTPS与腾讯云端进行语音合成(TTS)交互,通过WebSocket与腾讯云端进行语音识别(ASR)交互。
ASR
mod_tencent
中包含 ASR 服务,提供 asr 引擎 tencent
和 tencent_asr
,tencent
使用 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-ms
:tts
非打断模式下,在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-timers
、no-input-timeout
、speech-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-ms
:tts
非打断模式下,在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-timers
、no-input-timeout
、speech-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 引擎 tencent
和tencent_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-type
、speed
会覆盖配置文件中的参数。 所有支持的临时参数如下:
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-type
、speed
、primary-language
会覆盖配置文件中的参数。 所有支持的临时参数如下:
volume
:音量。speed
:语速。voice-type
:音色id。model-type
:模型类型。primary-language
:主语言类型。enable-subtitle
:是否开启时间戳功能。emotion-category
:控制合成音频的情感。emotion-intensity
:控制合成音频情感程度。