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