Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >mod_unimrcp从FreeSWITCH代码树中删除

mod_unimrcp从FreeSWITCH代码树中删除

作者头像
杜金房
发布于 2022-12-12 07:24:14
发布于 2022-12-12 07:24:14
3K00
代码可运行
举报
运行总次数:0
代码可运行

FreeSWITCH从代码树中删除了mod_unimrcp(https://github.com/signalwire/freeswitch/commit/3c7e8ff989355bf518eabaeea83036585e4782b7)。

这其实是一个“蓄谋”已久的操作,不要着急,听我慢慢讲。

MRCP的全称是Media Resource Control Protocol,即媒体控制协议。现在广泛用在语音合成语音识别等领域,大多数做人工智能(语音)的厂商现在也都支持该协议。UniMRCP(https://www.unimrcp.org/)是一个开源的实现。FreeSWITCH中有一个mod_unimrcp模块就是使用了这个库和开源的协议。

为什么移除呢?简单回答,就是为了更好。

那为什么说“蓄谋”已久呢?因为被一些事情耽搁了。

UniMRCP底层使用了APR(Apache Portabl Runtime)(https://apr.apache.org/)库,而FreeSWITCH底层也使用了APR库,所以,在FreeSWITCH中,他们共用同一个版本的APR。这很好。但是,随着时代的发展,当人们想升级UniMRCP时,发现问题了,那就是,FreeSWITCH用的APR库比较旧,而新版UniMRCP需要的库又比较新,升级不了了……

为什么FreeSWITCH不更新APR库吗?这就说来话长了。简单来说,那就是——升不了。

FreeSWITCH对APR库有一些改动。而这些改动并没有合并到上游的APR里。

为什么不能合并呢?说好的开源软件呢?不是说程序员一言不合就提交补丁吗?FreeSWITCH难道不能把自己修改的部分提交到上游的APR仓库里吗?

提交补丁很简单,但合并补丁还真不是那么简单。FreeSWITCH确实向APR提过补丁,但都是石沉大海。感兴趣的可以自行搜索一下,也可以参考以下这些链接。

  • https://bz.apache.org/bugzilla/show_bug.cgi?id=56948
  • https://bz.apache.org/bugzilla/show_bug.cgi?id=56947

所以,后来,FreeSWITCH就一直用旧版本的APR。因而导致UniMRCP也无法升级。

不过,时隔多年,FreeSWITCH团队终于解决了这个问题。解决方式也简单粗暴。把FreeSWITCH自己用的APR改成fspr。这样,就可以把mod_unimrcp移出FreeSWITCH代码树,放到独立的仓库中(https://github.com/freeswitch/mod_unimrcp/pull/1)。新的模块也转由社区维护,想咋升咋升。

什么?那mod_unimrcp是不是转为二等公民了?是,也不是。

首先,你可以自行编译,单独编译一个模块比放在FreeSWITCH里简单多了,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git clone https://github.com/freeswitch/mod_unimrcp.git$ cd mod_unimrcp$ export PKG_CONFIG_PATH=/usr/local/freeswitch/libs/pkgconfig:/usr/local/unimrcp/libs/pkgconfig$ ./bootstrap.sh$ ./configure

详情可参见该模块的README(https://github.com/freeswitch/mod_unimrcp)。

其实,FreeSWITCH早就发明了一套机制,在FreeSWITCH主代码树的modules.conf中引用一个外部模块,编译还是像以前那样make install,没有任何不和谐。比如:

之前:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
asr_tts/mod_unimrcp

现在:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mod_unimrcp|https://github.com/freeswitch/mod_unimrcp -b master

你甚至可以把你自己写的模块也放一条记录到modules.conf中去,只要你写得足够好,大家都愿意用,甚至也可以变成FreeSWITCH缺省的安装模块。

这是今年FreeSWITCH最大的改变,希望未来会越来越好。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeSWITCH中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker_002
Dockerfile_redis_5.0 FROM debian:buster-slim # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added RUN groupadd -r -g 999 redis && useradd -r -g redis -u 999 redis # grab gosu for e
Cyylog
2020/08/19
5300
【Rust 日报】2020-06-10 RustCrypto 发布了多种密码学库
新发布的密码学库包括:aead, block-cipher, crypto-mac, digest, signature, stream-cipher 等,其中几乎所有的 crates 都是用纯 Rust 开发的。
MikeLoveRust
2020/06/19
9200
AI时代,FreeSWITCH能做什么?
那么,智能时代跟FreeSWITCH什么关系呢?严格来说,其实没什么关系。你看,我今天又标题党了。
杜金房
2020/12/21
1.7K0
超级好用的FreeSWITCH资源列表
A curated list of awesome FreeSWITCH resources, modules, frameworks, libraries and software. Inspired by awesome-go.
杜金房
2022/12/12
1.4K0
FreeSWITCH新手指南
欢迎使用FreeSWITCH。本文最早写于2009年,最后更新时间是2022年6月4日。
杜金房
2022/12/12
2.2K0
FreeSWITCH新手指南
tomcat类加载-源码解析
继上文,那么你可能跟我开始一样,tomcat的类加载与我们的java有什么区别?是一样的还是有哪些区别?其次tomcat项目怎么隔离?其三tomat如何打破双亲委派机制?
逍遥壮士
2022/12/01
4890
tomcat类加载-源码解析
FreeSWITCH如何集成AMR/AMR-WB编解码
FreeSWITCH对AMR和AMR-WB两种编码格式默认为passthough状态,若想对AMR和AMR-WB进行编解码,需对mod_amr和mod_amrwb两个模块重新编译。
杜金房
2024/04/11
4670
FreeSWITCH如何集成AMR/AMR-WB编解码
Jmeter(三十九) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 - 上篇(详解教程)
为什么宏哥要对Jmeter的配置文件进行一下讲解了,因为有的童鞋或者小伙伴在测试中遇到一些需要修改配置文件的问题不是很清楚也不是很懂,就算修改了也是模模糊糊的。更有甚者觉得那是禁地神圣不可轻犯不敢触碰不敢修改,害怕修改错了Jmeter运行不了了。听宏哥的大胆修改大不了再重新安装一个新的Jmeter,或者你有做备份的好习惯,在修改前备份好以后大胆修改,修改错了直接使用备份文件恢复过来就可以。
北京-宏哥
2021/03/30
1.4K0
Jmeter(三十九) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 - 上篇(详解教程)
FreeSwitch Linux(CentOS 6.5) 安装教程
这是资源站点,自行选择版本:http://files.freeswitch.org/freeswitch-releases/
Jensen_97
2023/07/19
8520
Apache CVE-2017-7659漏洞重现及利用分析
近日,apache在其网站发布了最新的安全公告,其中涉及多个漏洞。针对CVE-2017-7659漏洞的介绍是这样的: A maliciously constructed HTTP/2 request could cause mod_http2 to dereference a NULL pointer and crashthe server process. 可以看到这是apache WEB服务器(httpd)中的一个HTTP 2.0协议处理的漏洞。未然实验室安全研究人员针对此漏洞的技术细节和利用方法进行了
FB客服
2018/02/28
2.5K0
Apache CVE-2017-7659漏洞重现及利用分析
FreeSWITCH对接vosk实现实时语音识别
vosk是一个开源语音识别工具,可识别中文,之前介绍过python使用vosk进行中文语音识别,今天记录下FreeSWITCH对接vosk实现实时语音识别。 vosk离线语音识别可参考我之前写的文章:
麦壳儿
2023/05/04
5.6K2
FreeSWITCH与Asterisk
今天,本来想多写点东西的,可是陪孩子玩的多了,就没有时间了。前两天有朋友问到FreeSWITCH有取代或超越Asterisk的历史地位的可能吗?简单回答一下:我认为,Asterisk的历史地位在于它是开源的VoIP软件的先驱,它的历史地位是谁都不可能替代的。但是,如果说到应用及规模,我倒认为FreeSWITCH的前景是很好的。下面是我以前翻译的一篇文章,与大家分享一下。该文章原载于:http://www.freeswitch.org.cn/2010/01/23/freeswitch-yu-asterisk.html ,也可以点击左下角的「查看原文」查看。
杜金房
2020/12/21
3K0
在FreeSWITCH中写一个简单的IVR
IVR(Interactive Voice Response)即交互式语音应答,也就是我们说的电话语音菜单,可以使用预先录制的语音或者TTS进行自动应答,提供菜单导航,主要用于呼叫中心系统。我们主要介绍FreeSWITCH提供的IVR功能。
杜金房
2022/12/12
4.4K2
在FreeSWITCH中写一个简单的IVR
如何在XSwitch中使用mod_unimrcp
MRCP(Media Resource Control Protocol)媒体资源控制协议,是语音服务器用来向客户端提供各种服务(比如我们熟悉的语音识别和语音合成)的通信协议。MRCP需要承载于其他协议之上,如RTSP (Real Time Streaming protocol)或SIP (Session Initiation protocol),MRCP协议有两个版本,版本v1依赖于RTSP协议来创建媒体流和数据传输,但版本V1兼容性较差,很难兼容不同厂家的扩展要求。版本v2使用了SIP来负责会话和媒体的创建,增加了扩展性,保证了兼容性,目前大多数使用的都是V2版本。
杜金房
2024/03/18
3881
如何在XSwitch中使用mod_unimrcp
CentOS 6.5上编译安装httpd-2.4和2.4版本特性介绍
1) MPM支持在运行时装载; --enalbe-mpm-shared=all --with-mpm={prefork|worker|event} 2) 支持event mpm 3) 异步读写 4) 在每模块及每目录分别使用不同的日志级别 5) 每请求的配置: <If>,<Elseif> 6) 增强版的表达式分析器 7) 毫秒级的keep alive的timeout 8) 基于FQDN的虚拟主机不再需要NameVirtualHost指令; 9) 支持用户使用自定义变量
星哥玩云
2022/07/04
5900
CentOS 6.5上编译安装httpd-2.4和2.4版本特性介绍
一个FreeSWITCH Bug修复手记
今天有人在微信群里提了一个问题:“杜老师,想麻烦您看一下,电话打进去之后就会出现崩溃,卡了两天了,麻烦您有时间可否帮忙看一下,多谢多谢了,加您好友了。”
杜金房
2022/04/28
7770
FreeSWITCH 1.10.7发布
该版本是近几年发布的最大的一个版本,有300多个提交,修复了5个安全漏洞,修复了很多潜在的问题并增加了很多实用功能,移除了freetdm模块并增加了mod_python3。新版本支持Debian 11(bullseye)。
杜金房
2021/11/02
1.8K0
FreeSWITCH之视频录像
我们先看例子 default/0020_record…..xml,我们一行一行的讲。
杜金房
2020/12/21
2.9K0
初探Tomcat的架构设计
本文将基于 Tomcat8 进行分析,具体版本为 Tomcat8 当前官网最新修改(2019-11-21 09:28)的版本 v8.5.49
Bug开发工程师
2019/11/28
4120
基于Freeswitch的语音视频通话
之前写过一篇《阿里云 opensips nat内网穿透》,当时是为了解决对讲机视频对讲的问题。但是之前的方案存在一个问题,那就是虽然服务器能够正常提供服务。但是在接通之后如果设备不在同一个局域网内就会导致有音频但是没有视频信息。这个问题困扰了很久,直到现在算是能够解决这个问题。出现上面这个问题的根本原因在于设备的网络层次关系太过复杂,视频信息没有办法透传。我不是语音视频方面的专家,集中nat结构我也不在叙述了,感兴趣的访问这个链接:https://www.cnblogs.com/zhumengke/articles/11204924.html
obaby
2023/02/22
4.5K0
相关推荐
Docker_002
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验