54、利用Wav2Vec2.0增强印度语境下的语言识别能力

利用Wav2Vec2.0增强印度语境下的语言识别能力

1. 引言

语言识别(LID)系统的目标是根据语音信号对口语进行分类。自动语音识别是众多语音相关应用的初步步骤,如多语言自动语音识别、语音到语音翻译、呼叫中心的客户路由等。在代码切换的情况下,LID是任何基于语音的应用系统的基本组成部分。

语言识别技术大致可分为显式和隐式两类。显式LID系统通常将语音转换为中间表示(如音素),然后从该表示中提取特征用于LID;而隐式方法则直接将语音输入模型来识别语言身份。本文聚焦于使用wav2vec2.0 - XLSR - 53的隐式LID系统,它能直接将原始语音编码为特征向量用于LID。

DNN、带注意力机制的DNN、i - vector、LSTM等模型在LID任务中取得了不错的效果,但这些模型训练需要大量的语言数据。在印度这样的低资源语言环境中,有22种官方语言、众多地区方言且可用语言数据有限,能学习跨语言信息的模型表现更佳。虽然多语言ASR的联合声学模型(JAM)提取的特征在LID任务中有显著提升,但构建ASR需要大量标注数据,获取标注数据是低资源语言面临的瓶颈。因此,自监督模型如wav2vec2.0被用于从无标注数据中学习跨语言信息,再用少量标注数据进行微调。

2. 相关工作
  • 高斯混合模型(GMM)、GMM - 通用背景模型(UBM)和i - vector模型是开发LID系统常用的建模技术。
  • 深度神经网络也用于LID系统,能有效捕捉时间信息,但在低资源印度语言环境中,数据和说话人数量不足。
  • 早期工作使用MFCC特征,后来有使用自动联想神经网络(AANN)、希尔伯特包络和LP残差的相位信息等进行LID任务。
  • 各种深度神经网络如深度卷积递归神经网络、Resnets等也被用于LID任务,近期还评估了使用XLS - R - 300M wav2vec2.0、Resnet和ConvNet等模型对带口音语音进行LID任务。
3. 数据库

采用IIITH - ILSC数据库进行模型评估,该数据库包含来自1150位说话者的103.5小时语音数据,涵盖23种语言(22种印度官方语言和印度英语),每种语言有4.5小时数据。语料来自Prasar Bharati档案、全印度广播电台、TED演讲、广播对话语音以及多所高校学生的录音。数据库中每种语言包含50位说话者(25男25女)的语音,每位说话者的语音时长为5 - 10分钟,包含干净和嘈杂环境的语音样本,所有语音文件为.wav格式,采样率为16000样本/秒。

4. 方法
4.1 Wav2Vec2.0

wav2vec2.0 - XLSR - 53是在53000小时无标注语音和53种不同语言上预训练的模型。它以原始语音波形为输入,将其分割成帧,每帧通过多个堆叠的CNN层,得到潜在表示z1....zt ,每个zi向量代表语音信号一个时间帧的向量。这些表示被掩码后传递到上下文网络得到表示C = [c1....ct] ,上下文网络是一个变压器编码器,使用分组卷积层学习相对位置。掩码后的z1....zt还通过量化块得到q1....qt向量,量化块将输入映射到不同的语音单元。模型使用对比学习进行训练,对于每个掩码位置t,模型尝试从包含qt和K个干扰项的集合Qt中识别ct的真实表示。对比损失计算如下:
[L_m = -\log\frac{\exp(\text{sim}(c_t, q_t)/\kappa)}{\sum_{\tilde{q}\sim Q_t}\exp(\text{sim}(c_t, \tilde{q})/\kappa)}]
其中sim是余弦相似度,κ是对比损失中的温度,Qt是包含qt和K个干扰项的集合。

