🚀 Whisper-Large-V3-Distil-Italian-v0.2
這是Whisper的蒸餾版本,具有2個解碼器層,專為意大利語語音轉文本任務進行了優化。該版本將訓練擴展到30秒的音頻片段,以保持長格式轉錄能力。在蒸餾過程中,使用了 "耐心" 教師,即更長的訓練時間和更激進的數據增強,從而提高了整體性能。
🚀 快速開始
本模型可用於意大利語的自動語音識別任務。它使用 openai/whisper-large-v3 作為教師模型,同時保持編碼器架構不變。這使得它適合作為推測解碼的草稿模型,在僅添加2個額外解碼器層並僅運行一次編碼器的情況下,可能獲得2倍的推理速度,同時保持相同的輸出。它也可以作為獨立模型,以犧牲一些準確性為代價來提高效率,運行速度快5.8倍,同時僅使用49%的參數。
✨ 主要特性
- 優化的意大利語識別:專門為意大利語語音轉文本進行優化,提高了在該語言上的識別性能。
- 長格式轉錄能力:通過擴展訓練到30秒音頻片段,保持了長格式轉錄的能力。
- 多種使用方式:可以作為推測解碼的草稿模型,也可以作為獨立模型使用。
- 廣泛的兼容性:已轉換為多種格式,確保在包括transformers、openai-whisper、faster-whisper、whisper.cpp、candle、mlx等庫中的廣泛兼容性。
📦 安裝指南
根據不同的使用方式,需要安裝不同的依賴庫:
- Hugging Face Pipeline和低級別API:
pip install torch datasets transformers
pip install -U openai-whisper
pip install faster-whisper
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp
make
git clone https://github.com/huggingface/candle.git
cd candle/candle-examples/examples/whisper
git clone https://github.com/ml-explore/mlx-examples.git
cd mlx-examples/whisper
pip install -r requirements.txt
💻 使用示例
基礎用法
以下是使用Hugging Face Pipeline進行音頻轉錄的示例:
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-distil-it-v0.2"
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,
max_new_tokens=128,
)
dataset = load_dataset("bofenghuang/asr-dummy", "it", split="test")
sample = dataset[0]["audio"]
result = pipe(sample)
print(result["text"])
高級用法
以下是使用推測解碼的示例:
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 = "openai/whisper-large-v3"
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-distil-it-v0.2"
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", "it", split="test")
sample = dataset[0]["audio"]
result = pipe(sample)
print(result["text"])
📚 詳細文檔
性能評估
模型在短格式和長格式轉錄上進行了評估,使用了分佈內(ID)和分佈外(OOD)數據集來評估準確性、泛化能力和魯棒性。所有公共數據集的評估結果可以在 這裡 找到。
短格式轉錄
斜體 表示分佈內(ID)評估,其中測試集對應於訓練期間看到的數據分佈,通常比分佈外(OOD)評估具有更高的性能。斜體和刪除線 表示潛在的測試集汙染 - 例如,當訓練和評估使用不同版本的Common Voice時,可能會出現數據重疊的可能性。
長格式轉錄
長格式轉錄評估使用了 🤗 Hugging Face 的 pipeline
,同時使用了 分塊(chunk_length_s=30)和原始順序解碼方法。

🔧 技術細節
訓練數據集
構建了一個超過11,000小時的標註和半標註意大利語語音識別數據集。在通過Whisper-Large-V3解碼該數據集並過濾掉WER高於20%的片段後,保留了約6,500小時的高質量音頻。
數據集 |
總時長 (h) |
過濾後時長 (h) <20% WER |
mcv |
249.92 |
232.87 |
mls |
247.38 |
234.14 |
voxpopuli |
74.11 |
58.25 |
mtedx |
94.10 |
88.69 |
yodas-it000 |
1447.25 |
953.19 |
yodas-it100 |
4929.73 |
2665.54 |
yodas-it101 |
4192.61 |
2275.90 |
總計 |
11235.10 |
6508.58 |
訓練策略
大多數數據首先被連接成30秒的片段,主要保留相同的說話者,然後一起進行推理。50%的片段使用時間戳進行訓練,以確保良好的時間戳預測,只有20%的片段使用先前的上下文進行訓練,因為不期望2層解碼器在這項任務上表現出色。該模型使用激進的數據增強進行了100個epoch的相當長的訓練,評估WER持續下降。一些超參數選擇傾向於長格式轉錄而不是短格式轉錄。更多詳細信息,請參考 Distil-Whisper 倉庫。
📄 許可證
本項目採用MIT許可證。