当前位置: 首页 > news >正文

FreeSWITCH 智能呼叫流程设计

文章目录

  • 1. 智能呼叫流程
  • 2. 细节处理
      • 1. 呼叫字符串指定拨号计划
      • 2. 外呼的拨号计划
      • 3. 语音打断的支持

1. 智能呼叫流程

用户与机器人对话通常都是以文本的形式进行,但是借助 ASR 和 TTS 技术,以语音电话为载体的智能呼叫系统成为可能。智能呼叫系统涉及到多种不同类型的应用,以 FreeSWITCH 为交互核心的一种简要实现如下图所示,关键点为以下几个步骤:

  1. esl 客户端通过内连向 FreeSWITCH 实例下发 originate 命令,呼叫目标用户
  2. FreeSWITCH 进行呼叫动作,等待用户接通
  3. 呼叫后会话状态流转,FreeSWITCH 根据呼叫字符串确定这个 channel 上路由命中的拨号计划,执行拨号计划上配置的 socket APP 外连目标服务器
  4. esl 客户端接收 FreeSWITCH 外连连接后订阅该 channel 上的相应事件,并与 AI 机器人对话获取开场白
  5. 获得开场白文本后 esl 客户端下发命令,在用户 channel 上执行 play_and_detect_speech APP,实现开场白放音并开启 ASR 识别用户语音
  6. FreeSWITCH 与外部集成的 MRCP 服务器交互,使用其 TTS 和 ASR 功能
  7. 用户说话后,esl 客户端监听相应事件获取 ASR 的识别结果,然后使用识别到的文本与 AI 机器人进行对话,得到响应后从步骤5重新开始执行,直到用户挂机

在这里插入图片描述

2. 细节处理

1. 呼叫字符串指定拨号计划

呼叫外部用户的命令示例如下,该例子中通过拨号字符串指定了以下信息:

  1. 通过网关 10086 呼叫目标用户 1008611
  2. 在用户会话 CS_ROUTING 阶段使用 10008611 作为 destination_number 去路由匹配 XML 拨号计划配置,进而确定在这个 channel 上的执行动作
originate {originate_timeout=10,origination_uuid=888888,origination_caller_id_number=1008611,origination_caller_id_name=1008611}sofia/gateway/10086/1008611 1008611 XML default

2. 外呼的拨号计划

呼叫用户的拨号计划配置示例如下,需注意以下几点:

  1. 通过 tts_engine 指定默认使用的 tts 引擎,该参数候选值为安装目录下 conf/mrcp_profiles 文件夹中的 XML 文件配置的 profile 名称
  2. 使用 tts_voice 指定默认音色
  3. 通过 play_and_detect_speech_close_asr 参数指定 play_and_detect_speech APP 执行完毕后自动关闭 ASR
<extension name="outbound"><condition field="destination_number" expression="^1008611"><action application="ring_ready"/><action application="answer"/><action application="set" data="tts_engine=unimrcp:unimrcp-mrcp2"/><action application="set" data="tts_voice=aixia"/><action application="set" data="play_and_detect_speech_close_asr=true"/><action application="socket" data="127.0.0.1:9000 async full"/></condition>
</extension>

3. 语音打断的支持

play_and_detect_speech APP 会先打开 ASR 识别用户语音然后才放音,放音时会被用户的语音流打断。如果要实现不可打断的特性,可通过将放音和 ASR 识别拆成两个步骤达到目的,具体处理如下:

  1. 与用户交互时不使用 play_and_detect_speech,而是在 channel 上直接调用 speak 等 APP 放音
  2. esl 监听到放音 APP 执行完毕,再下发 detect_speech APP 打开 ASR 识别用户语音

相关文章:

FreeSWITCH 智能呼叫流程设计

文章目录1. 智能呼叫流程2. 细节处理1. 呼叫字符串指定拨号计划2. 外呼的拨号计划3. 语音打断的支持1. 智能呼叫流程 用户与机器人对话通常都是以文本的形式进行&#xff0c;但是借助 ASR 和 TTS 技术&#xff0c;以语音电话为载体的智能呼叫系统成为可能。智能呼叫系统涉及到…...

什么是Restful风格

什么是RestFul风格&#xff1f; Restful就是一个资源定位及资源操作的风格。不是标准也不是协议&#xff0c;只是一种风格。基于这个风格设计的软件可以更简洁&#xff0c;更有层次&#xff0c;更易于实现缓存等机制。 REST即Representational State Transfer的缩写&#xff0…...

sumifs的交叉 表的例子

比如这样&#xff0c;那么冰箱绿山店的栏位中&#xff0c;SUMIFS($D$3:$D$10,$B$3:$B$10,$F3,$C$3:$C$10,G$2)就是把求和范围&#xff0c;条件1设置为固定列的复合引用&#xff0c;条件2设置为固定行的复合引用即可。...

React :一、简单概念

目录 1.什么是React&#xff1f; 2.谁开发的 3.为什么要学React&#xff1f; 4.React的特点&#xff1f; 5.React依赖包 6.第一个React程序 7.虚拟DOM的两种创建方法 8.虚拟DOM和真实DOM 1.什么是React&#xff1f; 用于构建用户界面的JavaScript库&#xff0c;是一个将…...

Actipro WinForms Studio Crack

Actipro WinForms Studio Crack 已验证Microsoft.NET 7兼容性。 添加了MetroDark配色方案。 添加了支持MetroLight和MetroDark颜色方案的MetroScrollBarRenderer。 添加了IWindowsColorScheme接口&#xff0c;该接口将替换对WindowsColorScheme的大多数引用。 添加了IWindowsCo…...

英伦四地到底是什么关系?

