音频算法中,时延和音频帧长的选择通常是个需要平衡的参数,这里分析下背后的考量因素。
一般来说,帧长是音频算法端到端时延的子集,是时延的组成元素,所以,帧长越长,时延越大。
那为啥会有音频帧长的概念呢?原因是一般会做分块频域变换,根据音频信号的短时平稳性(10-30ms,信号是周期重复的),从而进行分块分帧做短时傅里叶变换,于是有了帧长的概念。
时延指标里的那个why
那时延是啥?之前文章有讲,简单说,就是音频信号从发出到接收经历的时间延迟。过长的延迟带给人体验就是有卡顿感,而人耳对时延的敏感性是有范围的:
人耳对端到端(嘴到耳的时延)
<150ms
不会有明显感知
<50ms
可能感知不大50~100ms
之间可能轻微感知100~200ms
可感知>200ms
能明显感知>400ms
会无法忍受蓝牙传输链路
以音频编解码为例,见下面描述:
First, the audio is sampled. Perceptual coding requires a codec to look at multiple, consecutive samples, as a lot of the opportunities for compression come from identifying periods of repeated sound (or lack of sound). This means that most codecs need to capture sufficient, successive samples to have enough data to characterise these changes. This period of sampling is called a frame.
Different encoding techniques use different frame lengths, but it’s almost always a fixed duration. If it’s too short, the limited number of samples starts to reduce the efficiency of the codec, as it doesn’t have enough information to apply the perceptual coding techniques, which impacts the quality. On the other hand, if the frame sizes grow, the quality improves, but the latency increases, as the codec has to wait longer to collect each frame of audio data.——《Introducing-Bluetooth-LE-Audio-book》
帧长选取里的那个why
语音短时平稳性是在10-30ms这个区间有效,从下图可以看出,从编码质量和时延两个维度综合看,频域编解码最佳帧长是10ms及以上,5ms短帧的低码率编码就不太占优势。