在 FreeSWITCH 中使用 google translate 进行文本语音转换

简介: 前段时间有一个语音识别的项目,便轻轻地研究了一下,虽没有达到预期的效果,但过程还是比较有趣。

前段时间有一个语音识别的项目,便轻轻地研究了一下,虽没有达到预期的效果,但过程还是比较有趣。

题目是这样的:给定一些潜在客户,用 FreeSWITCH 自动呼叫,如果用户应答,则转至 IVR,播放欢迎信息甚至转至人工座席;如果客户不应答,则获取不应答原因。

该想法想要达到的目标是:1)客户关怀。客户注册即可收到关怀电话(当然前提是留下电话号码。OK,发短信是另一种方式,但我这们里讨论的是语音);2)过滤无效客户。从不同渠道来的客户数据良莠不齐,有的甚至50%以上都无法打通,所以,把这部分数据过滤掉显然是很有意义的。


虽然我们在外呼中使用 SIP,但被叫用户在PSTN,而PSTN信令网一个很令人讨厌的地方就是返回的信令不准确,所以,你无法从信令层面获取被叫用户的状态(空号,忙等),而只能从语音层面去“听”。当然,听,对于人来说是没有问题的,但对于机器来说,就不轻松了,它需要使用语音识别(ASR,Automatic Sound Recognition)技术来实现。

Sphinx 应该是开源的语音识别公认的比较好的软件。幸运的是 FreeSWITCH 带了 pocket_sphinx 模块。它即能进行连续的识别,也能针对关键词进行识别,在测试阶段,成功率还是比较高的。但实际上我们真正要测的数据太烂,所以没有收到好的效果。


样本


目前PSTN网上有各种语音数据,除了各种各样的彩铃之外,便是五花八门的语音提示,而且,针对同一种挂机原因,有各种不同版本的语音提示。为了获取样本,我打了不同省市不同运营商的电话并录音:

originate sofia/gateway/blah/139xxxxxxxx &record(/tmp/testx.wav)
复制代码


作为测试,我选择了以下几种:

  1. 您拨的号码是空号,请查证再拨….(无限循环)
  2. 对不起,您拨叫的用户不方便接听您的电话,请稍后再拨。Sorry, the subscriber you have dialed is not convenient to answer now, please dial again later. (循环…)
  3. 您好,您所拨打的号码是空号,请核对后再拨。您好,您所拨打的号码是空号,请核对后再拨。Sorry, the number YOU dialed doesn’t exist, please check it and dial again.(循环… 一个问题是 YOU 有必要强调吗?)
  4. 号码是空号,请查证后再拨。 Sorry, The number you have dialed is not in service, please check the number and dial again. (循环)

如果你听一下,你会发现真是太难听了。那么大的电话公司,不能找个专业的人录音吗?(个人感觉 test4.wav 还是比较专业)

test1.wavtest2.wavtest3.wavtest4.wav


第一种方案,关键词


我将几个关键字写进了 grammer中,如:

``

grammar hpcause;

= [ service ]; = [ convenient ]; = [ busy ]; = [ konghao ]; = [ exist ]; public = [ | | | | ];  实际测试中,我甚至将“空号”(konghao)作为关键词加上去,的确有时候能识别出来。由于中英文混杂,识别率太低。纯英文的环境比较理想。 ## 第二种方案,连续识别 当然我也试过连续的语音识别,效果都不理想。pocket_sphinx 是支持中文的,但配置比较复杂,而且我也怀疑它在中英文混合识别方面的效果到底如何。 ## 第三种方案,只录音,采用外部程序识别 要想在 FreeSWITCH 中准确识别这么复杂的情况看来是不现实的。另一种想法就是只录音,而采用外部程序(可能还是 Sphinx)来识别。可以针对中英文各识别一次,去掉不能识别的部分,我相信效果还是可以的。但没有试过。 ## 第四种方案,Google Voice 实际上 Google Voice 有一个很有趣的功能就是 Voice Mail,当你的电话无法接通时,它可以录音,并能转换成文本。我今天忽然想到,能否让 Google Voice 来替我们做这项工作 ?如果行,对于每个 Voice Mail 我们都能收到一封电子邮件,岂不是绝了? 我赶紧试了以下命令: originate {ignore_early_media=true}sofia/gateway/blah/1717673xxxx


'sleep:3,playback:/home/app/t/test4.wav' inline 上面,我呼叫我的 Google Voice 号码,并拨放声音文件,为了等待 Google Voice 启动 Voice Mail,暂停了3秒。其中使用了 FreeSWITCH 的 inline dialplan。 不得不说,人家 Google Voice 的功力就是比较深,以下是呼叫结果(虽然它花了好长时间生成这些文本):

今天,偶然发现 google translate 一个很酷的功能,TTS。

在浏览器中输入 translate.google.com/translate_t… 然后立即就可以播放声音。

又试了一下这个,呵呵 translate.google.com/translate_t… ,也好用。

我在Mac上分别用 Safari, Chrome 和 FireFox 都测试通过。

那么,能不能在 FreeSWITCH 里用呢?当然,FreeSWITCH 通过 mod_shout 支持 mp3!

默认的 FreeSWITCH 中 mod_shout 是不编译的,所以需要自己编译。到源代码目录下,执行

make mod_shout-install
复制代码

就装好了(当然,前提是你已经用源代码安装了 FreeSWTICH 的情况,参见 电子书第二章)。

在 FreeSWITCH 命令行上装入模块:

load mod_shout
复制代码

测试一下:

originate user/1000 &playback(shout://translate.google.com/translate_tts?q=hello+and+welcome+to+www+dot+dujinfang+dot+com&tl=en)
复制代码

太爽了。但中文的没有成功,不知道为什么。

当然你也可以写到 Dialplan 中,然后呼叫 1234 试一下 :D(为了排版方便,我换行了,记着shout 那一行别断行)

<extension name="Free_Google_Text_To_Speech">
     <condition field="destination_number" expression="^1234$">
      <action application="answer" data=""/>
      <action application="playback"
                   data="shout://translate.google.com/translate_tts?
                   q=hello+and+welcome+to+www+dot+dujinfang+dot+com&tl=en"/>
     </condition>
</extension>


相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
7月前
|
JavaScript 测试技术
【sgGoogleTranslate】自定义组件:基于Vue.js用谷歌Google Translate翻译插件实现网站多国语言开发
【sgGoogleTranslate】自定义组件:基于Vue.js用谷歌Google Translate翻译插件实现网站多国语言开发
|
开发工具 网络架构 API
google sdk speech-to-text(谷歌语音转文本、谷歌语音转字幕)
).google sdk speech-to-text ).谷歌语音转文本 ).谷歌语音转字幕 ).谷歌从麦克风实时转字幕 ## 官网文档 - https://cloud.google.com/speech-to-text/docs/quickstart-client-libraries#...
16065 0
使用超声波“无声”劫持语音助理系统:以Siri、Google Now为例
本文讲的是使用超声波“无声”劫持语音助理系统:以Siri、Google Now为例,近日,中国安全研究人员发明了一种可以不用说话就能巧妙的激活语音识别系统的方式。他们通过使用人类无法听到高频声波来对那些智能设备的语音助手发出命令。
1975 0
|
机器学习/深度学习 人工智能 算法