英格兰、苏格兰、威尔士和北爱尔兰四地到底是什么关系&#xff0c;为何苏格兰非要独立&#xff1f;故事还要从中世纪说起。大不列颠岛位于欧洲西部&#xff0c;和欧洲大陆隔海相望。在古代&#xff0c;大不列颠岛和爱尔兰属于凯尔特人的领地。凯尔特人是欧洲西部一个庞大的族群…...

Google三大论文之GFS

Google三大论文之GFS Google GFS&#xff08;Google File System&#xff09; 文件系统&#xff0c;一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。GFS 虽然运行在廉价的普遍硬件设备上&#xff0c;但是它依然了提供灾难冗余的能力&#xff0c;为大量客户机提供了…...

嵌入式安防监控项目——exynos4412主框架搭建

目录 一、模块化编程思维 二、安防监控项目主框架搭建 一、模块化编程思维 其实我们以前学习32使用keil的时候就是再用模块化的思维。每个硬件都单独有一个实现功能的C文件和声明函数&#xff0c;进行宏定义以及引用需要使用头文件的h文件。 比如简单的加减乘除取余操作我们…...

YOLOv5s网络模型讲解(一看就会)

文章目录前言1、YOLOv5s-6.0组成2、YOLOv5s网络介绍2.1、参数解析2.2、YOLOv5s.yaml2.3、YOLOv5s网络结构图3、附件3.1、yolov5s.yaml 解析表3.2、 yolov5l.yaml 解析表总结前言 最近在重构YOLOv5代码&#xff0c;本章主要介绍YOLOv5s的网络结构 1、YOLOv5s-6.0组成 我们熟知YO…...

kkfileView linux 离线安装

文章目录前言一、安装 LiberOffice二、安装kkfileView1.下载安装包2.启动总结前言 一、安装 LiberOffice 下载https://kkfileview.keking.cn/LibreOffice_7.1.4_Linux_x86-64_rpm.tar.gz 安装 tar -zxvf LibreOffice_7.1.4_Linux_x86-64_rpm.tar.gz cd LibreOffice_7.1.4.2_L…...

如何编写BI项目之ETL文档

XXXXBI项目之ETL文档 xxx项目组 ------------------------------------------------1---------------------------------------------------------------------- 目录 一 、ETL之概述 1、ETL是数据仓库建构/应用中的核心…...

【LeetCode】剑指 Offer 24. 反转链表 p142 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/submissions/ 1. 题目介绍&#xff08;24. 反转链表&#xff09; 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。 【测试用例】&#xff1a; 示…...

LAY-EXCEL导出excel并实现单元格合并

通过lay-excel插件实现Excel导出&#xff0c;并实现单元格合并&#xff0c;样式设置等功能。更详细描述&#xff0c;请去lay-excel插件文档查看&#xff0c;地址&#xff1a;http://excel.wj2015.com/_book/docs/%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B.html一、安装这里使用Vue…...

配置VM虚拟机Centos7网络

配置VM虚拟机Centos7网络 第一步&#xff0c;进入虚拟机设置选中【网络适配器】选择【NAT模式】 第二步&#xff0c;进入windows【控制面板\网络和 Internet\网络连接】设置网络状态。 我们选择【VMnet8】 点击【属性】查看它的网络配置 2 .我们找到【Internet 协议版本 4(TCP…...

Kafka 位移主题

Kafka 位移主题位移格式创建位移提交位移删除位移Kafka 的内部主题 (Internal Topic) : __consumer_offsets (位移主题&#xff0c;Offsets Topic) 老 Consumer 会将位移消息提交到 ZK 中保存 当 Consumer 重启后&#xff0c;能自动从 ZK 中读取位移数据&#xff0c;继续消费…...

详细讲解零拷贝机制的进化过程

一、传统拷贝方式&#xff08;一&#xff09;操作系统经过4次拷贝CPU 负责将数据从磁盘搬运到内核空间的 Page Cache 中&#xff1b;CPU 负责将数据从内核空间的 Page Cache 搬运到用户空间的缓冲区&#xff1b;CPU 负责将数据从用户空间的缓冲区搬运到内核空间的 Socket 缓冲区…...

2023年场外个股期权研究报告

第一章 概况 场外个股期权&#xff08;Over-the-Counter Equity Option&#xff09;&#xff0c;是指由交易双方根据自己的需求和意愿&#xff0c;通过协商确定行权价格、行权日期等条款的股票期权。与交易所交易的标准化期权不同&#xff0c;场外个股期权的合同内容可以根据交…...

k8s pod,ns,pvc 强制删除

一、强制删除pod$ kubectl delete pod <your-pod-name> -n <name-space> --force --grace-period0解决方法&#xff1a;加参数 --force --grace-period0&#xff0c;grace-period表示过渡存活期&#xff0c;默认30s&#xff0c;在删除POD之前允许POD慢慢终止其上的…...

力扣第99场双周赛题目记录(复盘)

第一题 2578.最小和分割 给你一个正整数 num &#xff0c;请你将它分割成两个非负整数 num1 和 num2 &#xff0c;满足&#xff1a; num1 和 num2 直接连起来&#xff0c;得到 num 各数位的一个排列。 换句话说&#xff0c;num1 和 num2 中所有数字出现的次数之和等于 num 中所…...

spring事务失效原因

一.抛出事务不支持的异常 原理&#xff1a; Spring事务默认支持RuntimeException异常&#xff0c;抛出的异常为RuntimeException异常及其子类异常事务均可生效&#xff0c;而我们日常常见的异常基本都继承自RuntimeException&#xff0c;所以无需指定异常类型事务也能生效。 但…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...