模块 API
mod_xunfei
mod_xunfei 是一个ASR/TTS模块,它通过WebSocket与讯飞云端进行语音识别(ASR)和语音合成(TTS)交互。
ASR
mod_xunfei 中包含 ASR 服务,提供 asr 引擎 xunfei,即讯飞的实时语音转写功能,讯飞对接文档参考实时语音转写、语音听写。
参数说明
讯飞 asr 参数分为配置文件参数与临时参数。配置文件参数可在界面或xml文件内进行修改,重载模块生效。临时参数一般跟随命令出现,该参数只会在当前这句话中生效。临时参数与配置文件参数部分参数存在重叠,当两者同名参数同时出现时,临时参数优先级高于配置文件参数。
配置文件参数说明
<asr> <param name="asr-url" value="wss://iat-api.xfyun.cn/v2/iat"/> <param name="appid" value=""/> <param name="apikey" value=""/> <param name="apisecret" value=""/> <param name="asr-mode" value="continue-stream"/> <!-- continue-stream/short-stream --> <param name="vad-mode" value="vendor"/> <param name="vad-debug" value="0"/> <param name="threshold" value="100"/> <param name="silence-ms" value="500"/> <param name="voice-ms" value="60"/> <param name="enable-8ktele" value="true"/> <param name="start-input-timers" value="false"/> <param name="no-input-timeout" value="5000"/> <param name="speech-timeout" value="5000"/> <param name="confidence_threshold" value="400"/> <param name="segment-recording-prefix" value=""/> <param name="disable-engine-data" value="false"/> <param name="short-mode-rate" value="8000"/> <param name="enable-dwa" value="true"/> </asr>
asr-url: 讯飞 WebSocket 语音转写的地址。此处地址需与下方的asr-mode对应。appid:讯飞开放平台应用ID。appkey: 实时语音转写所用,接口密钥,在讯飞应用中添加实时语音转写服务时自动生成。apisecret: 语音听写所用,讯飞开放平台应用APISecret。asr-mode:asr模式,continue-stream:实时语音转写,short-stream:语音听写。vad-mode:vad模式,详见VAD。vad-debug:是否打印vad调试日志信息。0:不打印,1:打印,默认值为0。threshold: vad检测的噪音阈值,默认值为100。silence-ms:语音断句检测阈值,单位毫秒,默认值500。voice-ms:在指定时间内,如果连续检测到说话声音大于threshold。则认为说话人开始说话,单位毫秒,默认值为60。enable-8ktele:是否使用8k采样率音频,默认值为false。此值只在short-stream起效。start-input-timers:开启收集语音计时,默认false。no-input-timeout:无输入(未检测到通话)超时时间,单位毫秒。默认值5000。speech-timeout:语音超时时间,单位毫秒,默认值为5000。confidence_threshold:静音阈值,默认值400。segment-recording-prefix:分段录音路径,若为空则不开启分段录音,默认值为空。disable-engine-data:是否在asr识别结果内添加engine_dataparam,默认为false。segment-vad-audio: 阿里asr引擎内置vad功能的噪音阈值。short-mode-rate:short-stream音频采样率。此值只在short-stream起效。可选值:8000、16000。enable-dwa:是否开启动态修正,默认值为false。
临时参数说明
例子:
play_and_detect_speech /root/10s.wav detect:xunfei {start-input-timers=true,no-input-timeout=5000,speech-timeout=5000,asr-result-fire-session-event=true}default
这里的 start-input-timers、no-input-timeout、speech-timeout会覆盖配置文件中的参数,而asr-result-fire-session-event为临时参数所特有的。
所有的临时参数如下:
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。vocabulary-id:定制范热词ID,默认不携带。interim-results:是否返回中间识别结果,默认值为false。semantic-sentence-detection:是否开启语义断句,默认值为false。auto-resume:语音识别完成后是否重置asr,默认值为false。asr-result-fire-switch-event:语音识别完成后是否发送DETECTED_SPEECH事件,默认值为false。asr-result-fire-session-event:是否将识别结果放入session event queue内,默认值为false。channel-uuid:通话uuid。app-uuid:执行本次asr命令时的标识uuid,最终会放入DETECTED_SPEECH事件内,作为回调辨别依据。segment-recording-prefix:分段录音路径,若为空则不开启分段录音,默认值为空。disable-engine-data:是否在asr识别结果内添加engine_dataparam,默认为false。asr-mode:asr模式,continue-stream:实时语音转写,short-stream:语音听写。asr-event-add-channel-data:是否在asr event内添加channel data,默认值为false。lang:语种,zh_cn:中文,en_us:英文。详见实时语音转写中的lang、语音听写中的language。target-lang:方言。详见实时语音转写中的targetLang、语音听写中的accent。trans-type:翻译类型,此值只在continue-stream起效。详见实时语音转写中的transType。trans-strategy:翻译策略,此值只在continue-stream起效。详见实时语音转写中的transStrategy。pd:垂直领域个性化参数。详见实时语音转写中的pd、语音听写中的pd。vad-mdn:远近场切换,此值只在continue-stream起效。详见实时语音转写中的vadMdn。role-type:是否开角色分离,此值只在continue-stream起效,默认不开启。详见实时语音转写中的roleType。eng-lang-type:语言识别模式,此值只在continue-stream起效。详见实时语音转写中的engLangType。rlang:字体,此值只在short-stream起效。详见语音听写中的rlang。nunum:将返回结果的数字格式规则为阿拉伯数字格式,此值只在short-stream起效。详见语音听写中的nunum。speex-size:speex音频帧长,仅在speex音频时使用,此值只在short-stream起效。详见语音听写中的speex_size。nbest:取值范围[1,5],通过设置此参数,获取在发音相似时的句子多侯选结果。此值只在short-stream起效。详见语音听写中的nbest。wbest:取值范围[1,5],通过设置此参数,获取在发音相似时的词语多侯选结果。此值只在short-stream起效。详见语音听写中的wbest。domain:应用领域,此值只在short-stream起效。详见语音听写中的domain。
调用示例
以一个系统路由为例,先执行 app answer,然后调用 play_and_detect_speech 执行 asr 引擎。
answer play_and_detect_speech /root/10s.wav detect:xunfei {start-input-timers=true,no-input-timeout=5000,speech-timeout=5000,asr-result-fire-switch-event=true}default
上述命令中的/root/10s.wav为容器内已存在的音频文件,请根据实际情况更改。
若您使用XCC进行语音合成,请参考XCC DETECT,同时将示例中的asr_engine更换为xunfei。
TTS
mod_xunfei 中包含 TTS 服务,提供 tts 引擎 xunfei,即讯飞的语音合成功能,讯飞对接文档参考语音合成
参数说明
讯飞 tts 参数分为配置文件参数与临时参数。配置文件参数可在界面或xml文件内进行修改,重载模块生效。临时参数一般跟随命令出现,该参数只会在当前这句话中生效。临时参数与配置文件参数部分参数存在重叠,当两者同名参数同时出现时,临时参数优先级高于配置文件参数。
配置文件参数说明
<tts> <param name="tts-url" value="wss://tts-api.xfyun.cn/v2/tts"/> <param name="appid" value=""/> <param name="apisecret" value=""/> <param name="apikey" value=""/> <param name="tts-file-ext" value="wav"/> <param name="curl-timeout" value="2"/> <param name="cache-dir" value=""/> <param name="max-requests" value="200"/> <param name="disable-cache" value="false"/> </tts>
tts-url:讯飞TTS WebSocket接口地址。appid:讯飞开放平台应用ID。apikey: 语音合成接口密钥。apisecret: 讯飞开放平台应用APISecret。tts-file-ext:tts缓存文件后缀格式,默认值为wav。curl-timeout:HTTPS请求超时时间,单位秒,默认值为2。cache-dir:语音缓存路径,默认值为/tmp。disable-cache:是否取消缓存,默认值为false。max-requests:同一缓存文件在同一时间最大被使用次数,默认值为200。
临时参数说明
例子:
speak {channel_uuid=1235}xunfei|xiaoyan|这是一个测试字符串。
这里的 channel_uuid为临时参数。
所有的临时参数如下:
voice:发音人。channel_uuid:通话UUID。
调用示例
以一个系统路由为例,先执行 app answer,然后调用 speak 执行 tts 引擎,xiaoyan为发音人。
answer speak xunfei|xiaoyan|这是一个测试字符串。
若您使用XCC进行TTS放音,请参考XCC TTS,同时将示例中的tts_engine更换为xunfei。