11 Transformers - 使用Pipeline处理音频

文章目录

Transformers 是一个采用当下技术最新、表现最佳( State-of-the-artSoTA)的模型和技术在预训练 自然语言处理计算机视觉音频多模态 模型方面提供推理和训练的的开源库;旨在快速易用,以便每个人都可以开始使用 transformer 模型进行学习或构建。该库不仅包含 Transformer 模型,还包括用于计算机视觉任务的现代卷积网络等非 Transformer 模型。

音频处理

音频和语音处理任务与其他模态略有不同,主要是因为音频作为输入是连续信号。与文本不同,原始音频波形不能像将句子分成单词那样整齐地分成离散的块。为了解决这个问题,原始音频信号通常以固定的间隔采样。如果在一个间隔内采样次数越多,采样率就越高,音频就越接近原始音频源。

以往处理方式是对音频进行预处理,从中提取有用的特征。现在更常见的是直接将原始音频波形馈送到特征编码器以提取音频表示来启动音频和语音处理任务。这样简化了预处理步骤,并允许模型学习最基本的特征。

音频分类

音频分类(Audio classification)是一项根据给定音频数据输入从预定义的类别集合中找到最符合特征的分类的特定任务。具有许多具体的应用,包括:

  • 声学场景分类:使用场景标签("办公室"、"海滩"、"体育场")对音频进行标记。
  • 声学事件检测:使用声音事件标签("汽车喇叭声"、"鲸鱼叫声"、"玻璃破碎声")对音频进行标记。
  • 标记:对包含多种声音的音频进行标记(鸟鸣、会议中的说话人识别)。
  • 音乐分类:使用流派标签("金属"、"嘻哈"、"乡村")对音乐进行标记。
复制代码
from transformers import pipeline

classifier = pipeline(task="audio-classification", model="superb/hubert-base-superb-er")
preds = classifier("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")
preds = [{"score": round(pred["score"], 4), "label": pred["label"]} for pred in preds]
preds

结果:

复制代码
[{'score': 0.4532, 'label': 'hap'},
 {'score': 0.3622, 'label': 'sad'},
 {'score': 0.0943, 'label': 'neu'},
 {'score': 0.0903, 'label': 'ang'}]

自动语音识别

自动语音识别(Automatic speech recognitionASR)实现将语音转录为文本的特定任务。如今,ASR 系统已经嵌入到各种智能技术产品中,如演讲者、电话和汽车等;通过语音识别控制,我们可以要求虚拟助手播放音乐、设置提醒和告诉天气情况等。

Transformer 架构还帮助解决了一个关键挑战即低资源语言。通过在大量语音数据上进行预训练,仅在一个低资源语言的一小时标记语音数据上进行微调,仍然可以产生与以前在100倍更多标记数据上训练的 ASR 系统相比高质量的结果。

复制代码
from transformers import pipeline

transcriber = pipeline(task="automatic-speech-recognition", model="openai/whisper-small")
transcriber("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")

结果:

复制代码
{'text': ' I have a dream that one day this nation will rise up and live out the true meaning of its creed.'}

语音合成

语音合成(Text-to-speechTTS)是一项将文本转换为语音的特定任务,可以为不同的话语者用不同的语言生成语音。目前在 transformer中有几种语音合成模型可用,如 [Bark],[MMS], [VITS] 和 [SpeechT5] 等。

通过实例化"Pipeline并指定任务标识为 text-to-audio(另名 text-to-speech)轻松生成音频。有的模型如 Bark 还可以通过条件反射产生非语言交流如大笑、叹息和哭泣,甚至音乐等。

通过实例化 Pipeline 并指定任务名为 text-to-speech 并传入 suno/bark-small 模型实现语音合成:

复制代码
from transformers import pipeline

pipe = pipeline("text-to-speech", model="suno/bark-small")
text = "[clears throat] This is a test ... and I just took a long pause."
output = pipe(text)

转换完成后,可使用下面的代码案例来听听转换后的语音:

复制代码
from IPython.display import Audio
Audio(output["audio"], rate=output["sampling_rate"])

目前在 Transformers 中提供的语音合成模型是 SpeechT5FastSpeech2Conformer,将来会不断的增加。

零样本音频分类

零样本音频分类(Zero-shot Audio classification)是对给定的音频输入识别音频类别并指派到给定的以前未知的分类中的特定任务。

首先将 Pipeline 实例化并在实例化过程中指定任务为 zero-shot-audio-classification

复制代码
from transformers import pipeline
from datasets import load_dataset

classifier = pipeline(task="zero-shot-audio-classification")

然后,我们准备需要的分析音频,这里我们使用现有的数据集[ ashraq/esc50 ]中训练集中提取一条数据中的音频:

复制代码
dataset = load_dataset("ashraq/esc50")
audio = dataset["train"][1]["audio"]["array"]

其中,数据集的样式如下:

复制代码
{
  'filename': '1-100210-B-36.wav', 
  'fold': 1, 
  'target': 36, 
  'category': 'vacuum_cleaner', 
  'esc10': False, 
  'src_file': 100210, 
  'take': 'B', 
  'audio': {
      'path': None, 
      'array': array([0.53897095, 0.39627075, 0.26739502, ..., 0.09729004, 0.11227417,0.07983398]),
      'sampling_rate': 44100
   }
}

从上面的数据可以看到,提取的音频数据是已经处理好的张量;如果实际加载原始音频数据或文件,需要将音频加载并预处理变成所需的张量。

最后,传入待分析的音频并通过输入参数 candidate_labels设置新的分类集合后对给定的音频预测,并将结果打印出来:

复制代码
# audio是复合类型,可以是numpy.ndarray, 字节数组或者字符串的一种
result = classifier(audio, candidate_labels=["Sound of a dog", "Sound of vaccum cleaner","chirping_birds"])
print(result)

结果:

复制代码
[
   {'score': 0.9998486042022705, 'label': 'chirping_birds'}, 
   {'score': 7.838715828256682e-05, 'label': 'Sound of vaccum cleaner'}, 
   {'score': 7.297335105249658e-05, 'label': 'Sound of a dog'}
]
相关推荐
人工智能训练12 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
源于花海13 小时前
迁移学习相关的期刊和会议
人工智能·机器学习·迁移学习·期刊会议
DisonTangor14 小时前
DeepSeek-OCR 2: 视觉因果流
人工智能·开源·aigc·ocr·deepseek
薛定谔的猫198214 小时前
二十一、基于 Hugging Face Transformers 实现中文情感分析情感分析
人工智能·自然语言处理·大模型 训练 调优
发哥来了15 小时前
《AI视频生成技术原理剖析及金管道·图生视频的应用实践》
人工智能
数智联AI团队15 小时前
AI搜索引领开源大模型新浪潮,技术创新重塑信息检索未来格局
人工智能·开源
不懒不懒15 小时前
【线性 VS 逻辑回归:一篇讲透两种核心回归模型】
人工智能·机器学习
冰西瓜60015 小时前
从项目入手机器学习——(四)特征工程(简单特征探索)
人工智能·机器学习
Ryan老房15 小时前
未来已来-AI标注工具的下一个10年
人工智能·yolo·目标检测·ai
丝斯201116 小时前
AI学习笔记整理(66)——多模态大模型MOE-LLAVA
人工智能·笔记·学习