在预训练模型上使用标注数据进行微调,通过最小化连接主义时间分类(CTC)损失进行优化。将预训练的wav2vec2.0 - XLSR - 53模型在IIITH - ILSC数据库上微调后用于LID任务。从XLSR - 53的第14层获得的上下文向量c1....ct被输入到注意力层,进行以下操作:
- 自注意力
- (a = \text{softmax}(w_2\text{GELU}(W_1c^T)) \in R^T)
- (o_1 = \sum_{t = 1}^{T} a_t c_t)
- (o_2 = \sqrt{\frac{\sum_{t = 1}^{T} a_t(c_t - \mu)^2}{T}})
其中(\mu=\frac{\sum_{t = 1}^{T} c_t}{t}),(W_1 \in R^U),(w_2 \in R^U),(o_1)是基于注意力向量a的上下文向量加权和,(o_2)是加权标准差。(o_1)和(o_2)连接后作为特征向量输入到线性层,输出通过softmax归一化,输出Y是概率向量,每个(Y_i)表示输入语音属于第i种语言的概率。

5. 实验设置
5.1 模型
  • Resnet :残差网络是一种前馈架构,每层除了有来自前一层的前向路径,还有来自前一层的残差连接,将前向和残差连接的表示相加。使用堆叠移位三角倒谱(SDC)特征,通过将7维MFCC特征与49维SDC特征拼接得到56维SDC向量。使用2 - 1 - 2的时间上下文进行堆叠。Resnet使用4个块,DenseResnet使用7个密集块,所有块的丢弃因子为0.1。
  • 联合声学模型(JAM) :多语言ASR的JAM使用LSTM - CTC框架训练,基于6种印度语言构建。泰卢固语、泰米尔语和古吉拉特语的数据来自微软,印地语、马拉地语和奥里亚语的数据来自当地说话者的朗读任务。模型在IIITH - ILSC数据库上微调后进行测试。将组合数据转换为IT3格式,为每个语音提取的声学向量计算后验音素概率,转换为缩放似然得到CTC特征,维度为75。这些CTC特征经过注意力层、线性层和softmax预测语言身份。
  • Wav2Vec2.0 :wav2vec2.0 - XLSR - 53预训练模型的第一个块是特征编码器,输入320维表示20ms音频样本的向量,经过标准化、7个卷积块(包含1D卷积层、归一化层和GELU激活函数)得到512维向量,输入到变压器块。变压器块有24个编码器块,模型维度1024,内部维度4096,16个注意力头。在变压器块上方添加投影层将1024维输出映射到768维向量。在将特征编码器输出输入到上下文网络之前,对潜在语音表示Z进行掩码。量化块将512维输入向量量化为768维输出向量,模型共有3亿个参数,使用Adam优化器,学习率为0.003。
5.2 标注数据微调

为了微调,考虑使用80维对数梅尔频谱图,窗口大小30ms,重叠15ms,展平为1D向量输入到wav2vec2.0模型。将IIITH - ILSC数据库分为20分钟、2.5小时和12小时三个部分,每种语言的标注数据大致相等,训练和测试分割比例为80:20。将音频样本切成6秒,分类器输入6秒语音得到23维向量,概率最高的语言为最终预测结果。不同数据集大小下模型的EER如下表所示:
| 持续时间 | 20分钟 | 2.5小时 | 12小时 |
| ---- | ---- | ---- | ---- |
| 准确率(%) | 82.10 | 86.27 | 88.13 |
| EER | 13.18 | 11.56 | 10.14 |

以下是wav2vec2.0模型的处理流程mermaid图:

graph TD;
    A[原始语音] --> B[特征编码器];
    B --> C[卷积块];
    C --> D[变压器块];
    D --> E[投影层];
    E --> F[上下文网络];
    B --> G[量化块];
    F --> H[注意力层];
    H --> I[线性层];
    I --> J[softmax];
    J --> K[语言预测];
6. 实验结果

