智能客服的开发基于ASR和TTS的处理是一个非常关键的技术点。博主通过多年研究后发现通过软交换平台直接和一些大公司的ASR和TTS接口进行交互,通过媒体服务器的拨号规则的处理,可以实现智能客服,或者自动拨号功能。

以下是笔者看到的一个比较完整的示例,此示例支持了Asterisk,google ASR/TTS API接口。通过API调用返回的结果来实现呼叫的处理。现在和大家分享一下具体的处理流程:

首先,我们一下基于Google的语音识别的处理。首先需要安装依赖支持包:

然后把speech-recog.agi的AGI文件拷贝到 /var/lib/asterisk/agi-bin/

拷贝进去以后,处理执行权限,保证agi那个正常工作。此agi配置文件配置了API接口的调用机制。

使用语法:

agi(speech-recog.agi,[lang],[timeout],[intkey],[NOBEEP])
通过拨号规则的AGI接口调用语音识别和TTS数据:

imple speech recognition
exten => 1234,1,Answer()
exten => 1234,n,agi(speech-recog.agi,en-US) //
exten => 1234,n,Verbose(1,The text you just said is: ${utterance})
exten => 1234,n,Verbose(1,The probability to be right is: ${confidence})
exten => 1234,n,Hangup()

;;Speech recognition demo:
exten => 1235,1,Answer()
exten => 1235,n,agi(googletts.agi,“Say something in English, when done press the pound key.”,en)
exten => 1235,n(record),agi(speech-recog.agi,en-US)
exten => 1235,n,Verbose(1,Script returned: ${confidence} , ${utterance})

