Whisper-AT:抗噪语音辨认模子(Whisper)实现通用音频变乱标记(Audio Tagger)

[复制链接]
发表于 2026-2-22 10:27:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
       本文先容一个同一音频标记(Audio Tagger)和语音辨认(ASR)的模子:Whisper-AT,通过冻结Whisper的主干,并在其之上训练一个轻量级的音频标记模子。Whisper-AT在额外盘算资本不到1%的环境下,可以在单次前向通报中辨认音频变乱以及口语文本。这个模子的提出是创建一个风趣的发现底子上:Whisper对真实天下配景声音非常鲁棒,其音频表现实际上并不是噪声稳定的,而是与非语音声音高度相干,这表明Whisper是在噪声范例的底子上辨认语音的。
1.概述:

       Whisper-AT 是创建在 Whisper 主动语音辨认(ASR)模子底子上的一个模子。Whisper 模子利用了一个包罗 68 万小时标注语音的大规模语料库举行训练,这些语料是在各种差异条件下录制的。Whisper 模子以其在实际配景噪音(如音乐)下的鲁棒性著称。只管云云,其音频表现并非噪音稳定,而是与非语音声音高度相干。这意味着 Whisper 在辨认语音时会依据配景噪音范例举行调解。
       在上述发现的底子上,有一个令人高兴的应用方式:我们可以或许基于Whisper构建一个同一的模子,用于主动语音辨认(ASR)和音频标记,以同时辨认口语文本和配景声音(比方音乐、喇叭等),这在视频转录、语音助手和助听器体系等应用中非常理想。Whisper是如许一个同一模子的理想底子,由于1)它对配景声音具有鲁棒性,2)它的中心表现编码了丰富的一样平常音频变乱信息,这为音频标记提供了坚固的底子。只管云云,原始的Whisper模子不输作声音标签,以是我们必要在Whisper的中心表现之上训练一个模子,以使其可以或许猜测声音种别。请注意,我们特意不修改原始Whisper模子的权重,而是在其上添加新的音频标记层,以便Whisper的主动语音辨认本事不受影响,而且可以在单个前向通报中天生文本和音频标签。我们称这个同一的ASR和音频标记模子为Whisper-AT。
紧张发现:


  • 噪音变革的表现:

    • Whisper 的音频表现编码了丰富的非语音配景声音信息,这与通常寻求噪音稳定表现的 ASR 模子目的差异。
    • 这一特性使得 Whisper 可以或许在各种噪音条件下通过辨认和顺应噪音来保持其鲁棒性。

  • ASR 和音频标签的同一模子:

    • 通过冻结 Whisper 模子的骨干网络,并在其上训练一个轻量级的音频标签模子,Whisper-AT 可以在一次前向通报中同时辨认音频变乱和语音文本,额外的盘算资本不敷 1%。
    • Whisper-AT 在音频变乱检测方面体现精彩,同时保持了 Whisper 的 ASR 功能。

技能细节:


  • Whisper ASR 模子:

    • Whisper 利用基于 Transformer 的编码器-解码器架构。
    • 其训练集包罗从互联网上网络的 68 万小时音频-文本对,涵盖了广泛的环境、灌音设置、语言人和语言。

  • 抗噪机制:

    • Whisper 的鲁棒性并非通过噪音稳定性实现,而是通过在其表现中编码噪音范例。
    • 这一机制使得 Whisper 可以或许根据配景噪音范例来转录文本,从而在嘈杂条件下体现良好。

  • 构建 Whisper-AT:

    • Whisper-AT 是通过在 Whisper 模子上添加新的音频标签层而构建的,未修改其原始权重。

    • 探索了差异的音频标签层集成方法,包罗:

      • Last-MLP:对 Whisper 的末了一层表现举行时间均值池化,然后应用线性层。
      • WA-MLP:对全部层的表现举行加权匀称,然后应用线性层。
      • WA-Tr:用时间 Transformer 层更换线性层。
      • TL-Tr:利用时间和条理 Transformer 处理处罚全部层的表现。


  • 服从考量:

    • 为保持盘算服从,接纳了各种战略,比方镌汰表现的序列长度,并在应用音频标签 Transformer 之前可选地低落维度。

性能:



  • Whisper-AT 在 AudioSet 上到达了 41.5 的 mAP,略低于独立的音频标签模子,但处理处罚速率显着更快,高出 40 倍。
意义:



  • 可以或许同时实行 ASR 和音频标签任务,使得 Whisper-AT 非常得当于视频转录、语音助手和助听器体系等应用场景,在这些场景中必要同时举行语音文本和声学场景分析。
2.代码:

       欲相识具体的实现和实行结果,请访问 GitHub: github.com/yuangongnd/whisper-at.
       下面是对 Whisper-AT 架构的扼要表明,通过徐徐分析其紧张组件和功能,资助明白其工作原理。
安装和预备

起首,确保你已经安装了 Whisper 和相干的依靠项:
  1. pip install git+https://github.com/openai/whisper.git
  2. pip install torch torchaudio
  3. pip install transformers datasets
