有关声音信号的那么点知识
前言
好像<语音信号处理>这本书解释很详细,但我并没有系统上过这门课程,所以自己做一些笔记.
音频的属性讲解
- 音频 :
指人耳可以听到的声音频率在20HZ~20kHz之间的声波,称为音频。
- 采样频率/sample rate/采样率:
指每秒钟取得声音样本的次数。
采样率定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示.
采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多。
- 由于人耳的分辨率很有限,太高的频率并不能分辨出来。 22050 的采样频率是常用的, 44100已是CD音质, 超过48000或96000的采样对人耳已经没有意义。这和电影的每秒 24 帧图片的道理差不多。
- 如果是双声道(stereo), 采样就是双份的, 文件也差不多要大一倍.
- 采样位数/采样值:
它是用来衡量声音波动变化的一个参数,也可以说是声卡的分辨率。它的数值越大,分辨率也就越高,所发出声音的能力越强。
每个采样数据记录的是振幅, 采样精度取决于采样位数的大小:
- 1 字节(也就是8bit) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级;
- 2 字节(也就是16bit) 可以细到 65536 个数, 这已是 CD 标准了;
- 4 字节(也就是32bit) 能把振幅细分到 4294967296 个等级, 实在是没必要了.
- 比特率:
比特率是指每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,传送的数据越大,音质越好.
- 比特率 =采样率 x 采用位数 x声道数.
- 关于比特率(比特率在音频或者视频领域也称为码率)的计算,比如,采样率为44.1KHz,以16bit采样,声道数为2,那么它的音频比特率的计算为:44100162 = 1411200 bps = 1378 kbps(1k=1024),然后我们在除以8,将bit转化为Byte,所以1秒钟的数据量就是:1411200/8 = 176400 个字节(B)。
- 通道数:
即声音的通道的数目。常有单声道和立体声之分,单声道的声音只能使用一个喇叭发声(有的也处理成两个喇叭输出同一个声道的声音),立体声可以使两个喇叭都发声(一般左右声道有分工) ,更能感受到空间效果,当然还有更多的通道数。
- 帧:
帧记录了一个声音单元,其长度为样本长度(采样位数)和通道数的乘积。
- 每一帧的总时长
每一帧的总时长=每一帧的采样个数×每个采样时长
- 每个采样的时长=(1/频率)
1. Spectrogram
声谱图
-
如下图所示,先对语音信号进行分帧处理,再对每一帧进行FFT变换,得到对应的Spectrum(频谱)
可见,语音信号被分为很多帧,每帧都有对应的Spectrum,Spectrum表示频率与能量的关系.在实际使用中,频谱图有三种,即线性振幅谱、对数振幅谱(对数振幅谱中各谱线的振幅都作了对数计算,所以其纵坐标的单位是dB(分贝)。这个变换的目的是使那些振幅较低的成分相对高振幅成分得以拉高,以便观察掩盖在低幅噪声中的周期信号)、自功率谱. -
如下图,我们选取一个Spectrum,将其中一帧语音的频谱通过坐标表示出来,如上图左。现在我们将左边的频谱旋转90度。得到中间的图。然后把这些幅度映射到一个灰度级表示(也可以理解为将连续的幅度量化为256个量化值),0表示黑,255表示白色。幅度值越大,相应的区域越黑。这样就得到了最右边的图。那为什么要这样呢?为的是增加时间这个维度,这样就可以显示一段语音而不是一帧语音的频谱,而且可以直观的看到静态和动态的信息。
-
通过以上的处理,我们会得到一个随着时间变化的频谱图,这个就是描述语音信号的spectrogram声谱图。
-
下图是一段语音的声谱图,很黑的地方就是频谱图中的峰值(共振峰formants)
-
那我们为什么要在声谱图中表示语音呢?
首先,音素(Phones)的属性可以更好的在这里面观察出来。另外,通过观察共振峰和它们的转变可以更好的识别声音。隐马尔科夫模型(Hidden Markov Models)就是隐含地对声谱图进行建模以达到好的识别性能。还有一个作用就是它可以直观的评估TTS系统(text to speech)的好坏,直接对比合成的语音和自然的语音声谱图的匹配度即可。
2.
参考来源
来源:CSDN
作者:等待戈多。
链接:https://blog.csdn.net/qq_44554428/article/details/104576495