版权声明:本文为原创文章,未经允许不得转载
前言
最近做的项目涉及到了局域网时时语音通信,研究了一段时间Android端的音频技术,包括音频的录制、播放、降噪、压缩,以及在局域网中的实时传输等。虽然网上关于音频的基本使用有很多资料,但是关于音频的处理和实际开发中遇到的问题不是很详尽,而且有些都过时了,所以小编将非业务相关的音频部分做了整理,写了几篇博客,供大家参考,希望能和大家多多交流。
基础知识点
1.音频的使用场景
音频播放器,录音机,语音电话,音视频监控应用,音视频直播应用,音频编辑/处理软件,蓝牙耳机/音箱等。
2.音频开发的具体内容
(1)音频采集/播放
(2)音频算法处理(去噪、静音检测、回声消除、音效处理、功放/增强、混音/分离等)
(3)音频的编解码和格式转换
(4)音频传输协议的开发(SIP,A2DP、AVRCP等)
3.难点
延时敏感、卡顿敏感、噪声抑制(Denoise)、回声消除(AEC)、静音检测(VAD)、混音算法等,看到这里,是不是慌了呢,其实这些大部分问题都已经有了很好的解决方案或者开源框架,如果不是专门的视音频的开发,不会涉及到太复杂的技术。
4.音频编码
4.1 概念
从信息论的观点来看,描述信源的数据是信息和数据冗余之和,即:数据=信息+数据冗余。音频信号在时域和频域上具有相关性,也即存在数据冗余。将音频作为一个信源,音频编码的实质是减少音频中的冗余。
根据编码方式的不同,音频编码技术分为三种:波形编码、参数编码和混合编码。一般来说,波形编码的话音质量高,但编码速率也很高;参数编码的编码速率很低,产生的合成语音的音质不高;混合编码使用参数编码技术和波形编码技术,编码速率和音质介于它们之间。
通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。
简单讲,其实就是将采集到的音频模拟