Speex
简介
Speex是一套主要针对语音的开源免费,无专利保护的音频压缩格式。Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛。另外,相对于其它编解码,Speex也很适合网络应用,在网络应用上有着自己独特的优势。同时,Speex还是GNU工程的一部分,在改版的BSD协议中得到了很好的支持。Speex是基于CELP并且专门为码率在2-44kbps的语音压缩而设计的。Speex源码是基于c语音实现的(也有Java实现,效率相对较低)。
特性
· 开源的自由软件,免专利,免版权
· 通过嵌入的比特流集成窄带和宽带
· 可大范围改变比特率(bit-rate)(从2.15kbps到44kbps)
· 动态比特率交换(AMR)和变比特率(VBR)操作
· 静音检测(VAD,和变比特率(VBR)集成)和非连续性传输(DTX)
· 可变复杂度
· 嵌入的宽带结构(可变的比特率)
· 32kHz的超宽带采样率
· 强立体声编码选项
· 定点执行
节约流量。使用Speex来压缩音频文件,可以将音频压文件小数倍。
speex编解码在android上实现
http://blog.csdn.net/xyz_lmn/article/details/8013490
资源地址
speex 回声消除的用法
http://www.cnblogs.com/kinyer/p/3326570.html
Speex回声消除原理深度解析
http://blog.csdn.net/leixiaohua1020/article/details/51187668
Speex回声消除代码分析
http://blog.csdn.net/leixiaohua1020/article/details/50159563
speex算法在android上的移植
http://www.360doc.com/content/15/0818/07/9200790_493005949.shtml
Speexmanul(手册)中文版
http://www.cnblogs.com/rosesmall/archive/2012/04/18/2455395.html
编译speex
http://www.cnblogs.com/chef/archive/2012/07/19/2599067.html
基于C的Speex 音频编解码
http://www.cnblogs.com/myitm/archive/2011/07/21/2113299.html
SPEEX抖动缓存
http://blog.163.com/yuan_zhch/blog/static/193790046201172743047588/
Opus音频编解码库
简介
Opus是一款完全开放,免版税,高度通用的音频编×××。Opus是通过互联网进行交互式语音和音乐传输的无与伦比的,同时也适用于存储和流媒体应用。它由互联网工程任务组(IETF)标准化为RFC 6716,其中包含Skype的SILK编×××和Xiph.Org的CELT编×××的技术。
特性
Opus的前身是celt编码器。在当今的有损音频格式争夺上,拥有众多不同编码器的AAC格式打败了同样颇有潜力的Musepack、Vorbis等格式,而在Opus格式诞生后,情况似乎不同了。通过诸多的对比测试,低码率下Opsu完胜曾经优势明显的HE AAC,中码率就已经可以媲敌码率高出30%左右的AAC格式,而高码率下更接近原始音频。
以上来自百度百科(PS:百度百科对opus的介绍都很少)
简单来说,opus是一个高保真的适合在网络中传输的开源的语音编码格式,相对于其他编码格式来讲,保真性更好,但体积会稍微大一些。
² 比特率从6 kb / s到510 kb / s
² 从8 kHz(narrowband)到48 kHz(全频)的采样率
² 帧大小从2.5 ms到60 ms
² 支持恒定比特率(CBR)和可变比特率(VBR)
² 音频带宽从窄带到全频
² 支持言语和音乐
² 支持单声道和立体声
² 支持多达255个通道(多帧)
² 动态可调比特率,音频带宽和帧大小
² 良好的稳定性和丢包隐藏(PLC)(Good loss robustness and packet loss concealmen)
² 浮点和定点实现
地址
官网
https://www.opus-codec.org/
编译 Android 版本的 Opus 音频编解码库的方法
http://www.linuxidc.com/Linux/2015-12/126094.htm
ffmpeg
简介
FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能1,包含了libavcodec─这是一个用于多个项目中音频和视频的×××库,以及libavformat——一个音频与视频格式转换库。
ffmpeg 是1个非常快速的音视频转换器,还能够从实时的音视频流源中获得音视频。它还能在任意的采样率之间转化.
资源地址
官网
http://ffmpeg.org/
雷神零基础学习ffmpeg
http://blog.csdn.net/leixiaohua1020/article/details/15811977/
入门
http://www.fx114.net/qa-244-147595.aspx
iLBC-Android
简介
iLBC 是为专为提供稳健的 IP 语音通信而开发的语音 codec,以窄带语音为设计基础,具有 8 kHz 的采样率。iLBCcodec 支持两种基本的帧长度:13.3kbps 比特率下编码帧长度为30 ms;而15.2 kbps比特率下编码帧长度则为20 ms。
采用 iLBC 算法可以获得一个具有丢包响应控制的语音编码系统。iLBC对每一个数据包的处理都能够独立于其它数据包来进行,是数据包通信的理想选择。即使IP 丢包和/或延迟现象的恶化,这种 codec 的语音质量下降情况也不会太差。这与基于CEIP 模型的一般codec 的行为不同,这类codec 最先是为交换电路网络或无线网络而设计的,是设计来恢复位错误而非丢包的。
丢包现象发生时,语音codec 的一项相关基准是从单个丢包情况下恢复过来所需的帧/包数量。在 iLBC 的情况中,数量是零。在丢包之后的第一个数据包总仍能按原本安排的被精确解码。
iLBC 是一种窄带语音codec,使用了整个4kHz 频带,而大多数标准低比特率codec 只利用从300 Hz 到3400 Hz 的频带。这一点对音质的影响是相当明显的。此外,iLBC语音编码的频谱特性精确模拟了原始信号的特性,其语音比标准低比特率codec 的更自然清晰。
总而言之,iLBC 算法为数据包网络实现了尖端的固定比特率编码,在质量与比特率之间取得了非常出色的平衡。
源码地址
https://github.com/bjdodson/iLBC-Android
code.google:(http://code.google.com/p/android-ilbc/)
Android-ilbc的Demo(国内):http://download.csdn.net/detail/xyz_lmn/4594662
OpenSL ES
简介
OpenSL ES(用于嵌入式系统的开放式声音库)是用于2D和3D音频的免版税,跨平台,硬件加速的C语言音频API。它提供对3D位置音频和MIDI播放等功能的访问。它是为移动和游戏行业的开发人员制造的,并且正在努力允许在多个平台上轻松移植应用程序。
OpenSL ES 提供了一个 C 语言接口,您也可以使用C++ 访问此接口。它提供了类似于下列 Android Java API 音频部分的功能:
android.media.MediaPlayer
android.media.MediaRecorder
地址
Android音频开发之OpenSL ES
http://www.jianshu.com/p/2b8d2de9a47b
· OpenSLES
官网
· OpenSLES
Wiki
· Google官方的OpenSLES
介绍
· Android OpenSL ES
编程要点
· 高性能音频基础
AAC音频编码
MPEG-2的音频编码技术。由Fraunhofer IIS、杜比实验室、AT&T、Sony等公司共同开发,目的是取代MP3格式。2000年,MPEG-4标准出现后,AAC重新集成了其特性,加入了SBR技术和PS技术,为了区别于传统的MPEG-2 AAC又称为MPEG-4 AAC。
AAC优点:相对于mp3,AAC格式的音质更佳,文件更小。
AAC不足:AAC属于有损压缩的格式,与时下流行的APE、FLAC等无损格式相比音质存在“本质上”的差距。加之,传输速度更快的USB3.0和16G以上大容量MP3正在加速普及,也使得AAC头上“小巧”的光环不复存在了。
Android-Recorder(Demo)
https://code.google.com/archive/p/android-recorder/downloads
Demo特点:
使用android中的AudioRecord类,获取原始PCM数据.
将PCM数据用speex编码.
将编码后的数据打包录制成flv文件.
使用android-rtmp-client库将编码,打包后的数据直接发布到流媒体服务器.
本地与服务器端录音同时进行.
在手机上通过rtmp协议回放服务器端录好的文件.
使用android-rtmp-client库将编码,打包后的数据直接发布到流媒体服务器.
本地与服务器端录音同时进行.
在手机上通过rtmp协议回放服务器端录好的文件.
音频库PESQ性能比较