FaceBook叫板OpenAI!开源 Omnilingual ASR:支持1600多种语言的开源多语言语音识别

在巴基斯坦和利比里亚语料库创建工作中拍摄的照片。
Omnilingual ASR 是一个开源语音识别系统,支持超过 1,600 种语言——其中包括数百种此前任何 ASR 技术都未曾覆盖的语言。该系统以实现广泛可及性为设计理念,仅需少量配对示例即可添加新语言,无需专业经验或庞大数据集。通过将可扩展的零样本学习与灵活的模型家族相结合,Omnilingual ASR 致力于让语音技术更具包容性和适应性,服务于全球社群与研究者。
- Huggingface Demo
- Huggingface Dataset
- Paper
- Blogpost
- Code
我们的7B-LLM-ASR系统在1600多种语言上实现了最先进的性能表现,其中78%的语言字符错误率(CER)低于10。
文档
快速入门
- 安装与基础用法 - 环境配置与首次转录
- 推理流程 - 包含批量处理、语言条件设置和上下文示例的完整转录指南
- 支持语言 - 查看1600+种支持语言的完整列表
模型与架构
- 模型规格 - 可用模型、参数及内存需求
- 架构概述 - 关于W2V、CTC和LLM模型家族的技术细节
- 资源管理 - 模型、分词器和数据集的配置系统
训练与数据流程
- 数据准备 - 多语言数据集准备的端到端指南,包含HuggingFace集成和parquet格式处理
- 训练方案 - CTC与LLM模型训练的预配置工作流
安装
该模型基于科研级序列建模工具包fairseq2开发。虽然我们提供跨平台的参考推理流程,但音频支持需要libsndfile依赖库(Mac系统:brew install libsndfile;Windows系统可能需要额外配置)。
# using pip
pip install omnilingual-asr# using uv
uv add omnilingual-asr
推断
from omnilingual_asr.models.inference.pipeline import ASRInferencePipelinepipeline = ASRInferencePipeline(model_card="omniASR_LLM_7B")audio_files = ["/path/to/eng_audio1.flac", "/path/to/deu_audio2.wav"]
lang = ["eng_Latn", "deu_Latn"]
transcriptions = pipeline.transcribe(audio_files, lang=lang, batch_size=2)
关于运行特定模型的更多详细信息,请查阅 /src/omnilingual_asr/models/inference 目录。
⚠️ 重要提示: 目前推理仅接受时长少于40秒的音频文件。我们计划很快增加对无限时长音频文件转录的支持。
支持的语言
要查看1600多种支持语言的完整列表,可以通过编程方式访问语言列表。:
from omnilingual_asr.models.wav2vec2_llama.lang_ids import supported_langs# Print all supported languages
print(f"Total supported languages: {len(supported_langs)}")
print(supported_langs)# Check if a specific language is supported
if "eng_Latn" in supported_langs:print("English (Latin script) is supported!")
语言遵循 {语言代码}_{文字} 格式,例如 eng_Latn - 英语(拉丁字母),cmn_Hans - 普通话(简体中文)…
使用 HuggingFace 数据集 🤗
我们在 HuggingFace 上提供了基于 CC-BY-4.0 许可 的大规模多语言语音数据集:facebook/omnilingual-asr-corpus。该数据集可直接用于我们的推理流程进行评估或测试:
pip install "omnilingual-asr[data]"
from datasets import load_dataset
from omnilingual_asr.models.inference.pipeline import ASRInferencePipeline# Load dataset for a specific language (e.g., Ligurian)
omni_dataset = load_dataset("facebook/omnilingual-asr-corpus", "lij_Latn", split="train", streaming=True)
batch = next(omni_dataset.iter(5))# Convert to pipeline input format
audio_data = [{"waveform": x["array"], "sample_rate": x["sampling_rate"]}for x in batch["audio"]]# Run inference
pipeline = ASRInferencePipeline(model_card="omniASR_LLM_7B")
transcriptions = pipeline.transcribe(audio_data, batch_size=2)# Display results
for i, (transcription, original_text) in enumerate(zip(transcriptions, batch["raw_text"]), 1):print(f"\n Sample {i}:")print(f" Ground Truth: {original_text}")print(f" Predicted: {transcription}")
模型架构
| 模型名称 | 特征 | 参数量 | 下载大小(FP32) | 推理显存¹ | 实时系数¹ (相对速度)² |
|---|---|---|---|---|---|
omniASR_W2V_300M | SSL | 317_390_592 | 1.2 GiB | ||
omniASR_W2V_1B | SSL | 965_514_752 | 3.6 GiB | ||
omniASR_W2V_3B | SSL | 3_064_124_672 | 12.0 GiB | ||
omniASR_W2V_7B | SSL | 6_488_487_168 | 25.0 GiB | ||
omniASR_CTC_300M | ASR | 325_494_996 | 1.3 GiB | ~2 GiB | 0.001 (96x) |
omniASR_CTC_1B | ASR | 975_065_300 | 3.7 GiB | ~3 GiB | 0.002 (48x) |
omniASR_CTC_3B | ASR | 3_080_423_636 | 12.0 GiB | ~8 GiB | 0.003 (32x) |
omniASR_CTC_7B | ASR | 6_504_786_132 | 25.0 GiB | ~15 GiB | 0.006 (16x) |
omniASR_LLM_300M | ASR with optional language conditioning | 1_627_603_584 | 6.1 GiB | ~5 GiB | 0.090 (~1x) |
omniASR_LLM_1B | ASR with optional language conditioning | 2_275_710_592 | 8.5 GiB | ~6 GiB | 0.091 (~1x) |
omniASR_LLM_3B | ASR with optional language conditioning | 4_376_679_040 | 17.0 GiB | ~10 GiB | 0.093 (~1x) |
omniASR_LLM_7B | ASR with optional language conditioning | 7_801_041_536 | 30.0 GiB | ~17 GiB | 0.092 (~1x) |
omniASR_LLM_7B_ZS | Zero-Shot ASR | 7_810_900_608 | 30.0 GiB | ~20 GiB | 0.194 (~0.5x) |
omniASR_tokenizer | Tokenizer for most of architectures (except omniASR_LLM_7B) | - | 100 KiB | - | |
omniASR_tokenizer_v7 | Tokenizer for omniASR_LLM_7B model | - | 100 KiB | - |
¹ (batch=1, audio_len=30s, BF16, A100)
² Relative speed to omniASR_LLM_7B
模型下载与存储
- 自动下载:模型会在首次训练或推理时自动下载
- 存储路径:模型默认保存在
~/.cache/fairseq2/assets/目录
架构文档
我们已在模型目录(src/omnilingual_asr/models)中提供高层架构概览,各模型系列的独立配置存放在对应子目录:
- SSL模型:
src/omnilingual_asr/models/wav2vec2_ssl - CTC模型:
src/omnilingual_asr/models/wav2vec2_asr - LLM模型:
src/omnilingual_asr/models/wav2vec2_llama
训练指南
若需基于自有数据微调已发布的检查点,请先查阅数据准备指南,再参照微调配方指南进行操作。
许可协议
Omnilingual ASR代码及模型基于Apache 2.0协议开源。
