通过顶顶通呼叫中心中间件玩转FreeSWITCH媒体流

简介: 怎么获取FreeSWITCH的媒体流是一个老生常谈的问题了,最常见的方法media_bug 很多人需要直接获取原始的声音流,然后自己处理,其实FreeSWITCH也是支持的,只是知道的极少,FreeSWITCH原生支持 unicast 通过udp 把声音流推送到一个UDP端口,和播放网络的声音流。 fs实现的unicast,有一个缺陷如果启动了unicast 就没办法调用playback等放音函数了。

怎么获取FreeSWITCH的媒体流是一个老生常谈的问题了,最常见的方法media_bug,我在2019年就做的FreeSWITCH对接ASR开源的例子https://gitcode.net/iyaosan/FreeSWITCH-ASR用的就是media_bug,对接ASR常见的方法还有通过mod_mrcp模块对接mrcp的asrserver。

很多人需要直接获取原始的声音流,然后自己处理,其实FreeSWITCH也是支持的,只是知道的极少,FreeSWITCH原生支持 unicast 通过udp 把声音流推送到一个UDP端口,和播放网络的声音流。 fs实现的unicast,有一个缺陷如果启动了unicast 就没办法调用playback等放音函数了。

通过顶顶通呼叫中心中间件提供的 cti_unicast 则没这个缺点。可以不影响fs本身所有的功能情况下把媒体流推送到 远端udp端口,和播放网络声音。

cti_unicast 通过media_bug挂了2个回调SMBF_READ_STREAM和SMBF_WRITE_REPLACE,其中 SMBF_READ_STREAM,用来把媒体流推送到远端UDP端口,SMBF_READ_STREAM用来把远端发送来的声音混音到fs的放音。从而实现了完全不影响fs自身功能的前提下,实现推流和播放流。

顶顶通呼叫中心中间件还提供了tcp的推流和播放流函数 cti_audiao_stream。

这2个函数可以通过拨号方案启动,也可以通过 freeswitch esl 接口调用。

还有websocekt协议的播放流函数 wss://ip/tts?text=文字 可用于对接实时TTS。

顶顶通呼叫中心中间件ASR接口更高级的2个函数是
uuid_cti_start_detect_speech
用于质检 ,检测到说话实时推流给ASR,支持weboscket,mrcp等多种协议。用户说话停止自动停止推流。
cti_play_and_detect_speech
用于电话机器人,放音的时候检测用户说话,检测到说话实时推流给ASR,支持weboscket,mrcp等多种协议。支持多种打断模式,比如检测到人声打断,识别到多少文字打断。

详细可以看 http://www.ddrj.com/callcenter/asr.html

相关文章
|
存储 机器学习/深度学习 人工智能
顶顶通呼叫中心中间件介绍
顶顶通呼叫中心中间件包含IPPBX、自动外呼、质检、ACD、呼叫路由等呼叫中心功能,也包含电话机器人开发接口(ASR【对接了华为云,腾讯云,科大讯飞,阿里云,捷通华声等,mrcp等语音识别接口】,TTS【支持外呼时预先文字转换成声音和mrcp实时TTS】,VAD【集成噪音人声识别引擎】),话术引擎等ai机器人功能。所有数据都存储redis【话单可以存储到数据库】,支持群集,超大并发,可用于开发呼叫中心系统,智能外呼机器人系统,机器人客服系统。
712 100
|
Java 数据库连接 数据库
FreeSwitch实现简单呼叫中心功能
FreeSwitch实现简单呼叫中心功能
|
消息中间件 存储 负载均衡
消息中间件的选择:RabbitMQ是一个明智的选择
消息中间件的选择:RabbitMQ是一个明智的选择
320 0
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
13885 1
|
消息中间件 编解码 Docker
Docker部署RabbitMQ消息中间件
【7月更文挑战第4天】Docker部署RabbitMQ消息中间件
578 3
|
消息中间件 编解码 Docker
【Docker项目实战】Docker部署RabbitMQ消息中间件
【10月更文挑战第8天】Docker部署RabbitMQ消息中间件
861 2
【Docker项目实战】Docker部署RabbitMQ消息中间件
|
消息中间件 数据库
消息中间件系列教程(18) -RabbitMQ-基于RabbitMQ解决分布式事务(思想)
消息中间件系列教程(18) -RabbitMQ-基于RabbitMQ解决分布式事务(思想)
449 0
|
消息中间件
消息中间件系列教程(17) -RabbitMQ-死信队列
消息中间件系列教程(17) -RabbitMQ-死信队列
347 0
|
消息中间件
消息中间件系列教程(16) -RabbitMQ-应答模式
消息中间件系列教程(16) -RabbitMQ-应答模式
216 0