🚀 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 许可证。
致谢