🚀 Kotoba-Whisper-Bilingual (v1.0)
Kotoba-Whisper-Bilingual 是一個經過蒸餾的 Whisper 模型集合,支持日語和英語的自動語音識別(ASR),以及日語與英語之間的語音轉文字翻譯。該模型由 Asahi Ushio 和 Kotoba Technologies 合作開發,在性能和推理速度上都有不錯的表現。
模型權重鏈接
✨ 主要特性
- 多語言支持:支持日語和英語的自動語音識別。
- 雙向翻譯:可以實現日語語音到英語文字,以及英語語音到日語文字的翻譯。
- 低延遲:繼承了 distil-whisper 的優勢,相比 openai/whisper-large-v3 有顯著的延遲優化(比 large-v3 快 6.3 倍)。
📦 安裝指南
Kotoba-Whisper 從 Hugging Face 🤗 Transformers 庫的 4.39 版本開始支持。要運行該模型,首先需要安裝最新版本的 Transformers。
pip install --upgrade pip
pip install --upgrade transformers accelerate
💻 使用示例
基礎用法
以下是使用 pipeline
類轉錄短音頻文件(< 30 秒)的示例代碼:
import torch
from transformers import pipeline
from datasets import load_dataset
torch_dtype = torch.bfloat16 if torch.cuda.is_available() else torch.float32
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model_kwargs = {"attn_implementation": "sdpa"} if torch.cuda.is_available() else {}
pipe = pipeline(
"automatic-speech-recognition",
model="kotoba-tech/kotoba-whisper-bilingual-v1.0",
torch_dtype=torch_dtype,
device=device,
model_kwargs=model_kwargs,
chunk_length_s=15,
batch_size=16
)
import os
if not os.path.exists("sample_en.wav"):
os.system("wget https://huggingface.co/datasets/japanese-asr/en_asr.esb_eval/resolve/main/sample.wav -O sample_en.wav")
if not os.path.exists("sample_ja.flac"):
os.system("wget https://huggingface.co/datasets/japanese-asr/ja_asr.jsut_basic5000/resolve/main/sample.flac -O sample_ja.flac")
generate_kwargs = {"language": "ja", "task": "transcribe"}
result = pipe("sample_ja.flac", generate_kwargs=generate_kwargs)
print(result["text"])
generate_kwargs = {"language": "en", "task": "transcribe"}
result = pipe("sample_en.wav", generate_kwargs=generate_kwargs)
print(result["text"])
generate_kwargs = {"language": "en", "task": "translate"}
result = pipe("sample_ja.flac", generate_kwargs=generate_kwargs)
print(result["text"])
generate_kwargs = {"language": "ja", "task": "translate"}
result = pipe("sample_en.wav", generate_kwargs=generate_kwargs)
print(result["text"])
高級用法
獲取分段級別的時間戳:
result = pipe(sample, return_timestamps=True, generate_kwargs=generate_kwargs)
print(result["chunks"])
📚 詳細文檔
評估結果
將 Kotoba-Whisper-Bilingual 與 OpenAI 的 Whisper 模型、Kotoba-Whisper 模型以及級聯翻譯模型進行了比較。值得注意的是,Kotoba-Whisper-Bilingual 是唯一能夠同時進行日語和英語 ASR 以及日語和英語之間語音轉文字翻譯的模型。
語音轉文字翻譯(日語 -> 英語):WER(越低越好)
語音轉文字翻譯(英語 -> 日語):CER(越低越好)
ASR(日語):CER(越低越好)
ASR(英語):WER(越低越好)
推理速度
儘管級聯方法在翻譯任務中表現更好,但由於其本質,與單端到端模型相比,其管道具有額外的複雜性和內存消耗。以下是在單個 RTX 4090(VRAM 24 GB)上對不同時長音頻樣本進行 10 次試驗的平均推理時間(秒),以及參數大小。
訓練信息
模型訓練的詳細信息請參考 https://github.com/kotoba-tech/kotoba-whisper。蒸餾中使用的數據集和所有模型變體可以在 https://huggingface.co/japanese-asr 找到。
🔧 技術細節
Kotoba-Whisper-Bilingual 是基於蒸餾的 Whisper 模型,採用 OpenAI 的 Whisper large-v3 作為教師模型,用於日語和英語 ASR。對於語音轉文字翻譯任務,通過外部大語言模型將轉錄內容翻譯成英語和日語來獲取訓練數據集。
模型的損失目標包括 ASR 和翻譯任務的交叉熵損失,以及僅用於 ASR 任務的 KL 散度損失。學生模型由教師 large-v3 模型的完整編碼器和兩層解碼器組成,解碼器的初始化來自 large-v3 模型的第一層和最後一層。
📄 許可證
本項目採用 Apache-2.0 許可證。
致謝