移动开发中关于音频的基本概念

在音频开发过程中,总会面对很多音频领域的一些专业名词,如果不能理解这些名词,可能会对开发领过程造成极大的困扰,在进入一些新领域时,熟悉这个领域常用的概念是很有必要的,可以极大减少了沟通和理解的成本。

模拟音频

声音是物体的震动产生的波,声波一般不是正弦波,比如这种

我们常说声音的三要素:音调,音色,响度。

音调:主要指的是声音的频率,频率越高,音调越高。 音色:主要指的是波形不同(谐波) 响度:主要指的是声音的音量,在声波中的体现就是振幅,振幅越大,响度越大

看到这里可能有疑惑,既然声音是不规则的波形,为什么声音三要素的定义似乎都参照正弦波这种规则波形定义呢?

因为傅里叶变换告诉我们,任何波形都可以转换为N个正弦波来表示,其中频率最小,振幅最大的正弦波为基波,其余的为谐波,音调和响度基本依照基波来定,而音色则是谐波来决定的。

音调和响度决定了发音方式,比如每个人都可以对某个字发音,但是不同的人音色不同,也就是其声音的谐波不同,所以听起来是不一样的。

数字音频

在现实世界中,声音是连续的,但是在网络世界,数据则是离散的,现实世界的声音录入计算机往往需要经历一次采样,就是在连续的声音波形中定期打点取样,只要每秒打点次数足够多,那么就可以近似认为这些点组成了连续的波形。

PCM

PCM 是指脉冲编码调制(Pulse Code Modulation)

把声音从模拟信号转化为数字信号的技术,即对声音进行采样、量化 的过程,经过PCM处理后的数据,是最原始的音频数据,即未对音频数据进行任何的编码和压缩处理。

而且在数字世界,声音不再用音调,响度,音色来定义,而是需要关注采样率,采样精度(位深度),声道数。

采样率(sample rate)

采样率就是我们说的一定周期内对现实声波采样的次数,比如我们常见的44100hz,就是每秒钟对声音采样44100次,相当于每秒钟记录了44100个声音的数据。

声音的采样频率一般共分为22.05KHz44.1KHz48KHz三个等级:

  • 22.05kHz 采样率的声音可以达到CD音质的一半
  • 44.1kHz采样率是标准的CD音质,可以达到很好的听觉效果(一般最常使用)
  • 48KHz:miniDV、数字电视、DVD、电影和专业音频

采样精度(位深度/bit depth)

每个采样点所能表示的数据范围,范围越大表明声音越丰富,越细腻。波形的纵轴就表示采样点的大小。

通常有8bit和16bit两种,也有更高的,比如20bit,24bit,32bit.

8bit为低品质

16bit为高品质(最为常见)

假如声音的采样精度为16bits,则每个采样点能表示得范围是2^16,如果是8bits,则每个采样点能表达的范围是2^8,显然,前者比后者更加精确,在数字音频领域,就表现为声音的还原度更高,声音更细腻。

声道数(channel/通道)

声道是存储音频的轨道,用来给发声设备发声,一般音频文件中可能不止一个声道,多个声道保存了多份音频数据,用来给不同的设备发声。

常见声道有单声道(mono)、双声道(stereo)、2.1声道、4声道、5.1声道、7.1声道。

其中单声道是一个声道,双声道是两个声道,后面数字表示的声道,声道数就是是小数点前后数字相加,比如2.1是三个声道,5.1是6个声道,7.1是8个声道。

  • 双声道: 左声道+右声道 也称作立体声
  • 多声道: 超过2个声道即可
  • 2.1声道: 两个中高音单元+1个低音单元
  • 4声道: 前左、前右,后左、后右四个发声单元
  • 5.1声道:两前置单元,两后置单元,一个中央单元,一个低音单元,最早应用于早期的电影院
  • 7.1声道:在5.1的基础上增加了左后和右后两个发声单元,主要应用于BD以及现代的电影院

比特率(码率/bit rate)

表示一秒钟音频的信息量。

因此它是一个可以计算的数据:

bit_rate = channel_count * sample_rate * bit_depth / 8

我们可以利用音频的比特率来计算当前音频帧的显示时间戳(PTS)

数字音频压缩

我们提到采样到数字领域的音频数据是无压缩的原始数据,因此后续会经过一些编码算法处理来进行压缩。

压缩算法主要可以分为无损压缩有损压缩

无损压缩

无损压缩指的是在无损格式之间的压缩,无论压缩成什么格式,音质都是不变的,并且都能被还原成最初同样的文件格式。

FLAC(Free Lossless Audio Codec)

压缩比高,编码算法也相当成熟,当flac文件受损时依然能正常播放。

参数

  • 采样率 1--655350 Hz (逐1hz微调)
  • 比特率 灵活
  • 位深度 8, 16, 20, 24, 32
  • 多通道 1-8

ALAC

无损压缩,采样率灵活,采样深度范围较大

参数

  • 压缩率
  • 采样率 1--384000 Hz
  • 比特率 灵活
  • 位深度 16, 20, 24, 32
  • 多通道 1-8

APE(Monkey's Audio)

无损压缩,采样率灵活。

不支持多通道,采样深度不够

参数

  • 采样率 1--655350 Hz
  • 比特率 灵活
  • 位深度 8, 16, 24
  • 多通道 否

有损压缩

MP3 (MPEG Audio Layer III)

比特率的限制320kbit/s

采样频率最高为48kHz,对于超过48kHz采样频率的音频无法编码在MP3内

参数

  • 采样率 32khz 44.1 khz 48 kHz (仅允许三种)
  • 比特率 6、12、24...96, 112, 128, 144, 160, 192, 224, 256, 288, 320 kbit/s等 (128以上音质不错,CD上未经压缩的音频比特率为1411.2 kbps)
  • 采样精度 8, 16,
  • 声道数

AAC (Advanced Audio Coding)

mp3的升级版,有更好的采样率,采样深度,更多声道数,更好的压缩算法。

参数

  • 采样率 8--192 kHz
  • 比特率 8--529 kbit/s
  • 采样精度 8, 16, 24, 32 bit
  • 多通道 1-48

资料

blog.csdn.net/hello_1995/...

zh.wikipedia.org/zh-cn/%E6%9...

zh.wikipedia.org/zh-cn/%E9%9...

相关推荐
运维Z叔11 分钟前
漏洞挖掘 | Selenium Grid 中的 SSRF
前端·selenium·测试工具·webpack·node.js·postman
潜龙在渊灬32 分钟前
除了 SEO 之外,HTML 语义化还有什么用?
前端·职场和发展·html
Манго нектар33 分钟前
CSS的弹性盒子模型(Flex box)
前端·css
Jainc1 小时前
js计算倒计时
开发语言·前端·javascript
LINGYI_WEN1 小时前
React 中实现 vue keep-alive 功能的方法
前端·react.js
weixin_473894772 小时前
vue项目引入比较独特的字体的方法
前端·javascript·vue.js
呵呵哒( ̄▽ ̄)"2 小时前
go-admin-ui的菜单分割线设计思路和代码实现
前端·ui·golang·菜单分割线·goadmin
LINGYI_WEN2 小时前
为什么在技术选型中选择 webpack
前端·webpack
天問_3 小时前
Tauri 应用 input 输入自动大写问题定位解决
前端·rust·tauri