自动语音识别

任务
自动语音识别(Automatic Speech Recognition, ASR),又称语音转文本(Speech to Text, STT),是将给定音频转录为文本的任务。其应用广泛,例如语音用户界面。
- 输入:自动语音识别模型
- 输出 :转录文本
示例:"行驶在泥泞的乡村道路上,对着潮湿的听众讲话......"
关于自动语音识别
用例
- 虚拟语音助手
许多边缘设备嵌入了虚拟助手以更好地与终端用户交互。这些助手依赖 ASR 模型识别不同的语音命令来执行各种任务。例如,你可以让手机拨打电话、询问常规问题或安排会议。 - 字幕生成
字幕生成模型通过转录将来自源的音频作为输入,为直播或录制视频生成自动字幕。这有助于提高内容的可访问性。例如,观看包含非母语语言的视频时,观众可以依靠字幕理解内容。在在线课堂环境中,它还可以帮助提高信息保留率,使观众在阅读时更快地吸收知识并做笔记。
任务变体
多语言 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(字符错误率)