通过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(字符错误率)
相关推荐
武子康11 分钟前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
舒一笑40 分钟前
我的开源项目-PandaCoder迎来史诗级大更新啦
后端·程序员·intellij idea
@昵称不存在2 小时前
Flask input 和datalist结合
后端·python·flask
zhuyasen2 小时前
Go 分布式任务和定时任务太难?sasynq 让异步任务从未如此简单
后端·go
东林牧之2 小时前
Django+celery异步:拿来即用,可移植性高
后端·python·django
超浪的晨3 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
AntBlack3 小时前
从小不学好 ,影刀 + ddddocr 实现图片验证码认证自动化
后端·python·计算机视觉
Pomelo_刘金4 小时前
Clean Architecture 整洁架构:借一只闹钟讲明白「整洁架构」的来龙去脉
后端·架构·rust
双力臂4044 小时前
Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成
java·spring boot·后端·单元测试
midsummer_woo6 小时前
基于spring boot的医院挂号就诊系统(源码+论文)
java·spring boot·后端