;Check the probability of a successful recognition:
exten => 1235,n(success),GotoIf(["["["{confidence}" > “0.8”]?playback:retry)

;Playback the text:
exten => 1235,n(playback),agi(googletts.agi,“The text you just said was…”,en)
exten => 1235,n,agi(googletts.agi,"${utterance}",en)
exten => 1235,n,goto(end)

;Retry in case speech recognition wasn’t successful:
exten => 1235,n(retry),agi(googletts.agi,“Can you please repeat more clearly?”,en)
exten => 1235,n,goto(record)

exten => 1235,n(fail),agi(googletts.agi,“Failed to get speech data.”,en)
exten => 1235,n(end),Hangup()

;;Voice dialing example
exten => 1236,1,Answer()
exten => 1236,n,agi(googletts.agi,“Please say the number you want to dial.”,en)
exten => 1236,n(record),agi(speech-recog.agi,en-US)
exten => 1236,n,GotoIf(["["["{confidence}" > “0.8”]?success:retry)

exten => 1236,n(success),goto(${utterance},1)

exten => 1236,n(retry),agi(googletts.agi,“Can you please repeat?”,en)
exten => 1236,n,goto(record)

以上是ASR的接口调用,用户也可以使用TTS调用方式。当然,首先需要创建一个tts.agi 文件,拷贝此文件到agi默认路径,执行权限设置,保证其可执行。

使用语法:

agi(googletts.agi,text,[language],[intkey])
TTS和asterisk的测试示例:

GoogleTTS Demo

exten => 1234,1,Answer()
;;Play mesage in English:
exten => 1234,n,agi(googletts.agi,“This is a simple google text to speech test in english.”,en)
;;Play message in Spanish:
exten => 1234,n,agi(googletts.agi,“Esta es una simple prueba en español.”,es)
;;Play message in Greek:
exten => 1234,n,agi(googletts.agi,“Αυτό είναι ένα απλό τέστ στα ελληνικά.”,el)
;;Play message in Japanese:
exten => 1234,n,agi(googletts.agi,“これは、日本の簡単なテストです。良い一日を。”,ja)
;;Play message in simplified Chinese:
exten => 1234,n,agi(googletts.agi,“这是一个简单的测试,在中国。有一个愉快的一天。”,zh-CN)
;A simple dynamic IVR using GoogleTTS

[my_ivr]
exten => s,1,Answer()
exten => s,n,Set(TIMEOUT(digit)=5)
exten => s,n,agi(googletts.agi,“Welcome to my small interactive voice response menu.”,en)
;;Wait for digit:
exten => s,n(start),agi(googletts.agi,“Please dial a digit.”,en,any)
exten => s,n,WaitExten()

    ;;PLayback the name of the digit and wait for another one:

exten => _X,1,agi(googletts.agi,“You just pressed ${EXTEN}. Try another one please.”,en,any)
exten => _X,n,WaitExten()

exten => i,1,agi(googletts.agi,“Invalid extension.”,en)
exten => i,n,goto(s,start)

exten => t,1,agi(googletts.agi,“Request timed out.”,en)
exten => t,n,goto(s,start)

exten => h,1,Hangup()

以上示例是一个国外开发人员的开源代码分享,笔者没有测试,因为访问Google还是有很多不方便的地方。开发人员也提供了语音合成的接口,支持微软的翻译工具来实现,读者可以进一步研究。读者可以根据ASR和TTS的接口给的大概思路,利用我们国内的ASR和TTS厂家(例如,百度,科大讯飞等)的API接口进行调整来实现ASR/TTS/IVR的流程处理。

基于Asterisk和TTS/ASR语音识别配置示例相关推荐

  1. Linux 添加IPv6策略路由,基于策略的路由通过IPv6配置示例

    基于策略的路由为表示和实现转发提供一机制/根据策略的路由数据包定义由网络管理员.基于策略的路由应用到流入数据包并且使用路由映射定义策略.基于在路由映射定义的标准,数据包转发/路由对适当的下一跳.本文为 ...

  2. vsftpd基于mysql_vsftpd的基于pam_mysql的虚拟用户配置示例

    ~]# yum install mariadb-server ~]# yum install vsftpd 因为中CentOS 7平台上/lib64/security/中没有pam_mysql模块驱动 ...

  3. ASR 语音识别(VOSK)API资源/DEMO

    jiaying系列 网页版演示地址:ai.moneymeeting.club ASR 语音识别(VOSK)API资源/DEMO 注:VOSK将下线,改为NEMO,请移步:https://blog.cs ...

  4. 基于OpenSeq2Seq的NLP与语音识别混合精度训练

    基于OpenSeq2Seq的NLP与语音识别混合精度训练 Mixed Precision Training for NLP and Speech Recognition with OpenSeq2Se ...

  5. 快手团队长文解读:基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用...

    来源:机器之心 本文约6000字,建议阅读10分钟 本文介绍了基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用. 典型的实时流式自动语音识别业务如语音搜索.语音输入等和用户操作相关,直接影 ...

  6. 基于深度学习的中文语音识别系统框架(pluse)

    目录 声学模型 GRU-CTC DFCNN DFSMN 语言模型 n-gram CBHG 数据集 本文搭建一个完整的中文语音识别系统,包括声学模型和语言模型,能够将输入的音频信号识别为汉字. 声学模型 ...

  7. 基于深度学习的中文语音识别系统框架搭建

    基于深度学习的中文语音识别系统框架 转自@https://blog.csdn.net/chinatelecom08/article/details/82557715 本文搭建一个完整的中文语音识别系统 ...

  8. 基于STM32的有限词条语音识别与对话模块

    基于STM32的有限词条语音识别与对话模块 一.模块整体设计思路 二.器件选型与方案确定 1.器件选型 (1)语音识别模块 (2)词条存储模块 (3)语音提示模块 (4)主控芯片 2.方案确定 三.I ...

  9. AI周报丨快手团队长文解读:基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用

    AI周报 - 热门论文 - 题目:On Training Implicit Models 本文主要研究无限层隐式模型的训练问题.具体地说,以前的工作采用隐式微分,并为反向传播计算精确的梯度.然而,是否 ...

最新文章

  1. 解决Hbuilder打包的APP微信支付时无法唤起支付,且提示{“code“:-100,“message“:“[payment微信:-1]General errors“}的问题
  2. Cocos-2d 坐标系
  3. 【spring 配置文件】spring配置文件的解析
  4. Linux┊理解devfs、sysfs、udev、tmpfs
  5. 21、Java Swing JOptionPane:对话框组件
  6. 开发笔记:游戏逻辑模块组织及数据同步
  7. Batch Normailzation
  8. Vijos P1448 校门外的树【多解,线段树,树状数组,括号序列法+暴力优化】
  9. PDF阅读器开发商福昕曝出数据泄露事件,涉及用户帐户密码
  10. python爬取图虫网图库
  11. NIPS历年论文 NIPS2020论文集
  12. 【APP授权登录】创建新浪微博(sina)移动应用
  13. Home Assistant 自动化
  14. 在线视频播放加速方法
  15. 记录---第一次写博客
  16. 【OCP】小麦苗OCP(包括11g、12c、18c、19c等)网络班早已开讲,注重实践,报名一次,终身可免费升级学习,推荐有红包...
  17. 用c语言把图像转成jpg格式,图像格式转换之BMP格式转换为JPG格式(示例代码)
  18. cc150 java_javaMail 的邮件发送包括了抄送(CC),密送(BCC)采用springBoot
  19. deepin 安装git
  20. Maven编译Docker 镜像并推送到Nexus

热门文章

  1. 物理大地测量学笔记(一)
  2. 渗透工具metasploit-auxiliary(scanner/portscan/syn)扫描端口服务
  3. android google map key,android google map api key取得?
  4. 雨润oa系统服务器 e-mobile,泛微OA系统e-mobile让办公更安全
  5. Python飞机大战两个问题, 1.字体font 2.import路径
  6. 加工中心逆变器散热风扇故障_西门子840D车床加工中心231885故障S120维修
  7. 5.CreateFileMapping、MapViewOfFile和UnmapViewOfFile
  8. 1-100中6的倍数有多少个
  9. telnet 使用教程(新手篇)及问题集锦
  10. java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must b