音频技术

语音保存

采样数据格式

采集到模拟信号,然后通过 ADC(模数转换)将模拟信号转换成数字信号以后,再通过 PCM(Pulse Code Modulation)脉冲编码调制对连续变化的模拟信号进行采样、量化和编码转换成离散的数字信号

PCM 文件就是未经封装的音频原始文件,在输出之前,需要转换一下。这些数据的格式我们通常称之为采样数据格式

采样频率

PCM 数据的输入和输出是需要有一个频率的

当采样频率 fs 大于信号中最高频率 fmax 的 2 倍时(fs > 2fmax),采样之后的数字信号才可以完整地保留原始信号中的信息

声道与布局

除了左声道、右声道,还有立体声等,当我们听到的音频声道比较多,比如听交响乐的时候,立体感会尤为明显

采样位深度

采样位深也就是每个采样点用多少 bit 来表示。决定了声音的动态范围,常见的 16 位(16bit)可以记录大概 96 分贝(96dB)的动态范围,位数越多,保真程度越高

码率

用 bps(bits per second)来表示,也就是每秒钟有多少位数据

一个 PCM 音频文件存储空间=采样位深×采样率×通道数×时长

通道数

同一时间采集或播放的音频信号的总数

音视频封装

语音信号

声带会振动从而产生一个声波,这个声波叫做基波,基波的频率叫做基频,也就是音调

声带振动产生的基波,在传输过程中会在声道表面反复碰撞反射,从而产生许多频率倍数于基频的声波,这些声波叫做谐波

谐波频率和基频是浊音能量集中的地方

声源的振动信号通过声道时,声道本身也会发生共鸣,与声道共振频率相近的能量会被增强,远离声道共振频率的部分则会被衰减,从而谐波的能量就组成了一组高低起伏的形状包络,这些包络中的巅峰位置叫做共振峰

语音识别背后的原理之一是通过共振峰的位置和能量分布来识别音频代表的语音

语音信号分析

为了避免由于信号的窗口处理或者截断等操作导致频谱波形中出现能量泄漏到其他频率,一般采用加窗,即在原有信号中乘一个两端为 0 的窗信号,来减少截断信号时的频谱泄漏

时域分析:

语音的能量随时间的变化较快,比如能量小的时候可能就是没有在说话,而能量大的地方可能是语音中重读的地方,可以通过短时能量判断语音的起止位置或者韵律

$$ E_n=\sum_{m=-\infty}^{\infty}\left[x(m)w(n-m)\right]^2 $$

第 n 个点的短时能量 En​ 就是由加窗后的采样信号的平方和来表示的

短时平均过零率指的是每帧内信号通过零值的次数,背景噪声较小的情况下,短时能量比较准确;但当背景噪声比较大时,短时平均过零率有较好的效果

频域分析:

通过将语音信号进行短时傅里叶变换,将短时傅里叶变换的结果对复数频域信号求模,并取对数转换成分贝(dB),然后用热力图的形式展示出来,就是频谱图了

人耳对以 Hz 为单位的频率并不是很敏感,梅尔谱三角滤波器组把频率划分成了若干个频段。敏感的频段滤波器分布比较密集,而不敏感的频段比较稀疏,这样就能更好地表征人耳的实际听

这两种方法更能反映人耳的真实听感

音乐信号

一首曲子的节奏是由速度和节拍决定的,速度以BPM表示。

节拍用来描述音乐中的进程的规律,指有一定强弱分别的一系列拍子,在每隔一定时间重复出现。若干个这样有规律的拍子叫一个小节

乐器的演奏其实就是按照节拍规定的音符演奏顺序,然后按照指定的速度演奏出来

唱名 do re mi fa So la ti do
音名 C4 D4 E4 F4 G4 A4 B4 C5
基频频率(Hz) 261.6 293.7 329.6 349.2 392.0 440.0 493.9 523.2

音频评价

主观评价

客观评价

音频降噪

线性滤波器

事先知道噪声会在哪个频段出现,采用一些比如高通滤波器来消除低频噪声、用一些陷波滤波器来消除某些频段的持续噪声

谱减法

先取一段非人声段音频,记录下噪声的频谱能量,然后从所有的音频频谱中减去这个噪声频谱能量

基于统计模型的实时降噪算法

利用统计的方法估算出音频频谱中每个频点所对应的噪声和语音的分量,是假设在噪声是比较平稳的情况上

子空间算法

针对一些已知噪声类型,量身定做一个降噪算法,把噪声和人声投影到一个高纬度的空间,让本来不容易分离的信号变成在高纬度占据一个可分的子空间,从而可分的信号

基于机器学习的降噪

通过数据训练的方式,训练人工神经网络来进行降噪

f(带噪音的音频) = 不带噪音的音频

一般用纯净的语音作为目标或者说标签,然后用纯净语音加入一些噪声生成含噪数据

传统降噪中,维纳滤波等方法,都是通过计算先验信噪比,然后在频域上对每一个频谱的频点都乘以一个小于等于 1 的系数来抑制噪声。这些在频域上乘的系数统称为频域掩码。而如何计算这个频域掩码就成了解决降噪问题的关键

机器学习的任务就是计算出频域掩码

回声消除

$$ z'(n)=f(x(n))-f'(x(n))+y(n) $$

回声消除算法的目的就是通过算法估计出回声路径的传递函数f

自适应滤波器

用实时更新的滤波器的系数来模拟真实场景的回声路径,然后结合远端信号来估计出回声信号,再从近端采集的混合信号中减去估计的回声,从而达到消除回声的目的

网络传输

编解码器

mindmap
  音频编解码器常见指标
    码率
    音质
    主观听感
      采样率
      采样位深
      通道数
    计算复杂度
      编码耗时
      解码耗时
    延迟
      算法延迟
      一包多帧

不同编解码器的性能表现

弱网对抗

NetEQ模块:主要包括两个模块:MCU(Micro Control Unit,微控制单元)和 DSP(Digital Signal Prcessing,信号处理单元),通过再 MCU 开辟一个比较大的缓冲区域,让一段时间内到来的数据包进行存储排序,再交给解码器进行解码

空间音频

人耳的耳廓在接收不同方向的音源时,会让声波以不同的路径传导至内耳。这样,不同方向的声波传输到内耳的时候,音色就会由于耳廓的形状而产生各向异性

如果音源在你的左侧,那么左耳会先接收到声波;相反如果音源在右侧,右耳会先收到声音。同时由于人的头部也会对声音的传播产生影响,如果音源在左侧,那么声波需要越过头部这个“障碍”才能传递到右耳,那么相对于左耳,音色和能量可能都会有所衰减

这是空间音频里常说的“双耳效应”,即依靠双耳间的音量差、时间差和音色差来判别声音方位的效应

人耳对距离的感知是相对的。比如声音播放时音量由小变大,我们会感觉声音在靠近

不同频率的声波空气衰减曲线

空间音频的采集

空间音频的播放

HRTF

预先把空间中不同位置声源的空间传递函数都测量并记录下来,然后利用这个空间传递函数,我们只需要有一个普通的单声道音频以及这个音源和听音者所在虚拟空间中的位置信息,就可以用预先采集好的空间传递函数来渲染出左右耳的声音

音频特效

音频AI