使用等错误率(EER)比较提出的LID系统与最先进的LID系统在IIITH - ILSC数据库上的性能。EER是接收器操作特性(ROC)曲线中误接受率和误拒绝率相同的点,EER越低,准确率越高。以下是各种LID系统的结果:
| 研究 | 系统 | EER |
| ---- | ---- | ---- |
| Ravi等 | i - vector | 17.77 |
| | DNN | 17.99 |
| | DNN - A | 15.18 |
| | 顺序模型(LSTM) | 12.82 |
| | MHA(ResNets) | 12.34 |
| | MHA(DenseResNets) | 12.06 |
| | XLSR - 53预训练(第14层) | 15.56 |
| | Wav2vec2.0 - XLSR - 53微调模型 | 10.14 |

联合声学模型(JAM)在多语言训练时平均EER为10.39,但需要大量标注数据。Resnet和Dense Resnet使用SDC特征和Adam优化器进行探索,分别找到了最佳的块数和特征组合。预训练的Wav2vec2.0 - XLSR - 53模型在未微调时,等错误率在第11层编码器之前下降,第11 - 18层基本不变,之后急剧上升;微调后,第24层的特征表现最佳。使用仅12小时的总标注数据(每种语言约30分钟),微调后的wav2vec2.0 - XLSR - 53模型在语言识别性能上有显著提升。

7. 结论

本研究探索了wav2vec2.0 - XLSR - 53的特征用于LID任务。通过自监督方式在多种语言上进行预训练,显著改善了声学建模和跨语言信息学习,这对缺乏标注数据的低资源印度语言特别有帮助。对于像迈蒂利语、信德语这样的低资源语言,其他LID系统如DNN - A的EER约为28%,带MHA的Resnets的EER约为25%,而本研究提出的特征EER约为15%。

利用Wav2Vec2.0增强印度语境下的语言识别能力

8. 不同模型在低资源语言识别中的表现分析

在低资源语言环境下,各模型的表现差异明显。以下通过表格对比不同模型在部分低资源印度语言上的EER:
| 语言 | DNN - A EER | 带MHA的Resnets EER | 本研究提出特征EER |
| ---- | ---- | ---- | ---- |
| 迈蒂利语 | 约28% | 约25% | 约15% |
| 信德语 | 约28% | 约25% | 约15% |

从表格中可以看出,本研究提出的基于wav2vec2.0 - XLSR - 53的特征在低资源语言识别上具有显著优势。这主要得益于wav2vec2.0能够从无标注数据中学习跨语言信息,然后用少量标注数据进行微调,有效解决了低资源语言标注数据不足的问题。

9. 模型参数与性能的关系

模型的参数设置对其性能有着重要影响。以下分别分析不同模型的关键参数及其对性能的影响:
- Resnet和Dense Resnet
- 块数 :Resnet测试了4和9个块,Dense Resnet测试了7和9个块,最终发现Resnet使用4个块、Dense Resnet使用7个块时性能最佳。
- SDC特征堆叠方式 :测试了0 - 1 - 0、1 - 1 - 1、2 - 1 - 2和3 - 1 - 3等不同的堆叠方式,结果表明2 - 1 - 2的堆叠方式效果最好。
- 学习率 :对于Resnet,Adam优化器学习率为0.001时效果最佳;对于Dense Resnet,学习率为0.0001时表现更好。
- Wav2Vec2.0
- 模型结构 :包含24个编码器块,模型维度1024,内部维度4096,16个注意力头,这些结构设计有助于模型学习语音的复杂特征。
- 掩码操作 :对潜在语音表示Z进行掩码,取p = 0.065随机样本作为起始索引,掩码接下来的M = 5帧,这种掩码策略有助于模型学习更鲁棒的特征。
- 优化器和学习率 :使用Adam优化器,学习率为0.003,合适的优化器和学习率保证了模型的收敛速度和性能。

10. 多语言训练的优势与挑战

多语言训练在语言识别任务中具有明显优势,但也面临一些挑战。
- 优势
- 跨语言信息学习 :如联合声学模型(JAM)在多语言训练时,能够学习到不同语言之间的共享语音信息,提高语言识别的准确性。本研究中的wav2vec2.0 - XLSR - 53通过自监督预训练在多种语言上学习,同样可以捕捉到跨语言的共性特征。
- 提升低资源语言性能 :对于低资源语言,多语言训练可以利用其他语言的信息来辅助学习,从而提升低资源语言的识别性能。
- 挑战
- 标注数据需求大 :像JAM需要在大量标注数据上进行训练,而低资源语言往往难以获取足够的标注数据,这限制了多语言训练模型在低资源语言环境下的应用。
- 模型复杂度 :多语言训练的模型通常结构复杂,参数众多,训练和计算成本较高。

