音频基础

音频开发的具体内容有:
(1)音频采集/播放
(2)音频算法处理(去噪、静音检测、回声消除、音效处理、功放/增强、混音/分离等等)
(3)音频编解码和格式转换
(4)音频传输协议的开发(SIP、A2DP、AVRCP等等)

基础概念

(1)采样率(samplerate)

采样就是把模拟信号数字化的过程,不仅仅是音频需要采样,所有的模拟信号都需要通过采样转换为可以用0101来表示的数字信号,采样率是指录音设备一秒钟内对声音信号的采样次数。

人耳能听到的声波频率范围是2020000Hz,在进行模拟/数字信号转换过程中,当采样频率大于信号中的最高频率的2倍时,采样后的数字信号完整的保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的2.564倍。

常用的音频采样频率有:8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz、96kHz、192kHz等。

(2)量化精度

对于每一个采样点,都需要一个数值来表示大小,这个数值的数据类型的大小可以是:4bit、8bit、16bit、32bit等,位数越多,表示的就越精细,声音质量就越好,同时数据量也越大。

一般采用16bit。

(3)声道数

由于音频的采集和播放是可以叠加的,因此,可以同时从多个音频源采集声音,并分别输出到不同的扬声器,故声道数一般表示声音录制时的音源数量或回放时相应的扬声器数量。

(4)音频帧
音频跟视频很不一样,视频每一帧就是一张图像,而从上面的正玄波可以看出,音频数据是流式的,本身没有明确的一帧帧的概念,在实际的应用中,为了音频算法处理/传输的方便,一般约定俗成取2.5ms~60ms为单位的数据量为一帧音频。

计算一帧音频数据大小,假设某音频信号是采样率为8kHz、双通道、位宽为16bit,20ms一帧,则一帧音频数据的大小为:int size = 8000 x 2 x 16bit x 0.02s = 5120 bit = 640 byte。

常见音频编码方式

量化的过程被称为编码,根据不同量化策略,产生了许多不同的编码方式,常见的有:PCM和ADPCM,这些数据代表了无损的原始数字音频信号,添加一些文件头信息,就可以存储为WAV文件。

Android中音频开发相关API

  • 采集:MediaRecorder、AudioRecord
  • 播放:AudioTrack
  • 编解码:MediaCodec

技术实现

Android API的使用大多都不难,可能只有MediaCodec的使用需要适当讲解,这我会在后面单独写一篇文章讲解MediaCodec的使用,其它API使用方法可以参考我的的github项目****。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前些日子由于项目需要,一直在研究iOS CoreAudio相关的内容.在这里记录一些笔记.现实生活中,我们听到的声...
    brownfeng阅读 4,695评论 4 14
  • 简介 音是一种物理现象,学物理的时候,我们认为声音都是由振动产生的.而音频则是一个专业术语,人类所能识别的声音频率...
    魏天晨阅读 1,622评论 2 1
  • 当初我们分开的时候, 是在沉默与眼泪之中, 半点破碎的心, 割断了这漫漫多年。 你的脸颊苍白冰冷, 你的吻仿佛寒冰...
    拈花一笑sun阅读 357评论 0 2
  • 有一天,我在炒干货的店铺买了炒制的黄豆粒带回家吃,己感觉不出儿时老家俺娘炒豆粒的纯香。 那时每逢阴历二月二前一天,...
    山东聊城李超阅读 337评论 1 1
  • 节假日,百无聊赖的你又手贱点开了朋友圈……毫无意外的发现你的高中同学们,现在一个个要么出国,要么创业,要么在大公...
    黑米糊阅读 799评论 0 1