复制代码

代码结构

扼要 Whisper-AT 的代码结构如下所示:
  1. Whisper-AT/
  2. │
  3. ├── whisper_at.py
  4. ├── train.py
  5. ├── dataset.py
  6. ├── utils.py
  7. └── README.md
复制代码
whisper_at.py - Whisper-AT 模子

  1. import torch
  2. import torch.nn as nn
  3. import whisper
  4. class WhisperAT(nn.Module):
  5.     def __init__(self, model_name="base"):
  6.         super(WhisperAT, self).__init__()
  7.         self.whisper = whisper.load_model(model_name)
  8.         self.audio_tagging_head = nn.Linear(self.whisper.dims, 527)  # 527 是 AudioSet 的标签数
  9.     def forward(self, audio):
  10.         # 获取 Whisper 的中间表示
  11.         with torch.no_grad():
  12.             features = self.whisper.encode(audio)
  13.         # 通过音频标签头
  14.         audio_tagging_output = self.audio_tagging_head(features.mean(dim=1))
  15.         return audio_tagging_output
复制代码
train.py - 训练脚本

  1. import torch
  2. from torch.utils.data import DataLoader
  3. from dataset import AudioSetDataset
  4. from whisper_at import WhisperAT
  5. import torch.optim as optim
  6. import torch.nn.functional as F
  7. def train():
  8.     # 加载数据集
  9.     train_dataset = AudioSetDataset("path/to/training/data")
  10.     train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)
  11.     # 初始化模型
  12.     model = WhisperAT()
  13.     model.train()
  14.     # 定义优化器
  15.     optimizer = optim.Adam(model.parameters(), lr=1e-4)
  16.     for epoch in range(10):  # 假设训练10个epoch
  17.         for audio, labels in train_loader:
  18.             optimizer.zero_grad()
  19.             # 前向传播
  20.             outputs = model(audio)
  21.             # 计算损失
  22.             loss = F.binary_cross_entropy_with_logits(outputs, labels)
  23.             # 反向传播和优化
  24.             loss.backward()
  25.             optimizer.step()
  26.             print(f"Epoch {epoch}, Loss: {loss.item()}")
  27. if __name__ == "__main__":
  28.     train()
复制代码
dataset.py - 数据集处理处罚

  1. import torch
  2. from torch.utils.data import Dataset
  3. import torchaudio
  4. class AudioSetDataset(Dataset):
  5.     def __init__(self, data_path):
  6.         self.data_path = data_path
  7.         self.audio_files = [...]  # 这里假设你有一个包含所有音频文件路径的列表
  8.         self.labels = [...]  # 这里假设你有一个包含所有对应标签的列表
  9.     def __len__(self):
  10.         return len(self.audio_files)
  11.     def __getitem__(self, idx):
  12.         # 加载音频
  13.         audio, sample_rate = torchaudio.load(self.audio_files[idx])
  14.         # 获取对应标签
  15.         labels = torch.tensor(self.labels[idx])
  16.         return audio, labels
复制代码
utils.py - 辅助功能

  1. import torch
  2. def save_model(model, path):
  3.     torch.save(model.state_dict(), path)
  4. def load_model(model, path):
  5.     model.load_state_dict(torch.load(path))
  6.     model.eval()
复制代码
具体表明


  • Whisper-AT 模子 (whisper_at.py):

    • WhisperAT 类继续自 nn.Module,初始化时加载 Whisper 模子,并在其上添加一个线性层用于音频标签任务。
    • forward 方法起首调用 Whisper 模子的 encode 方法获取音频特性,然后将这些特性通报给音频标签头(线性层)以天生标签输出。

  • 训练脚本 (train.py):

    • train 函数中,数据集被加载并通报给 DataLoader。
    • 模子实例化并设置为训练模式。
    • 界说了 Adam 优化器和二进制交织熵丧失函数。
    • 在训练循环中,音频输入通过模子天生输出,盘算丧失并实行反向传播和优化。

  • 数据集处理处罚 (dataset.py):

    • AudioSetDataset 类继续自 Dataset,实现了音频数据和标签的加载。
    • __getitem__ 方法加载音频文件并返覆信频张量和对应标签。

  • 辅助功能 (utils.py):

    • 包罗生存和加载模子状态的函数,方便模子的恒久化和规复。

       通过以上代码结构息争释,可以资助明白 Whisper-AT 的实现和训练流程。可以根据必要扩展这些代码来顺应具体的应用场景和数据集。
附录:

A. 通用音频变乱标记(Audio Tagger)

通用音频变乱标记 (Audio Tagger) 是一种用于辨认和分类音频信号中差异变乱的技能。它在音频处理处罚范畴具有广泛的应用,包罗环境声音辨认、音乐信息检索、语音辨认、和多媒体内容分析等。
焦点概念


  • 音频变乱(Audio Event): 音频变乱指的是音频信号中的特定声音,如鸟鸣、犬吠、警笛声、音乐片断或人声。这些变乱可以是短暂的瞬时声音或连续一段时间的信号。
  • 标签(Tagging): 标签是对音频信号中的变乱举行分类或标注的过程。每个标签对应一个音频变乱种别,目的是辨认音频信号中包罗哪些范例的声音。
