模型简介
模型特点
模型能力
使用案例
许可协议: mit
语言: 法语
库名称: transformers
流水线标签: 自动语音识别
缩略图: 无
标签:
- 自动语音识别
- hf-asr排行榜
数据集:
- mozilla-foundation/common_voice_13_0
- facebook/multilingual_librispeech
- facebook/voxpopuli
- google/fleurs
- gigant/african_accented_french
评估指标:
- 词错误率(WER)
模型索引:
- 名称: whisper-large-v3-french
结果:- 任务:
名称: 自动语音识别
类型: automatic-speech-recognition
数据集:
名称: Common Voice 13.0
类型: mozilla-foundation/common_voice_13_0
配置: fr
拆分: test
参数:
语言: fr
指标:- 名称: WER
类型: wer
值: 7.28
- 名称: WER
- 任务:
名称: 自动语音识别
类型: automatic-speech-recognition
数据集:
名称: 多语言LibriSpeech(MLS)
类型: facebook/multilingual_librispeech
配置: french
拆分: test
参数:
语言: fr
指标:- 名称: WER
类型: wer
值: 3.98
- 名称: WER
- 任务:
名称: 自动语音识别
类型: automatic-speech-recognition
数据集:
名称: VoxPopuli
类型: facebook/voxpopuli
配置: fr
拆分: test
参数:
语言: fr
指标:- 名称: WER
类型: wer
值: 8.91
- 名称: WER
- 任务:
名称: 自动语音识别
类型: automatic-speech-recognition
数据集:
名称: Fleurs
类型: google/fleurs
配置: fr_fr
拆分: test
参数:
语言: fr
指标:- 名称: WER
类型: wer
值: 4.84
- 名称: WER
- 任务:
名称: 自动语音识别
类型: automatic-speech-recognition
数据集:
名称: 非洲口音法语
类型: gigant/african_accented_french
配置: fr
拆分: test
参数:
语言: fr
指标:- 名称: WER
类型: wer
值: 4.20
- 名称: WER
- 任务:
Whisper-Large-V3-法语版
Whisper-Large-V3-法语版是基于openai/whisper-large-v3
进行微调的模型,旨在进一步提升法语识别性能。该模型经过训练可预测大小写、标点符号和数字。虽然这可能略微影响性能,但我们认为这能扩大其应用范围。
该模型已转换为多种格式,便于在不同库中使用,包括transformers、openai-whisper、fasterwhisper、whisper.cpp、candle、mlx等。
目录
性能
我们评估了模型在短文本和长文本转录上的表现,并在分布内和分布外数据集上进行了测试,以全面分析其准确性、泛化能力和鲁棒性。
请注意,报告的WER是将数字转换为文本、去除标点符号(撇号和连字符除外)并将所有字符转换为小写后的结果。
所有公共数据集的评估结果可在此处查看。
短文本转录
由于法语中缺乏现成的域外(OOD)和长文本测试集,我们使用了Zaion Lab的内部测试集进行评估。这些数据集包含来自呼叫中心对话的人工标注音频-文本对,以其显著的背景噪声和领域特定术语而著称。
长文本转录
长文本转录使用🤗 Hugging Face流水线进行快速评估。音频文件被分割成30秒的片段并行处理。
使用方法
Hugging Face流水线
该模型可以轻松使用🤗 Hugging Face的pipeline
类进行音频转录。
对于长文本转录(>30秒),可以通过传递chunk_length_s
参数激活处理。这种方法将音频分割成较小的片段并行处理,然后通过寻找最长公共序列在步长处连接它们。虽然这种分块长文本方法在性能上可能略逊于OpenAI的顺序算法,但它提供了9倍更快的推理速度。
import torch
from datasets import load_dataset
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
# 加载模型
model_name_or_path = "bofenghuang/whisper-large-v3-french"
processor = AutoProcessor.from_pretrained(model_name_or_path)
model = AutoModelForSpeechSeq2Seq.from_pretrained(
model_name_or_path,
torch_dtype=torch_dtype,
low_cpu_mem_usage=True,
)
model.to(device)
# 初始化流水线
pipe = pipeline(
"automatic-speech-recognition",
model=model,
feature_extractor=processor.feature_extractor,
tokenizer=processor.tokenizer,
torch_dtype=torch_dtype,
device=device,
# chunk_length_s=30, # 用于长文本转录
max_new_tokens=128,
)
# 示例音频
dataset = load_dataset("bofenghuang/asr-dummy", "fr", split="test")
sample = dataset[0]["audio"]
# 运行流水线
result = pipe(sample)
print(result["text"])
Hugging Face底层API
你也可以使用🤗 Hugging Face的底层API进行转录,提供对过程的更大控制,如下所示:
import torch
from datasets import load_dataset
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
# 加载模型
model_name_or_path = "bofenghuang/whisper-large-v3-french"
processor = AutoProcessor.from_pretrained(model_name_or_path)
model = AutoModelForSpeechSeq2Seq.from_pretrained(
model_name_or_path,
torch_dtype=torch_dtype,
low_cpu_mem_usage=True,
)
model.to(device)
# 示例音频
dataset = load_dataset("bofenghuang/asr-dummy", "fr", split="test")
sample = dataset[0]["audio"]
# 提取特征
input_features = processor(
sample["array"], sampling_rate=sample["sampling_rate"], return_tensors="pt"
).input_features
# 生成标记
predicted_ids = model.generate(
input_features.to(dtype=torch_dtype).to(device), max_new_tokens=128
)
# 解码为文本
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)[0]
print(transcription)
推测解码
推测解码可以使用草案模型实现,本质上是Whisper的蒸馏版本。这种方法保证与单独使用主Whisper模型相同的输出,提供2倍更快的推理速度,并且只带来轻微的内存开销增加。
由于蒸馏Whisper具有与原始模型相同的编码器,只需加载其解码器,在推理过程中主模型和草案模型共享编码器输出。
使用Hugging Face流水线进行推测解码很简单——只需在生成配置中指定assistant_model
。
import torch
from datasets import load_dataset
from transformers import (
AutoModelForCausalLM,
AutoModelForSpeechSeq2Seq,
AutoProcessor,
pipeline,
)
device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
# 加载模型
model_name_or_path = "bofenghuang/whisper-large-v3-french"
processor = AutoProcessor.from_pretrained(model_name_or_path)
model = AutoModelForSpeechSeq2Seq.from_pretrained(
model_name_or_path,
torch_dtype=torch_dtype,
low_cpu_mem_usage=True,
)
model.to(device)
# 加载草案模型
assistant_model_name_or_path = "bofenghuang/whisper-large-v3-french-distil-dec2"
assistant_model = AutoModelForCausalLM.from_pretrained(
assistant_model_name_or_path,
torch_dtype=torch_dtype,
low_cpu_mem_usage=True,
)
assistant_model.to(device)
# 初始化流水线
pipe = pipeline(
"automatic-speech-recognition",
model=model,
feature_extractor=processor.feature_extractor,
tokenizer=processor.tokenizer,
torch_dtype=torch_dtype,
device=device,
generate_kwargs={"assistant_model": assistant_model},
max_new_tokens=128,
)
# 示例音频
dataset = load_dataset("bofenghuang/asr-dummy", "fr", split="test")
sample = dataset[0]["audio"]
# 运行流水线
result = pipe(sample)
print(result["text"])
OpenAI Whisper
你也可以使用带有滑动窗口和温度回退的顺序长文本解码算法,如OpenAI在其原始论文中所述。
首先,安装openai-whisper包:
pip install -U openai-whisper
然后,下载转换后的模型:
python -c "from huggingface_hub import hf_hub_download; hf_hub_download(repo_id='bofenghuang/whisper-large-v3-french', filename='original_model.pt', local_dir='./models/whisper-large-v3-french')"
现在,你可以按照仓库中提供的使用说明转录音频文件:
import whisper
from datasets import load_dataset
# 加载模型
model = whisper.load_model("./models/whisper-large-v3-french/original_model.pt")
# 示例音频
dataset = load_dataset("bofenghuang/asr-dummy", "fr", split="test")
sample = dataset[0]["audio"]["array"].astype("float32")
# 转录
result = model.transcribe(sample, language="fr")
print(result["text"])
Faster Whisper
Faster Whisper是OpenAI的Whisper模型和顺序长文本解码算法在CTranslate2格式中的重新实现。
与openai-whisper相比,它提供高达4倍更快的推理速度,同时消耗更少的内存。此外,模型可以量化为int8,进一步提高其在CPU和GPU上的效率。
首先,安装faster-whisper包:
pip install faster-whisper
然后,下载转换为CTranslate2格式的模型:
python -c "from huggingface_hub import snapshot_download; snapshot_download(repo_id='bofenghuang/whisper-large-v3-french', local_dir='./models/whisper-large-v3-french', allow_patterns='ctranslate2/*')"
现在,你可以按照仓库中提供的使用说明转录音频文件:
from datasets import load_dataset
from faster_whisper import WhisperModel
# 加载模型
model = WhisperModel("./models/whisper-large-v3-french/ctranslate2", device="cuda", compute_type="float16") # 在GPU上使用FP16运行
# 示例音频
dataset = load_dataset("bofenghuang/asr-dummy", "fr", split="test")
sample = dataset[0]["audio"]["array"].astype("float32")
segments, info = model.transcribe(sample,



