本帖最后由 一枚粘豆包 于 2020-2-5 01:50 编辑
昨天逛论坛时看到有同学 @GSM 问为什么mp3转成wav或者flac听不到音质变化。解释了一番以后感觉不如专门发一篇帖子来系统的讲解一下数字音乐的原理,遂有此文,有什么错误和遗漏还请不吝指教。
我们知道声音是由于物体振动产生的,而声音的传播必须发生在一定介质中,声音在介质中传播的形态是波,声波是一种机械波。
人们为了能够存储声波,发明了模拟介质。黑胶唱片和磁带,其本质都是通过电磁波来模拟机械波。如果把唱片的沟槽放到显微镜下,我们能看到声音本来的波形,这种波形是连续的。
模拟介质的缺点显而易见,体积大、难以随身携带、传播过程中抗干扰性差(模拟电视的雪花点, 广播的杂音等)。于是在上世纪80年代,索尼和飞利浦联合开发了CD。CD是一种全新的存储方式。它的原理是对连续的波形进行取样,也就是用波形上离散的点来代替连续的波(联想一下一张照片被放大很多倍后看到的一个个小颗粒,像素)。
采样过程中的概念主要有以下几点:
1. 位深
显然,我们放上去的点越多,采样就越精细,这个采样精度我们称为位深,用bit来表示(1个bit代表一位二进制)。我们可以这样理解,假设采样率是1bit,那么转换后的音轨只有0和1这两个点,也就是我们在用方波表示正弦波。毫无疑问更高的点,更低的点和中间的点就都丢失了,我们损失了动态范围。1bit = 6.02db的动态范围。而CD的采样率是16bit,也就是有2^16=65536个点,这样的音乐对于大部分人耳来说已经是难以分辨了,动态范围达到了96db。然而实际听音环境下因为有噪音等等,是达不到这个范围的。于是才有了24bit,甚至32bit的音乐。
2. 采样率
如果我们把波形放到坐标系里,位深相当于纵坐标的精细度。而横坐标的精细程度则称为采样率。想象一段每秒振动20000次的声波,如果我们每秒只能采集10000次,那我们就漏掉了其中的10000次振动,也就丢失了信息。人耳能听到的频率在20-20000Hz之间,根据香农的采样定理(也叫奈奎斯特定理),当采样率大于等于一段波形最高频率两倍时,我们就可以不失真的表示这段波形。CD的采样率44.1kHz = 44100 > 20000 * 2。至于为什么是44.1而不是40,一方面是留出一定空间给抗混叠滤波器,另一方面则是为了兼容PAL和NTSC视频制式。
3. 比特率
最后,用 位深 * 采样率 * 声道数 就得到了一段音频的比特率(码率),也就是每秒通过的比特(bit)数。以CD来举例,16 * 44.1k * 2 = 1411.2 (kbps)
我们平时的解码器(DAC),实际上就是把这个采样的模-数转换过程逆过来,也就是数-模转换。
至于音乐格式,wav是微软和IBM联合设计的存储波形的格式。标准的wav格式和CD格式相同,所以我们常称之为无损音乐(其实这个说法是不严谨的),当然wav也可以存放更低码率的音乐。
wav的最大缺点是体积太大,在早期存储设备容量偏小的情况下,wav显然是很不理想的。于是人们就开发了各种压缩算法,比如mp3, wma等等。mp3这种格式可以极大的压缩占用空间,但是压缩过程中去掉了一些信息,于是这个过程就叫做有损压缩,相对应我们管mp3叫有损音乐。(常见码率有128kbps和320kbps)
当大家的硬盘越来越大,很多人就不满足于mp3压缩的音质,但同时仍觉得wav太大,这时就出现了flac和ape等大家熟悉的无损格式。所谓无损,是因为wav在压缩成flac时并没有损失任何信息。这个过程是无损压缩,并且flac可以完好的解压缩成wav。想象一下我们把文件压缩成zip或者rar,解压缩过程显然不会损失任何信息。
这也就解释了为什么那位同学mp3转换成wav和flac听不出区别了,因为mp3已经丢失的信息是补不回来的。除此之外我们还常听到升频的概念,其实最简单的升频就是把我们采样后的每两点之间插入1点,也就是插值法,当然我们也可以插入更多的点。但是请注意,升频后多出来的点,是我们计算出来的,而不是原始信息,也不一定能够代表原始信息。所以升频是否能带来正面的作用见仁见智。
最后,欢迎大家讨论指教。
@流氓才子 大哥你看这篇文章可以申精吗?
|