模块 API
mod_ifly
mod_ifly
是一个ASR/TTS模块,它通过WebSocket与讯飞云端进行语音识别(ASR)和语音合成(TTS)交互。
ASR
mod_ifly
中包含 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_data
param,默认为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_data
param,默认为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_ifly
中包含 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
。