手机打电话时由对方DTMF响应切换多级IVR语音菜单(话术脚本与实战)

news2025/5/24 21:20:35

手机打电话时由对方DTMF响应切换多级IVR语音菜单

(话术脚本与实战)

--本地AI电话机器人

上一篇:手机打电话时由对方DTMF响应切换多级IVR语音应答(二)

下一篇:手机打电话时由对方DTMF响应切换多级IVR语音菜单(完结)


  • 一、前言

接上一篇《手机打电话时由对方DTMF响应切换多级IVR语音应答(二)》,我们设计了“多级IVR的编辑界面列表”,允许手机用户对IVR菜单进行八个层级的嵌套,并可以对每个IVR菜单项单独录音或语音导入。

在这个篇章中,我们尝试规划一些经典的多级IVR导航的话术脚本,使用TTS来将这些文字脚本内容生成对应的语音文件。并将这些话术逻辑和语音数据整合到【蓝牙电话SDK示例App】中。(这个功能和能力跟SDK没有关系,主要就是上层示例App的逻辑。换句话说本篇的所有逻辑都是开源的,感兴趣的读者可以获取源代码,在这个基础上进行修改以适配自己的话术和逻辑。)

另外,由于多级IVR菜单的功能逻辑比较复杂,一上来就把它整合到打电话逻辑中,拨打电话时按下DTMF才可以调试和验证的话,感觉有点浪费电话费的嫌疑。本篇章中针对多级IVR层级菜单的逻辑调试,在界面中增加了【开启多级IVR按键测试】的复选框。

用户修改或编辑好自己的IVR语音导航菜单后,可以勾选该复选框后,依次点击示例App右上角的【设置】图标->【发送DTMF】,在弹出的DTMF发送的对话框中按键测试并收听IVR菜单的语音进行检验和对照修正。(此操作不需要打电话,即可正常收听和操作)

经示例App验证和修订完毕后,再插入USB蓝牙。供其它手机来电后,真实环境下试验手机拨号盘的数字按键来回复不同的IVR语音应答。

体验和下载地址:

智能拨号器App:http://120.78.211.195:8060/Dialer.apk

拨号器SDK示例app:http://120.78.211.195:8060/sdk/SdkDemo.apk

USB蓝牙配件购买路径(参考):https://item.taobao.com/item.htm?_u=pk10l4ccbcd&id=649368472986

  • 二、话术和脚本

正常的IVR语音导航会在通话接通后主动播放一个简短的开场白(当然也可以没有),然后进入IVR的主菜单,提示对方按下不同的按键来实现不同的功能和服务。

本次设计的【多级IVR - 话术】示例如下:

开场白:欢迎致电SDK,400电话。普通话请按1,for english press two

按下1:请您按下1到9,访问不同的功能业务。重新听请按0,返回请按井号键。

按下2:how are you, fine, thank you, and you? i'm fine too.重新听请按0,返回请按井号键。

二级菜单按下1:您按下了1。

                您按下了2。

                您按下了3。

                您按下了4。

                您按下了5。

                您按下了6。

                您按下了7。

                您按下了8。

                您按下了9。

                您按下了0。

                您按下了星号键。

                您按下了井号键。

例外:按键错误,请重新输入。

超时:您已长时间没有操作,系统即将挂机,欢迎您再次使用。。

  • 三、在线TTS的网址和语料转换

有了上述的话术以及隐含的操作和响应逻辑,我们需要逐个句子的将这些文字转换为语音数据,用于在电话接通了之后能直接播放给对方收听。

示例App后续也可以接入实时TTS,但个人不建议这么做,毕竟TTS转换一般都能听出一股机器人的口音。没有任何人希望打个电话或接个电话就听出对方是一个机器人的。

为了简便操作,我们在网上找了个在线TTS的网址,用于将上述话术中每个句子,分别单独生成wav语音文件,网址如下:

【在线免费文字转语音网址:https://ttsmaker.cn】。

网址的操作界面如下图所示:

我们将句子粘贴进去后,直接点击【开始转换】,语音文件转换完成后会自动播放。如果觉得音色或句子等话术内容不合适,可以在这个过程不断的修订。

