banner
jzman

jzman

Coding、思考、自觉。
github

音频基础知识

了解了音视频的相关知识,可以先阅读下面两篇文章:

本篇总结下音频基础知识,将从以下几个方面进行介绍:

  1. 声音的产生
  2. 声音的三要素
  3. 模数转换
  4. 原始音频数据
  5. PCM 与 Wav
  6. 音频处理流程

声音的产生#

声音是由物体振动产生的,通过空气、固体、液体等介质进行传输的一种声波,可以被人耳识别的声波的范围是 20Hz~20000Hz 之间,也叫做可听声波,这种声波称之为声音,根据声波频率的不同可以主要分为:

  • 可听声波:20Hz~20kHz
  • 超声波:> 20kHz
  • 次声波:< 20Hz

此外,人的发声范围一般是 85Hz~1100Hz。

声音的三要素#

声音的三要素分别是音调、音量、音色,具体如下:

  • 音调:指的是声音频率的高低,表示人的听觉分辨一个声音的调子高低的程度,物体振动的快,发出的声音的音调就高,振动的慢,发出的音调就低。
  • 音量:又称音强、响度,指声音的振幅大小,表示人耳对所听到的声音大小强弱的主观感受。
  • 音色:又称音品,指不同声音表现在波形方面总是有与众不同的特性,不同的物体振动都有不同的特点,反映每个物体发出的声音的特有的品质,音色具体由谐波决定,好听的声音绝不仅仅是一个正弦波,而是谐波。

模数转换#

声音是一个模拟音频信号,如果要将声音数字化,则需要将模拟音频信号转换为数字信号,这就是模数转换,主要流程包括采样、量化、编码,如下图所示:

image

  • 采样:连续信号转换为离散信号的过程,每个一定时间的信号值来替代原来时间段连续的信号值,这个 1s 内的采样次数就是采样率,如 8KHz 是电话信号的采样率,可以满足通话需要,音频 CD 一般是 44.1kHz,数字电视一般是是 48kHz,采样率越高声音的还原成度越高。
  • 量化:将采样后 的模拟信号转换为数字信号的过程,量化分为均匀量化和非均匀量化,上图中显然使用了均匀量化,量化级数是 8。
  • 编码:将量化后的信号转换为对应的二进制代码,最简单就是自然二进制码,其他编码方式感兴趣自行去了解,上图中编码指的是信源编码,除此之外还有信道编码。

原始音频数据#

PCM((Pulse Code Modulation)是脉冲编码调制,实际上就是将模拟音频信号转换为数字音频信号,音视频中的 PCM 指的是未经压缩的音频采样数据,是音频信号经采样、量化、编码生成的原始音频数据,PCM 数据关键量化指标如下:

  • Sample Size:采样大小,也是量化级数,表示一个采样用多少位 bit 存放,常用的是 16 位。
  • Sample Rate:采样率,表示每次采样的次数,单位 Hz,常见的采样率有 8k、16k、32k、44.1k、48k 等。
  • Number of Channels:声道数,表示当前 PCM 数据中包含的声道数,如单声道、双声道、多声道等。
  • Byte Ordering:字节序,表示 PCM 数据存储的字节序是大端存储 (big-endian) 还是小端存储 (little-endian),为了数据处理效率的高效,通常为小端存储。
  • Sign:表示当前 PCM 数据是否有符号位
  • Integer Or Floating Point:表示当前 PCM 数据使用整型还是浮点型来表示。

了解了表示 PCM 数据的量化指标之后,那么码率如何计算呢,码率就是一秒钟采样数据的多少,计算方式如下:

采样率 * 采样大小 * 声道数

举个例子:

image

采样率 44.1KHz,采样大小为 16bit,双声道的 PCM 编码的 WAV 文件,其码率为 44.1K *_16 *_2 = 1411.2Kb/s,假设传输上述音频,每秒将超过 1M 的数据量,再加上在数据传输过程中,上行速率往往远小于下行速率,这就需要压缩音频数据了。

PCM 与 WAV#

PCM 可以查看前面小结,WAV 是一种无损的音频文件格式,其对音频的编码没有硬性规定,可以是 PCM 也可以是其他编码方式,比如 MP3 编码等,简单总结一下:

  • PCM:一种编码方式,在音视频领域则理解为原始音频数据裸流;
  • WAV:一种音频文件格式,可存储 PCM 数据,相当于在 PCM 基础上添加了 WAV 头部。

最后附上一张 WAV 的 Header 示意图:

image

更多细节后续研究后补充。

音频处理流程#

简单讲一下音频的处理流程,一是音频文件的生成,如在 Android 中使用 AudioRecordMediaRecord 等采集到的音频数据就是 PCM 数据,这种数据属于数字音频信号,是原始的 PCM 裸流,PCM 数据经过编码也就是将 PCM 数据压缩,在通过复用生成对应的音频文件,二是音频文件的播放,经解复用、解码转换成 PCM 进行播放。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。