模块 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-rateshort-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-timersno-input-timeoutspeech-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

华为云