语音效果确认无误后,可以点击【下载文件到本地】,将网址生成的mp3文件,下载到本地电脑备用。如下图所示:

由于直接下载下来的mp3文件(示例中文件名为ttsmaker-file-2025-5-22-9-0-19.mp3),默认是【24000Hz单声道的mp3】数据。如下图所示:

但是我们SDK-Demo示例App能够导入和直接播放的是【8000Hz单声道的wav】数据,因此需要进行两次转换:先将“24000Hz采样率转为8000Hz”,再将“mp3格式数据转为wav”。对应于在GoldWave的操作,就是做两次【另存为】操作,界面效果分别如下:

经过两次“另存为”操作后,生成的最终的【ttsmaker-file-2025-5-22-9-0-19.wav】即为可以导入到手机正常播放的wav语音文件。

  • 四、多级IVR菜单的创建

多级IVR菜单的创建和编辑操作,在上一篇《手机打电话时由对方DTMF响应切换多级IVR语音应答(二)》已经讲过,此处不再赘述。反正就是点左上角的+号,需要哪个DTMF下创建子IVR菜单就点击【子菜单】区域,在弹出的对话框中点击左上角的+号,创建即可。

点击左上角+号新增时,会先弹出【请先选择触发的DTMF值】的提示框。由于多级IVR导航菜单是依赖对方手机按下的DTMF按键操作来触发的,因此每个DTMF按键应只能有一个IVR菜单的响应。如下图所示:

  • 五、IVR菜单语料的导入或录制

每一项的IVR菜单中,菜单项都有【导入】【录制】【播放】三个按钮,用户在IVR菜单编辑时,可以使用【录制】按钮来做人工语料的录制。也可以使用【导入】按钮,将前面章节中在线生成的wav文件,从手机中导入到示例App中使用。

在录制或导入完成后,可以使用【播放】按钮,在示例App中进行单个文件的播放,体验一下语音数据的音质效果。

  • 六、多级IVR菜单的验算

如前文所述,由于多级IVR菜单的功能逻辑比较复杂,一上来就把它整合到打电话逻辑中,拨打电话时按下DTMF才可以调试和验证的话,感觉有点浪费电话费的嫌疑。

此处针对多级IVR层级菜单的逻辑调试,在界面中增加了【开启多级IVR按键测试】的复选框。

用户修改或编辑好自己的IVR语音导航菜单后,可以勾选该复选框后,依次点击示例App右上角的【设置】图标->【发送DTMF】,在弹出的DTMF发送的对话框中按键测试并收听IVR菜单的语音进行检验和对照修正。(此操作不需要打电话,即可正常收听和操作)

当对话框【按下发送DTMF字符(IVR测试)】界面弹出时,将自动播放“IVR引导提示语”(本篇话术中开场白为:欢迎致电SDK,400电话。普通话请按1,for english press two)

用户可以在对话框界面中按照提示的语音,依次按下界面不同的按钮,收听和体验不同的IVR菜单的功能。如果中途感觉IVR逻辑不合理,可以点击界面空白处,关闭该对话框。回到主界面【多级IVR语音片段-编辑】区域,重新调整IVR菜单的逻辑。

调整完毕的逻辑是实时生效的,调整完毕后可以再次打开对话框【按下发送DTMF字符(IVR测试)】界面进行效果的直接验证。

  • 七、真实的打电话和多级IVR语音应答

上述“多级IVR菜单的验证”的响应逻辑,与真实打电话使用的DTMF响应逻辑,使用的是同一套代码。理论上,只要上章节中用户自己验算没有问题,那么在真实打电话时(来电或主动外呼)对方手机的拨号盘上按下的数字按键,收到的语音响应结果应该是没有区别的。

用户对多级IVR菜单调试和验算完毕后,可以放心的直接在手机上插入USB蓝牙,用其它手机去拨打当前这个手机号。真实的实际体验一下个人400电话IVR语音应答的效果。

  • 八、总结

本篇中,我们通过预设的话术脚本,设计了自己的DTMF响应逻辑。并通过在线TTS和语料转换,实现将脚本文字转换为一段一段语音,并将它们成功导入了【蓝牙电话SDK示例App】中进行使用。

