模型:
facebook/mms-1b-l1107
此检查点是用于多语言自动语音识别(ASR)的模型,并且是Facebook的 Massive Multilingual Speech project 项目的一部分。该检查点基于 Wav2Vec2 architecture ,并利用了适配器模型来转录1000多种语言。该检查点包含10亿个参数,并经过从 facebook/mms-1b 细调的1107种语言。
可以使用此MMS检查点与 Transformers 一起用于转录1107种不同语言的音频。让我们看一个简单的示例。
首先,我们安装transformers和其他一些库
pip install torch accelerate torchaudio datasets pip install --upgrade transformers
注意:为了使用MMS,您需要安装至少transformers >= 4.30。如果尚未提供4.30版本,请确保从源代码安装transformers:
pip install git+https://github.com/huggingface/transformers.git
接下来,我们通过datasets加载一些音频示例。确保音频数据采样率为16000 kHz。
from datasets import load_dataset, Audio # English stream_data = load_dataset("mozilla-foundation/common_voice_13_0", "en", split="test", streaming=True) stream_data = stream_data.cast_column("audio", Audio(sampling_rate=16000)) en_sample = next(iter(stream_data))["audio"]["array"] # French stream_data = load_dataset("mozilla-foundation/common_voice_13_0", "fr", split="test", streaming=True) stream_data = stream_data.cast_column("audio", Audio(sampling_rate=16000)) fr_sample = next(iter(stream_data))["audio"]["array"]
接下来,我们加载模型和处理器
from transformers import Wav2Vec2ForCTC, AutoProcessor import torch model_id = "facebook/mms-1b-l1107" processor = AutoProcessor.from_pretrained(model_id) model = Wav2Vec2ForCTC.from_pretrained(model_id)
现在我们处理音频数据,将处理后的音频数据传递给模型,并转录模型输出,就像我们通常对Wav2Vec2模型(例如 facebook/wav2vec2-base-960h )进行的操作一样
inputs = processor(en_sample, sampling_rate=16_000, return_tensors="pt") with torch.no_grad(): outputs = model(**inputs).logits ids = torch.argmax(outputs, dim=-1)[0] transcription = processor.decode(ids) # 'joe keton disapproved of films and buster also had reservations about the media'
现在,我们可以保留同一个模型在内存中,并通过调用方便的 load_adapter() 函数和 set_target_lang() 函数切换语言适配器。我们将目标语言作为输入传递 - "fra"表示法语。
processor.tokenizer.set_target_lang("fra") model.load_adapter("fra") inputs = processor(fr_sample, sampling_rate=16_000, return_tensors="pt") with torch.no_grad(): outputs = model(**inputs).logits ids = torch.argmax(outputs, dim=-1)[0] transcription = processor.decode(ids) # "ce dernier est volé tout au long de l'histoire romaine"
以同样的方式,可以切换所有其他支持的语言。请参阅:
processor.tokenizer.vocab.keys()
有关更多详细信息,请参阅 the official docs 。
该模型支持1107种语言。在以下中取消勾选以在 ISO 639-3 code 中切换此检查点的所有支持语言。您可以在 MMS Language Coverage Overview 中找到有关语言及其ISO 649-3代码的更多详细信息。
点击以切换