<font size="3" style="line-height: 45px;" color="#c200ff"><strong>语音识别基础</strong></font>
语音数据是一种时间序列数据,它记录了声音在时间轴上的变化。 通常通过麦克风收集,每个时刻的声音信号被采样成数字形式,形成一个时间序列。
语音数据通常需要进行预处理,如去除噪音、语音分割、特征提取等,才能用于语音识别、语音合成等应用。
<font style="line-height: 40px;"><strong>▎语音数据特点</strong></font>
语音数据的数据类型通常为浮点数,表格数据的数据类型可以是数字、文字、日期等,而图像数据的数据类型通常是RGB颜色值或灰度值。
<font style="line-height: 40px;"><strong>▎语音文件格式</strong></font>
<ul><li>WAV是一种无损音频格式,通常用于存储CD音质的音频数据。</li></ul>
<ul><li>MP3是一种有损音频格式,它可以对音频数据进行压缩,会导致部分音频信息丢失。</li></ul>
<ul><li>FLAC是一种无损音频格式,可以提供和WAV相同的音质。FLAC文件处理速度较慢。</li></ul>
<ul><li>OGG可以对音频数据进行压缩,但不会丢失任何信息,可以提供和FLAC相同的音质。</li></ul>
<font style="line-height: 40px;"><strong>▎语音关键指标</strong></font>
<ul><li>采样率(Sampling Rate):采样率是指在单位时间内对声音信号进行采样的次数。常见的采样率有8kHz、16kHz、44.1kHz、48kHz等。采样率越高,声音的质量和精度就越高,但文件的大小也会相应增加。</li></ul>
<ul><li>量化位数(Quantization Bit Depth):量化位数是指采样数据的位数。常见的量化位数有8位、16位、24位、32位等。量化位数越高,声音的质量和精度就越高,但文件的大小也会相应增加。</li></ul>
<ul><li>通道数(Number of Channels):通道数是指录制或存储声音时使用的通道数量。常见的通道数有单声道(Mono)和立体声(Stereo)两种。立体声相比于单声道可以提供更为真实的声音效果。</li></ul>
<ul><li>语音长度(Length):语音长度是指声音信号的时长,通常以秒或毫秒为单位来表示。</li></ul>
<font style="line-height: 40px;"><strong>▎语音数据预处理</strong></font>
<ul><li>采样:将模拟声音信号转换为数字信号,并进行量化处理,得到一系列的采样值。</li></ul>
<ul><li>去噪:语音信号通常会受到环境噪声的影响,需要使用去噪算法去除噪声,提高语音信号的质量。</li></ul>
<ul><li>分段:将语音按照时间分成为短段。</li></ul>
<hr>
<font size="3" style="line-height: 45px;" color="#c200ff"><strong>语音特征工程</strong></font>
语音特征工程是指从语音信号中提取有意义的特征来表示语音,以便于对语音信号进行分析和应用。
<style type="text/css">
th{padding:5px;}
td{padding:5px;}
</style>
<table align="center" border="1px">
<tr>
<th></th><th>滤波器系数</th><th>滤波器的形状</th><th>建模方法</th><th>速度的计算</th><th>系数类型</th><th>抗噪声能力</th><th>对量化/附加噪声的灵敏度</th><th>可靠性</th><th>捕获频率</th>
</tr>
<tr>
<td>Mel倒频谱系数(MFCC)</td><td>Mel</td><td>三角形</td><td>人类听觉系统</td><td>高</td><td>倒频谱</td><td>中等</td><td>中等</td><td>高</td><td>低</td>
</tr>
<tr>
<td>线性预测系数(LPC)</td><td>线性预测</td><td>线性</td><td>人类声道</td><td>高</td><td>自相关系数</td><td>高</td><td>高</td><td>高</td><td>低</td>
</tr>
<tr>
<td>线性预测倒谱系数(LPCC)</td><td>线性预测</td><td>线性</td><td>人类声道</td><td>中等</td><td>倒频谱</td><td>高</td><td>高</td><td>中等</td><td>低&中等</td>
</tr>
<tr>
<td>谱线频率(LSF)</td><td>线性预测</td><td>线性</td><td>人类声道</td><td>中等</td><td>频谱</td><td>高</td><td>高</td><td>中等</td><td>低&中等</td>
</tr>
<tr>
<td>离散小波变换(DWT)</td><td>低通&高通</td><td>–</td><td>–</td><td>高</td><td>小波</td><td>中等</td><td>中等</td><td>中等</td><td>低&中等</td>
</tr>
<tr>
<td>感知线性预测(PLP)</td><td>Bark</td><td>梯形</td><td>人类听觉系统</td><td>中等</td><td>倒频谱&自相关</td><td>中等</td><td>中等</td><td>中等</td><td>低&中等</td>
</tr>
</table><br>
<strong>▎梅尔频率倒谱系数(Mel Frequency Cepstral Coefficients,MFCC)</strong>
Mel倒频谱系数(MFCC)是一种常用的语音特征,可以用来表示语音信号的频谱特征。
MFCC的优点是具有很好的人类感知属性,能够有效地抽取语音信号的关键特征,且在语音识别、语音合成等领域有广泛应用。
<strong>▎线性预测系数(Linear Predictive Coding,LPC)</strong>
线性预测系数(LPC)是一种常用的语音特征,可以用来描述语音信号的频率特征。
LPC系数反映了语音信号的频率特征,它表示语音信号可以用一个线性滤波器来逼近。LPC的优点是计算速度快,具有较好的压缩效果和鲁棒性,且在语音编码、语音识别等领域有广泛应用。
<strong>▎线性预测倒谱系数(Linear Prediction Cepstral Coefficients,LPCC)</strong>
线性预测倒谱系数(LPCC)是一种基于LPC的语音特征,可以用来描述语音信号的频率特征。与MFCC类似,LPCC也可以用来抽取语音信号的关键特征。
LPCC系数反映了语音信号的频率特征,它可以有效地抑制高频噪声和低频噪声,具有很好的鲁棒性。LPCC与MFCC相比,在抗噪能力和特征表达能力方面具有一定优势。
<strong>▎谱线频率(Line Spectral Frequencies,LSF)</strong>
谱线频率(LSF)是一种用于语音分析和合成的频域表示方法。LSF可以从LPC系数中计算得到,它能够有效地描述语音信号的谐波结构和共振峰特征。
LSF是一种无失真的特征表示方法,可以完全重构LPC系数和语音信号。LSF可以描述语音信号的共振峰特征,具有较好的语音信息表示能力。
<strong>▎离散小波变换(Discrete Wavelet Transform,DWT)</strong>
离散小波变换(DWT)是一种基于小波分析的信号处理方法,可以用于语音信号的特征提取和降噪等方面。
与傅里叶变换不同,小波变换可以对信号的时间轴和频率轴进行同时处理,能够有效地捕捉信号的短时特征和局部特征。DWT可以提取语音信号的多尺度特征,具有较好的时间-频率局部化特性。
<strong>▎感知线性预测(Perceptual Linear Prediction,PLP)</strong>
感知线性预测(PLP)是一种用于语音特征提取的方法,它基于人耳感知声音的方式,考虑了语音信号的生理学和心理学特征,能够有效地提取语音信号的重要特征。
PLP能够有效地提取语音信号的重要特征,包括共振峰特征、声道信息、音高、音量等,具有较好的语音识别性能。
<hr>
<font size="3" style="line-height: 45px;" color="#c200ff"><strong>语音识别模型</strong></font>
<strong>▎RNN</strong>
RNN是一种具有记忆功能的神经网络,它能够处理序列数据,对于语音识别任务来说非常合适。
<strong>▎CNN</strong>
CNN主要用于图像识别任务,但它也能够应用到语音识别任务中。CNN在处理语音数据时,通常采用卷积层、池化层和全连接层等结构。
<strong>▎Transformer</strong>
由于Transformer编码器和解码器的自注意力机制需要对全序列上下文信息进行建模,因此不能直接用于流式语音识别的场景中。
使用较多的Transformer流式语音识别主要包括两类:Transducer结构模型,Joint Attention/CTC模型。
<hr>
<font size="3" style="line-height: 45px;" color="#c200ff"><strong>语音数据增强</strong></font>
语音数据增强是指通过一系列技术手段,对原始语音数据进行一些变换和操作,生成新的语音数据。新数据具有与原始数据相似但不同的特征,可以帮助提高语音识别模型的鲁棒性和准确性。
<strong>▎语音加噪</strong>
通过将一定强度的噪声加到原始语音数据上,模拟现实中的噪声环境。
<strong>▎傅里叶变换</strong>
对语音信号进行短时傅里叶变换,然后随机扭曲其中一部分频率分量,再通过逆变换得到新的语音数据。
<strong>▎时间拉伸/压缩</strong>
通过改变语音信号的时间尺度,增加或减少语音时长,从而生成新的语音数据。
<strong>▎Cutout</strong>
Cutout将输入的语谱图或MFCC特征中的一部分区域随机遮挡,以生成新的训练样本。
<strong>▎Mixup</strong>
Mixup将两个不同的语音信号或特征表示进行线性插值,生成新的训练样本。
<hr>
<font size="3" style="line-height: 45px;" color="#c200ff"><strong>语音识别Python库
<strong>▎Kaldi</strong>
https://github.com/kaldi-asr/kaldi
https://github.com/mravanelli/pytorch-kaldi
Kaldi是一个开源语音识别工具包,提供多种现代的、高效的语音识别算法,以及完整的语音识别系统实现。它使用C++实现,但也提供Python接口。
<strong>▎ESPnet</strong>
https://github.com/espnet/espnet
ESPnet是一个端到端语音识别工具包,使用PyTorch实现,支持多种特征表示、模型架构和解码器,并提供了预训练模型和训练代码。
<strong>▎librosa</strong>
https://github.com/librosa/librosa
librosa是一个用于音频和音乐分析的Python库,提供了多种音频信号处理和特征提取功能,如Mel频率倒谱系数(MFCC)、短时傅里叶变换(STFT)等。
<strong>▎torchaudio</strong>
https://github.com/pytorch/audio
torchaudio是PyTorch官方提供的用于音频处理和语音识别的Python库,提供了多种音频信号处理和特征提取函数,如STFT、MFCC、梅尔带通滤波器组(Mel filterbank)等。
<strong>▎audiomentations</strong>
https://github.com/iver56/audiomentations
audiomentations是一个Python库,专门用于对音频信号进行数据增强,提供了多种增强方法,如变速、音调变化、添加噪声、随机裁剪等。
<strong>▎SpecAugment</strong>
https://github.com/pyyush/SpecAugment
SpecAugment是一种用于语音识别任务的数据增强方法,可以通过随机遮挡语谱图的方式来增强数据集。
<hr>
<font color="#9a9a9a">本文转自:<a href="https://mp.weixin.qq.com/s/grcp2aaUAbC2XKv7EX6TTQ"><font color="#9a9a9a">Coggle数据科学</font></a>,转载此文目的在于传递更多信息,版权归原作者所有。如不支持转载,请联系小编demi@eetrend.com删除。</font>
<br>