我们可以通过主界面中对多级IVR菜单的逻辑和响应内容进行编辑,并提供了不用打通电话就可以直接检验和验证IVR菜单的体验效果的途径。

另外,由于本篇章的所有的逻辑和代码均属于【示例App】的功能范畴,开源的。感兴趣的读者可以获取源代码,在这个基础上进行修改以适配自己的话术和逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2384881.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试题——JDBC|Maven|Spring的IOC思想|DI思想|SpringMVC

目录 一、JDBC 1、jdbc连接数据库的基本步骤(掌握**) 2、Statement和PreparedStatement的区别 (掌握***) 二、Maven 1、maven的作用 2、maven 如何排除依赖 3、maven scope作用域有哪些? 三、Spring的IOC思想 …

DETR3D- 3D Object Detection from Multi-view Images via 3D-to-2D Queries

MIT CORL 2021 纯视觉BEV方案transformer网络3D检测 paper:[2110.06922] DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries code:GitHub - WangYueFt/detr3d DNN提图像特征,FPN提多尺度特征 pts_bbox_head Detr3…

SpringBoot3整合WebSocket

一、WebSocket简介 WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信,允许服务器主动向客户端推送数据。 与传统的 HTTP 请求-响应模式不同,WebSocket 在建立连接后,允许服务器和客户端之间进行双向…

鸿蒙进阶——驱动框架UHDF 机制核心源码解读(一)

文章大纲 引言一、uhdf 概述二、uhdf 的核心参与角色1、drivers/hdf_core/adapter/uhdf2/manager/device_manager.c1.1、drivers/hdf_core/framework/core/manager/src/devmgr_service.c#DevmgrServiceGetInstance通过objectId获取IDevmgrService实例1.2、drivers/hdf_core/fra…

Idea 配合 devtools 依赖 实现热部署

核心依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency> yaml配置 spring: #…

从逻辑学视角严谨证明数据加密的数学方法与实践

文章目录 一、加密数据的数学指纹&#xff1a;信息论基础1.1 加密检测的核心原理1.2 香农熵&#xff1a;量化信息的不确定性 二、统计检验方法&#xff1a;从随机性到加密性2.1 卡方检验的数学原理2.2 游程检验与序列相关性2.3 NIST统计测试套件 三、加密算法的特征识别3.1 对称…

敦煌网测评从环境搭建到风控应对,精细化运营打造安全测评体系

自养号测评&#xff0c;抢占流量为快速提升产品权重和销量&#xff0c;很多卖家常采用自己养号补单测评的方式&#xff0c;技术搭建需要很多要素 一、硬件参数的关联性 在我们使用设备进行注册或操作账号的过程中&#xff0c;系统会记录下大量的系统与网络参数&#xff0c;其中…

本地分支git push 报错 fatal: The current branch XXXX has no upstream branch.

背景&#xff1a; 我新建了一个本地分支叫做 “新增Saas修改需求”&#xff0c;然后当我提交代码执行 git push时报错如下&#xff0c;并且代码仓库中没有我新建的“新增Saas修改需求”这个分支。 报错信息&#xff1a; 解决方法&#xff1a; 直接采用方法2 ”git push -u orig…

Python----循环神经网络(WordEmbedding词嵌入)

一、编码 当我们用数字来让电脑“认识”字符或单词时&#xff0c;最简单的方法是为每个字符或单词分配一个唯一的编号&#xff0c;然后用一个长长的向量来表示它。比如&#xff0c;假设“我”这个字在字典中的编号是第10个&#xff0c;那么它的表示就是一个很多0组成的向量&…

CUDA的设备,流处理器(Streams),核,线程块(threadblock),线程,网格(‌gridDim),块(block)和多gpu设备同步数据概念

CUDA的设备,流处理器&#xff0c;核&#xff0c;线程块&#xff08;threadblock&#xff09;&#xff0c;线程&#xff0c;网格&#xff08;‌gridDim&#xff09;&#xff0c;块&#xff08;block&#xff09;和多gpu设备同步数据概念 CUDA的设备,流处理器&#xff0c;核&…

LeetCode 1340. 跳跃游戏 V(困难)

