在freeSwitch中,实现来电对接百度语音翻译
要在FreeSWITCH中实现来电对接百度语音翻译,可以使用FreeSWITCH提供的mod_vbr(Voice Biometric Recognition)模块结合开发者可以使用的百度API接口来实现。
下面是基本的实现步骤:
- 安装mod_vbr模块
首先需要在FreeSWITCH中安装mod_vbr模块。可以通过以下命令进行安装:
sudo apt-get install freeswitch-mod-vbr
- 注册并获取百度API Key
在百度智能云控制台注册并获取语音识别的API Key和Secret Key。
- 配置mod_vbr
在FreeSWITCH的/etc/freeswitch/autoload_configs/vbr.conf.xml
文件中添加如下配置:
<configuration name="vbr.conf" description="Voice Biometric Recognition">
<settings>
<param name="api-url" value="http://vop.baidu.com/server_api"/>
<param name="api-key" value="YOUR_APP_ID_HERE"/>
<param name="api-secret" value="YOUR_APP_SECRET_HERE"/>
<param name="channel-type" value="both"/>
<param name="audio-format" value="wav"/>
<param name="silence-timeout" value="3"/>
<param name="initial-silence-timeout" value="5"/>
</settings>
</configuration>
将YOUR_APP_ID_HERE
和YOUR_APP_SECRET_HERE
替换为你在控制台中获取到的API Key和Secret Key。
- 创建FreeSWITCH Dialplan
在FreeSWITCH的dialplan中,可以使用vbr
应用程序调用mod_vbr模块,并将它与一个播放文件(例如,提示用户说出相应的单词)和detect_speech
应用程序一起使用。
下面是一个示例dialplan:
<include>
<context name="public">
<extension name="test_vbr">
<condition field="destination_number" expression="1000">
<action application="playback" data="ivr/phrase/en_us/prepaid_call_time"/>
<action application="vbr" data="en-US 1"/>
<action application="detect_speech" data=""/>
<action application="log" data="DEBUG detect_speech: ${detect_speech_result}"/>
</condition>
</extension>
</context>
</include>
在这个dialplan中,当被叫号码为1000时,先播放ivr/phrase/en_us/prepaid_call_time
文件,然后调用vbr
应用程序,生成英文语音识别。接着调用detect_speech
应用程序,将处理结果存储到${detect_speech_result}
变量中。同时,使用log
应用程序将${detect_speech_result}
变量中的值输出到日志中,便于调试。
需要注意的是,为了使用vbr
应用程序,必须为该语音通道启用音频流调谐功能。可以在FreeSWITCH的配置文件/etc/freeswitch/autoload_configs/voipflow.conf.xml
中添加以下配置来启用音频流调谐:
<configuration name="voipflow.conf" description="VoIP flow configurations">
<settings>
<param name="ti_enable" value="true"/>
</settings>
</configuration>
将ti_enable
参数设置为true
来启用音频流调谐功能。
- 测试
现在可以启动FreeSWITCH,并通过以下命令进行测试:
sudo fs_cli -x "originate sofia/external/1000@127.0.0.1 &playback(ivr/phrase/en_us/prepaid_call_time)"
在播放文件播放后,Speak some english 然后听取结果输出到日志文件。
注意:本示例仅提供了一个基本的框架,你应该相应地调整其配置,以满足你的实际需求。