以下是多语言训练的优势与挑战的mermaid流程图:

graph LR;
    A[多语言训练] --> B[优势];
    A --> C[挑战];
    B --> B1[跨语言信息学习];
    B --> B2[提升低资源语言性能];
    C --> C1[标注数据需求大];
    C --> C2[模型复杂度高];
11. 未来展望

基于本次研究,未来在语言识别领域可以从以下几个方面进行深入探索:
- 数据增强技术 :针对低资源语言标注数据不足的问题,研究更有效的数据增强技术,如合成语音数据、语音变换等,以扩充训练数据,提高模型性能。
- 模型轻量化 :在保证模型性能的前提下,探索如何对复杂的模型进行轻量化处理,降低计算成本和存储需求,使其更易于部署在资源受限的设备上。
- 融合多模态信息 :除了语音信息,尝试融合文本、图像等多模态信息,进一步提升语言识别的准确性和鲁棒性。

通过不断的研究和创新,有望进一步提升语言识别技术在各种语言环境下的性能,为语音相关应用提供更强大的支持。

### Wav2Vec2.0 深度学习语音模型使用指南 #### 一、简介 Wav2Vec2.0 是一种先进的自监督学习方法,专为处理音频信号而设计。该模型能够从未标注的大量原始波形数据中自动提取有用的表征,在各种下游任务如语音识别方面表现出色[^1]。 #### 二、安装依赖库 为了方便地获取并运行 Wav2Vec2.0 ,推荐先设置好 Python 环境,并通过 pip 安装必要的软件包: ```bash pip install torch torchaudio transformers datasets ``` 上述命令会下载 PyTorch 及其配套工具 `torchaudio` 和 Hugging Face 的 Transformer 库以及 Datasets 工具,这些都是加载和微调 Wav2Vec2.0 所必需的组件[^3]。 #### 三、加载预训练模型 Hugging Face 提供了一个简单易用的方式来访问已经过大规模语料库预先训练好的 Wav2Vec2.0 版本之一——例如 "facebook/wav2vec2-base-960h" 或者其他变体。下面是如何实例化一个特定版本的例子: ```python from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-large-lv60-self") model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-large-lv60-self") ``` 这段代码片段展示了如何利用官方支持的方式快速初始化处理器对象(processor)与模型(model),以便后续操作。 #### 四、准备输入数据 为了让模型接受新的声音样本作为输入,通常需要对其进行标准化处理,比如调整采样率至统一标准(通常是16kHz), 并转换成适合传递给神经网络的形式。这里给出一段简单的示范程序说明这一过程: ```python import soundfile as sf import librosa audio_input, sample_rate = sf.read("path_to_your_audio_file.wav") if sample_rate != 16_000: audio_input = librosa.resample(audio_input.T, orig_sr=sample_rate, target_sr=16_000).T input_values = processor(audio_input, sampling_rate=16_000, return_tensors="pt").input_values ``` 此部分实现了读取本地文件中的 PCM 数据流,并确保它们符合预期规格;之后再经过 Processor 对象进一步加工成为可供 Model 接收的数据结构。 #### 五、执行推理预测 当一切准备工作完成后就可以让模型开始工作啦!只需要把之前得到的结果送进去就好: ```python with torch.no_grad(): logits = model(input_values).logits predicted_ids = torch.argmax(logits, dim=-1) transcription = processor.decode(predicted_ids[0]) print(f"Transcribed text: {transcription}") ``` 以上就是整个流程中最核心的部分:将处理后的音频特征向量传送给已加载完毕的 Wav2Vec2.0 进行解码运算得出最终的文字描述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值