题目描述 给你一个整数数组 arr 和一个整数 d 。每一步你可以从下标 i 跳到&#xff1a; i x &#xff0c;其中 i x < arr.length 且 0 < x < d 。i - x &#xff0c;其中 i - x > 0 且 0 < x < d 。 除此以外&#xff0c;你从下标 i 跳到下标 j 需要满…

x-cmd install | cargo-selector:优雅管理 Rust 项目二进制与示例,开发体验升级

目录 功能亮点安装优势特点适用场景总结 还在为 Rust 项目中众多的二进制文件和示例而烦恼吗&#xff1f;cargo-selector 让你告别繁琐的命令行&#xff0c;轻松选择并运行目标程序&#xff01; 功能亮点 交互式选择&#xff1a; 在终端中以交互方式浏览你的二进制文件和示例&…

大模型「瘦身」指南:从LLaMA到MobileBERT的轻量化部署实战

大模型「瘦身」指南&#xff1a;从LLaMA到MobileBERT的轻量化部署实战 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 大模型「瘦身」指南&#xff1a;从LLaMA到MobileBERT的轻量化部署实战摘要引言一、轻量化技术…

从逻辑视角学习信息论:概念框架与实践指南

文章目录 一、信息论的逻辑基础与哲学内涵1.1 信息的逻辑本质&#xff1a;区分与差异1.2 逆范围原理与信息内容 二、信息论与逻辑学的概念交汇2.1 熵作为逻辑不确定性的度量2.2 互信息与逻辑依赖2.3 信道容量的逻辑极限 三、信息论的核心原理与逻辑基础3.1 最大熵原理的逻辑正当…

TDengine 运维—容量规划

概述 若计划使用 TDengine 搭建一个时序数据平台&#xff0c;须提前对计算资源、存储资源和网络资源进行详细规划&#xff0c;以确保满足业务场景的需求。通常 TDengine 会运行多个进程&#xff0c;包括 taosd、taosadapter、taoskeeper、taos-explorer 和 taosx。 在这些进程…

PPP 拨号失败:ATD*99***1# ... failed

从日志来看&#xff0c;主要有两类问题&#xff1a; 一、led_indicator_stop 报 invalid p_handle E (5750) led_indicator: …/led_indicator.c:461 (led_indicator_stop):invalid p_handle原因分析 led_indicator_stop() 的参数 p_handle &#xff08;即之前 led_indicator…

【计网】五六章习题测试

目录 1. (单选题, 3 分)某个网络所分配到的地址块为172.16.0.0/29&#xff0c;能接收目的地址为172.16.0.7的IP分组的最大主机数是&#xff08; &#xff09;。 2. (单选题, 3 分)若将某个“/19”的CIDR地址块划分为7个子块&#xff0c;则可能的最小子块中的可分配IP地址数量…

汇川EasyPLC MODBUS-RTU通信配置和编程实现

累积流量计算(MODBUS RTU通信数据处理)数据处理相关内容。 累积流量计算(MODBUS RTU通信数据处理)_流量积算仪modbus rtu通讯-CSDN博客文章浏览阅读219次。1、常用通信数据处理MODBUS通信系列之数据处理_modbus模拟的数据变化后会在原来的基础上累加是为什么-CSDN博客MODBUS通…

从 CANopen到 PROFINET:网关助力物流中心实现复杂的自动化升级

使用 CANopen PLC 扩展改造物流中心的传送带 倍讯科技profinet转CANopen网关BX-601-EIP将新的 PROFINET PLC 系统与旧的基于 CANopen 的传送带连接起来&#xff0c;简化了物流中心的自动化升级。 新建还是升级&#xff1f;这些问题通常出现在复杂的内部物流设施中&#xff0c;…

基于Yolov8+PyQT的老人摔倒识别系统源码

概述 ​​基于Yolov8PyQT的老人摔倒识别系统​​&#xff0c;该系统通过深度学习算法实时检测人体姿态&#xff0c;精准识别站立、摔倒中等3种状态&#xff0c;为家庭或养老机构提供及时预警功能。 主要内容 ​​完整可运行代码​​ 项目采用Yolov8目标检测框架结合PyQT5开发…