基础-语音是怎么进到LLM里面的
粗糙且概括地来说,语音是按照时间切分成很小的小块,然后每个小块的波形变成了一列像素,例如1100,那么一段语音可能分成200块,则该图片是200100的,接下来就变成了怎么做ViT的问题了。
接下来,详细说说语音->图的转变。
傅立叶变换
如果音频只有一个频率,则它是规律的波形。
规律的波形也有高低,因此这是另一个变量,叫赫兹。现在有了频率和赫兹,这就能画二维的图了。
如果一个音频很乱,则它是多个频率的叠加。
这就是傅立叶变换的目的,找出时序的音频波形是由哪些。
如上图所示,由两个频率和各自振幅(声音大小)组成的波形是左下角,右下角是两个频率(x轴)和其振幅(y轴),实际上应该是两个尖,没有宽度。
可以想像,如果是真实音频,其傅立叶变换后的右下角图得有多乱了。
短时傅立叶变换。
如果对十分钟的音频做FFT,显得有些拥挤了,信息也不够细。
所以有了短时FFT,核心就是把音频切分成带覆叠的音频块,再对小块做FFT。这就是前面说的1*100的像素的由来,100就是100个频率区间,像素颜色深浅代表赫兹。
梅尔频谱
这没有什么神秘的,只是一种对频率轴的拉伸。对于同样500hz频率的变化,从500->1000人类能分辨, 10000->10500就分不出来了。人类对低频更敏感,所以需要做一定的拉伸:
f是频率,单位是hz,依照上面的公式就能把频谱图转为梅尔频谱图。可见,上式是单调递增的。鬼知道为什么是这些值,大概是试出来的吧。
下面是一个实际的梅尔频谱,从知乎截的。
可见,横轴是时间,即短时傅立叶变化切割整个时间轴得到的碎片,一个个小格子很明显。
纵轴是hz,但是注意,hz并非线性变化,0-512与1024-2048的宽度几乎一样,但是hz变化差分别是512和1024,这是梅尔频谱转化的结果。
感觉纵轴不太对,所以用gpt快速验证了一下:
看来也差不多,0-512变化618,1024-2048变化526。
梅尔频谱图的颜色深浅为分贝,它也是一个对振幅的单调递增映射,也是为了对应人耳感受。以下是振幅转分贝的公式,其中A0是一个定值。
结语
看完了就知道声音是怎么转为“图片”的了,后续再看看这些频谱图的处理与cv领域用的ViT处理方法有何不同。