通过huggingface学习【自动语音识别(Automatic Speech Recognition, ASR)】

自动语音识别

任务

自动语音识别(Automatic Speech Recognition, ASR),又称语音转文本(Speech to Text, STT),是将给定音频转录为文本的任务。其应用广泛,例如语音用户界面。

  • 输入:自动语音识别模型
  • 输出 :转录文本
    示例:"行驶在泥泞的乡村道路上,对着潮湿的听众讲话......"

关于自动语音识别

用例
  1. 虚拟语音助手
    许多边缘设备嵌入了虚拟助手以更好地与终端用户交互。这些助手依赖 ASR 模型识别不同的语音命令来执行各种任务。例如,你可以让手机拨打电话、询问常规问题或安排会议。
  2. 字幕生成
    字幕生成模型通过转录将来自源的音频作为输入,为直播或录制视频生成自动字幕。这有助于提高内容的可访问性。例如,观看包含非母语语言的视频时,观众可以依靠字幕理解内容。在在线课堂环境中,它还可以帮助提高信息保留率,使观众在阅读时更快地吸收知识并做笔记。
任务变体

多语言 ASR

多语言 ASR 模型可以将包含多种语言的音频输入转换为转录文本。一些多语言 ASR 模型包含语言识别模块以提高性能。

多语言 ASR 的使用已变得流行,仅用一个模型处理所有语言的想法可以简化生产流程。以 Whisper 为例,它展示了如何用单个模型处理 100 多种语言。

推理

Hub 包含超过 17,000 个 ASR 模型,您可以使用模型页面小部件在浏览器中立即测试这些模型。您还可以通过无服务器推理 API 将任何模型用作服务。我们还通过无服务器推理 API 支持 transformers、speechbrain、NeMo 和 espnet 等库。以下是运行推理的简单代码片段:

python

运行

kotlin 复制代码
# Python示例(使用requests库)
import json
import requests

headers = {"Authorization": f"Bearer {API_TOKEN}"}
API_URL = "https://router.hf-mirror.com/hf-inference/models/openai/whisper-large-v3"

def query(filename):
    with open(filename, "rb") as f:
        data = f.read()
    response = requests.request("POST", API_URL, headers=headers, data=data)
    return json.loads(response.content.decode("utf-8"))

data = query("sample1.flac")

您也可以使用 JavaScript 客户端 huggingface.js 通过无服务器推理 API 转录音频:

javascript

javascript 复制代码
// JavaScript示例(使用huggingface.js)
import { InferenceClient } from "@huggingface/inference";

const inference = new InferenceClient(HF_TOKEN);
await inference.automaticSpeechRecognition({
    data: await (await fetch("sample.flac")).blob(),
    model: "openai/whisper-large-v3",
});

对于与 transformers 兼容的模型,如 Whisper、Wav2Vec2 和 HuBERT,您还可以使用该库按如下方式运行推理:

python

运行

ini 复制代码
# Python示例(使用transformers库)
# 先安装库:pip install --upgrade transformers

from transformers import pipeline

pipe = pipeline("automatic-speech-recognition", "openai/whisper-large-v3")

result = pipe("sample.flac")
# 输出:{'text': "GOING ALONG SLUSHY COUNTRY ROADS AND SPEAKING TO DAMP AUDIENCES IN DRAUGHTY SCHOOL ROOMS DAY AFTER DAY FOR A FORTNIGHT HE'LL HAVE TO PUT IN AN APPEARANCE AT SOME PLACE OF WORSHIP ON SUNDAY MORNING AND HE CAN COME TO US IMMEDIATELY AFTERWARDS"}

使用自有数据解决 ASR 问题

我们有一个好消息!您可以在特定语言上对基础语音模型进行微调(迁移学习),而无需大量数据。现有的预训练模型包括 Whisper、Wav2Vec2-MMS 和 HuBERT。OpenAI 的 Whisper 模型是一个大型多语言模型,经过 100 多种语言和 400 万小时语音的训练。

以下详细博客文章展示了如何在带标签的数据上对预训练的 Whisper 检查点进行 ASR 微调。通过正确的数据和策略,您甚至可以在免费的 Google Colab 实例上微调高性能模型!建议阅读博客文章了解更多信息!

HF Mirror Whisper 活动

2022 年 12 月,超过 450 名参与者合作、微调和共享了 600 多个 Whisper ASR 模型,涵盖 100 多种不同语言。您可以在活动的语音识别排行榜上比较这些模型。

这些活动有助于实现所有语言(包括低资源语言)的 ASR 民主化。除了训练好的模型外,该活动还有助于积累实用的协作知识。

兼容库

  • ESPnet
  • NeMo
  • speechbrain
  • Transformers
  • Transformers.js

相关资源

  • 使用自动语音识别的 Spaces(注:Spaces 可能指平台上的应用空间或项目)
  • 自动语音识别指标:WER(词错误率)、CER(字符错误率)
相关推荐
yuan1999724 分钟前
Spring Boot 启动流程及配置类解析原理
java·spring boot·后端
洗澡水加冰2 小时前
n8n搭建多阶段交互式工作流
后端·llm
陈随易2 小时前
Univer v0.8.0 发布,开源免费版 Google Sheets
前端·后端·程序员
六月的雨在掘金2 小时前
通义灵码 2.5 | 一个更懂开发者的 AI 编程助手
后端
朱龙凯2 小时前
MySQL那些事
后端
Re2752 小时前
剖析 MyBatis 延迟加载底层原理(1)
后端·面试
Victor3562 小时前
MySQL(63)如何进行数据库读写分离?
后端
Cache技术分享2 小时前
99. Java 继承(Inheritance)
前端·后端
M1A13 小时前
Python数据结构操作:全面解析与实践
后端·python
程序员蜗牛3 小时前
Controller层代码瘦身70%!5招打通任督二脉,效率飙升
后端