技能实现

1. 特性提取

特性提取是音频变乱标记的第一步,它将原始音频信号转换为得当分类的特性向量。常用的特性提取方法包罗:


  • 梅尔频率倒谱系数(MFCC):捕捉音频信号的短时频谱特性。
  • 谱质心(Spectral Centroid):形貌音频信号的亮度。
  • 零交织率(Zero-Crossing Rate):音频信号通过零点的次数。
  • 色度特性(Chromagram):表现音频信号的音调内容。
2. 特性表现和建模

一旦提取了音频特性,必要将其输入到呆板学习模子中举行训练和猜测。常用的模子包罗:


  • 传统呆板学习模子:如高斯肴杂模子 (GMM)、支持向量机 (SVM) 和隐马尔可夫模子 (HMM)。
  • 深度学习模子:卷积神经网络 (CNN) 和递归神经网络 (RNN) 在音频变乱标记中体现精彩,尤其是可以或许处理处罚复杂的时间和频率模式。
3. 标签分配和分类

在训练模子之后,对新的音频信号举行标签分配。模子根据输入的特性向量猜测音频信号所属的变乱种别。
应用实例



  • 环境声音辨认:辨认并分类自然环境中的声音,如鸟叫、雨声、车流声等。
  • 音乐信息检索:分析和分类音乐片断,辨认音乐范例、乐器声或特定的音乐模式。
  • 语音辨认:辨认和分类语音中的特定变乱,如关键词检测、语音运动检测等。
前沿研究


  • 多任务学习: 多任务学习方法通过在多个相干任务上共享表现来进步模子性能。比方,PSLA(Pretraining, Sampling, Labeling, and Aggregation)方法在音频标签任务中取得了显着盼望 。
  • 自监视学习: 自监视学习方法通过利用大量未标记数据举行预训练,显着进步了模子在音频变乱标记任务上的体现。
  • 基于Transformer的模子: 比方,Audio Spectrogram Transformer (AST) 利用Transformer架构的上风,在多个音频分类任务上体现优秀,逾越了传统的卷积神经网络(CNN)方法 。
总结

通用音频变乱标记在当代音频处理处罚范畴发挥偏紧张作用。通过团结特性提取、先辈的呆板学习模子和深度学习技能,音频变乱标记可以或许实现高效、精确的音频信号分类和辨认。在将来,随着多任务学习、自监视学习和更先辈的深度学习模子的引入,音频变乱标记技能将继续发展和完满。
B. Whisper模子

Whisper 是由 OpenAI 开发的一个先辈的主动语音辨认(ASR)模子。它接纳了Transformer架构,特殊善于捕捉音频信号中的全局特性和时间动态。这使得 Whisper 可以或许在多语言和多任务的语音辨认任务中体现优秀。
Whisper 模子简介

1. 模子架构

Whisper模子的焦点是Transformer架构,包罗编码器(Encoder)息争码器(Decoder)。该架构利用多头自注意力机制(Multi-Head Self-Attention)和位置编码(Positional Encoding)来处理处罚音频信号,捕捉当时间动态和全局特性。


  • 编码器(Encoder):负责吸收和处理处罚输入音频信号,将其转换为高维度的中心表现。编码器由多层自注意力和前馈神经网络构成。
  • 解码器(Decoder):利用编码器天生的中心表现,团结上下文信息,天生目的输出(如转录文本)。解码器结构雷同于编码器,同样由多层自注意力和前馈神经网络构成。
2. 自注意力机制

自注意力机制允许模子在处理处罚音频信号时,动态地关注差异部分的信息,从而捕捉长程依靠关系。这种机制特殊实用于音频信号处理处罚,由于语音信息通常分布在整个序列中,必要全局视角举行建模。
3. 位置编码

由于音频信号是一连的时间序列数据,位置编码在Whisper模子中起着关键作用。位置编码通过为每个时间步添加唯一的位置信息,使得模子可以或许辨认音频信号中的序次和时间动态。
Whisper 模子的特性和上风


  • 多语言支持:Whisper 支持多种语言的语音辨认任务,可以或许处理处罚差异语言的音频信号。
  • 高精确性:得益于Transformer架构和自注意力机制,Whisper在多任务语音辨认任务中体现精彩,精确率高。
  • 长程依靠建模:通过自注意力机制,Whisper可以或许捕捉音频信号中的长程依靠关系,处理处罚长时间的语音数据更加有效。
  • 机动性和扩展性:Whisper可以通过预训练和微调,顺应差异的语音辨认任务和数据集。
Whisper 模子的应用

Whisper 可应用于多种语音辨认和处理处罚任务,包罗:


  • 及时语音转录:将及时语音输入转录为文本,用于字幕天生、集会记载等场景。
  • 多语言翻译:及时翻译差异语言的语音输入,促进跨语言互换。
  • 语音指令辨认:用于智能装备和语音助手的语音指令辨认,进步交互体验。



回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表