![3b2b5c789c24be344b7d9d8077c1d7c3.png](https://i-blog.csdnimg.cn/blog_migrate/3957a32f95843e47598e37d0b4b34438.jpeg)
声音是什么
声音(sound)是由物体振动产生的声波。声音作为一种机械波,频率在20 Hz~20 kHz之间的声音是可以被人耳识别的。-----百度百科夫斯基
敲黑板:波、人耳识别频率:20 Hz~20 kHz
但是,每个人还是有差别的,想测试你的耳朵到底是龙精虎猛还是老态龙钟(这小成语用的,那叫一个炉火纯青),下面的视频可以告诉你答案。不多逼逼,盘他
![0bdbd593d56c5668721bbf68b993f385.png](https://i-blog.csdnimg.cn/blog_migrate/600020ab596ae46f70f43fee0d9eb31f.jpeg)
音频录制
最简单的音频录制流程为:
设备采集获取模拟信号 ---》模数转换 ---》存储(播放、传输等)
![5fedaf0562a6c6f76b88b85cb46077ad.png](https://i-blog.csdnimg.cn/blog_migrate/35438f67360688890198d197bb757aef.jpeg)
播放端流程相反:
音频文件 ---》数模转换 ---》播放器播放
模数转换
模拟信号转化为数字信号的流程(心疼大学老师一秒钟):
![fec783568b3cf9d24f41d0f7f93bf455.png](https://i-blog.csdnimg.cn/blog_migrate/121cbe8691b52c45b7f983d9e68ba90d.jpeg)
如上图:
采样: 对模拟信号隔一定的时间间隔取一个点(图中交点)
量化: 给纵坐标加刻度,根据近似取整数值,使采样得到的点的值都是整数。
编码:对量化取得的整数值按二进制进行编码
数字信号:把编码得到的 0 和 1 的序列变现为高低电平的信号
上述整个模数转换的过程称为:脉冲编码调制(PulseCodeModulation),简称PCM。由上面的模数转换可知,PCM 格式文件存储的内容实际上就是编码得到的序列。
采样率:
每秒的采样次数。
对于声音来说,从上图采样的过程可以看的出来,采样率越高,即每秒内的采样点越多,采样点越密集,也就意味着离散信号对模拟信号的还原度越高。
合适的采样率
采样点无限多即连成原来的模拟信号曲线。当然,无限多的点无限多的数据存储和 cpu 也不允许啊。那什么样的采样率比较合适呢?
答:活着不一定是为了死去,但录制最终一定是为了播放。采样编码为了存储处理和传输,最终还是要还原出模拟信号来播放。
根据 “奈奎斯特采样理论”:当对被采样的模拟信号进行还原时,其最高频率只有采样频率的一半。(装逼一定要用又黑又粗。。。。的文字)
换句话说:要想重构完整的模拟信号,采样率要是模拟信号频率的两倍以上。--- gray_dog3
鉴于前面敲黑板所讲,人听觉范围:20 Hz -20 KHz。所以对于给人听的音频,采样率要宁杀错不放过,要大于40 KHz 才不会使人感觉到音质受损。
由此得出,合适的采样率 一般大于 40 KHz,注意是一般,采样率小一些高音会受损,不过除了对那些能听出热情火电和清冽水电的耳机党外,略小应该也不明显,平常 8k,16k 都有。
来自严谨党的质问:为什么大多数音频采样率采用 44.1K?不是 40K,也不是 44K,非要带个 0.1?
答:靠,你哪那么多为什么。
装逼专用: 在高深莫测的数学领域有一个神奇的数字即 44100,前四个素数的平方的乘积 44100:2x2x3x3x5x5x7x7=44100
靠谱回答:历史原因,早期录像机:245 扫描线,一行 3 个数据块,60 场频:245x3x60=44100,现在也有在推 48kHz,甚至 96kHz 的。
采样深度:
即量化时纵坐标的量化粒度。
在上图模拟信号中,纵坐标代表的是声音的响度,即音量。
由上图量化过程可知,当量化的粒度越细,离散点取的值也就越接近模拟信号实际的值,如果量化时,采样深度为 1bit,即量化只能为 1 和 0,那每首歌听起来都像忐忑,一惊一乍的,要么播放最大声音,要么没有声音。
只有采样深度越深,即量化的粒度越细,采样出来的数据,才更接近实际的音量。
现在一般用 16 位来表示一个采样数据的音量大小。
敲黑板 16 位采样深度,即一个采集的样本点中,音量大小用 16 位二进制数来表示音量大小。
声道和立体声
友情提示:声音,音频,但是声道就只能读作声道,不能读作音道
单声道 Monaural:只有一个采集器采集音频做以上图中的流程处理。
立体音 Stereophonic:两个或两个以上声道数,多个设备录音,然后数据编码整合到一起。常见的有 双声道 4.1 环绕立体声(四个音源加一个低音喇叭来加强低音)5.1 、7.1 环绕立体声(杜比音效:装逼知识点)
PCM 数据
有了以上的认识,妈妈再也不用担心我看不懂 pcm 格式了。不废话,直接上图:
![4ff2abef9da7abc5ad05d62a5a89d9f2.png](https://i-blog.csdnimg.cn/blog_migrate/1c665f56cbf06482e589ed11c8f18ba8.jpeg)
你没有看错,就是这么简单。对于 8 位采样深度的单声道,8 位表示一个采样的音量,都是这样的采样数据。
pcm 就是原始数据,没有 header,全是 body,满满的干货。双声道就是两个声道采样序列交替排列。
播放 PCM
由上面格式也可以看出 pcm 没有 header,没有采样率等信息,所以播放时需要告诉播放器:采样率、采样深度、声道数。
只有有了这些信息,播放器才知道读入 pcm 文件流的速度,以及读入数据该如何进行数模转换。
通常播放 pcm 格式的音频文件可以用 VLC 播放器,我在 mac 上使用的,windows 的百度下,播放应该很简单。就是这货:
![6d546d81cbd91ceae672534cdb581164.png](https://i-blog.csdnimg.cn/blog_migrate/33652f0623704881e23a32fba35f10bf.jpeg)
播放命令:
/Applications/VLC.app/Contents/MacOS/VLC --demux=rawaud --rawaud-channels 1 --rawaud-samplerate 44100 record.pcm
命令中 samplerate 采样率,channels 声道数,现在都默认 16 位的,具体有 8 位的需求可以百度下。