最佳的开源网络视频会议音频编码库:Speex-阿里云开发者社区

开发者社区> 青衫无名> 正文

最佳的开源网络视频会议音频编码库:Speex

简介:
+关注继续查看

在网络视频会议开发领域,我们有许多开源的音频编码库可以供选择,如G.7x系列、ACC、AC3、Speex等音频编码库,但由于网络视频会议可能会在无QOS保证的网络中传输数据,所以不仅要求音频编码器可以传输实时的高质量的音频数据,还需要保证带宽足够小,满足不同带宽的需求。因此一些宽带的编码器,如ACC、AC3等,其传输需要较大的带宽,就很难适应网络视频会议的低带宽传输要求。Speex是一个基于CELP算法的开源编码器,其可以支持从窄带(2kb)到宽带(44kbs)的音频传输,最少的音频传输带宽可以达到500字节每秒,是目前压缩率最高的音频编码器之一。Speex除了以上的特点外,还具有一些可供网络会议使用的特性。

1、 数据丢包掩饰

在网络视频会议的传输过程中,由于网络的带宽存在着波动性,因此有时候我们传输的数据会在网络中出现延迟甚至会产生丢包现象,大部分的音频编码器,当其接收的数据出现丢包,可能声音就会出现不连续的情况。而Speex的丢包掩饰功能可以使局部丢包不影响整体的音频质量。经测试当超过5%的丢包的时候,GSM、G.72x的语音质量会严重下降,而当我们采用Speex进行传输的时候,其语音质量没有出现较大变化,这证明Speex的丢包掩饰确实能解决局部丢包的问题。由于网络视频会议有时候会出现网络堵塞的情况,从而出现数据丢包现象,因此Speex的数据丢包掩饰对网络视频会议克服丢包的影响非常有作用。

2、 可变数据流

Speex具有先进的可变数据流传输方式,其通过音频静音检测,Speex可以在静音的情况不发送任何数据;而通过调整语音的传输质量,动态改变语音的传输带宽,使语音在主观上更为出色。

3、 回声抑制

网络视频会议系统的语音一般都是双向的,如果其中一方把外置的声音传输到其麦克风上,就很容易出现回声的现象。Speex编码库提供回声消除功能,可以通过近端和远端的数据包进行叠加,从而消除静音,但由于网络视频会议的语音接收和发送线程都是分开,因此需要对两个线程进行同步才能进行回声消除。

4、 自动增益控制

网络视频会议系统的声音采集通常可以为耳麦、鹅颈麦克风等,不同的麦克风的其拾音半径都不一样,而且有时候我们会议发言者的位置可能会移动,如采集同样的声音大小,其声音就会有时大、有时小,通过语音自动增益控制,通过放大或者降低声强,我们可以获得大致一直的声音强度,避免了语音跳跃的情况。

5、 噪声消除

在会议中可能会遇到对方的环境噪声造成语音质量下降的情况,Speex可以对环境噪声进行判断,并消除这些噪声,提高了语音的质量。

6、 强化的立体声编码

Speex除了能压缩一般语音数据,还可以对立体声数据进行编码。
**
7、 跨平台**

Speex可以在不同的平台上编译,如Android、IOS系统,因此非常适合我们的视频会议系统的移动终端的音频压缩库。

总结,通过Speex的多项特性证明,Speex是目前最佳的开源网络视频会议音频编码库,Speex编码不仅仅是一个开源的编码器,其还具有网络视频会议音频处理所需要的一些重要的功能。

本文转自d1net(转载)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
k8s与网络--Flannel源码分析
之前在k8s与网络--Flannel解读一文中,我们主要讲了Flannel整体的工作原理。今天主要针对Flannel v0.10.0版本进行源码分析。首先需要理解三个比较重要的概念: 网络(Network):整个集群中分配给 flannel 要管理的网络地址范围 子网(Subnet):flanne.
1639 0
领课网络在线教育系统开源项目
领课在线教育开源系统是基于领课团队多年的在线教育开发和运营经验的产品
3113 0
用python wxpy管理微信公众号,并利用微信获取自己的开源数据。
用python wxpy管理微信公众号,并利用微信获取自己的开源数据。之前了解到itchat 乃至于 wxpy时 是利用tuling聊天机器人的接口。调用接口并保存双方的问答结果可以作为自己的问答词库的一个数据库累计。
4538 0
Android开发17——获取网络资源之XML数据
一、项目背景在Android开发中有一项非常广泛的应用:Android项目获取另一个web项目的资源或者返回的数据。 本文获取web项目返回的XML数据。     二、实例代码   Web项目 /** * 新闻业务类 * * @author xy * */ public class VideoNewsServiceImpl implements VideoNew
977 0
生成对抗网络入门指南(内含资源和代码)
生成对抗网络是由两个相互竞争的网络组成的深度神经网络架构。本文对其进行详细讲解,并附上大量相关英文文章链接供参考。
7536 0
05.Java网络编程(代码实践)
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路链接起来,在网络操作系统,网络管理软件及网络通信协议的协调下,实现资源贡献和信息传递的计算机系统 网络编程就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换 网...
789 0
IPerf——网络测试工具介绍与源码解析(1)
IPerf是一个开源的测试网络宽带并能统计并报告延迟抖动、数据包丢失率信息的控制台命令程序,通过参数选项可以方便地看出,通过设置不同的选项值对网络带宽的影响,对于学习网络编程还是有一定的借鉴意义,至少可以玩上一段时间。
1028 0
IPerf——网络测试工具介绍与源码解析(3)
【线程的生成】   生成线程时需要传入一个thread_Settings类型的变量,thread_Settings包含所有线程运行时需要的信息,命令行选项参数解析后所有得到的属性都存储到该类型的变量中,作为线程生成的传入值能够决定当前线程扮演的角色。
753 0
基于归纳网络的少样本文本分类 | EMNLP 2019 会议论文解读
深度学习方法在数据稀缺的场景下往往表现很差,在这种挑战性的场景下,近期的工作往往使用meta-learning的方法来模拟少样本学习任务,通过在样本级别把query和支撑集进行比较来完成分类。
2161 0
+关注
3598
文章
840
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载