许可证:apache-2.0
语言:日语
库名称:transformers
标签:
- 音频
- 自动语音识别
- hf-asr-leaderboard
小部件示例:
- 标题:CommonVoice 8.0(测试集)
音频源:https://huggingface.co/datasets/japanese-asr/ja_asr.common_voice_8_0/resolve/main/sample.flac
- 标题:JSUT Basic 5000
音频源:https://huggingface.co/datasets/japanese-asr/ja_asr.jsut_basic5000/resolve/main/sample.flac
- 标题:ReazonSpeech(测试集)
音频源:https://huggingface.co/datasets/japanese-asr/ja_asr.reazonspeech_test/resolve/main/sample.flac
管道标签:自动语音识别
评估指标:
模型索引:
- 名称:kotoba-tech/kotoba-whisper-v1.0
结果:
- 任务:自动语音识别
数据集:CommonVoice 8(日语测试集)
类型:japanese-asr/ja_asr.common_voice_8_0
指标:
- 名称:WER
类型:WER
值:59.2
- 名称:CER
类型:CER
值:9.4
- 任务:自动语音识别
数据集:ReazonSpeech(保留测试集)
类型:japanese-asr/ja_asr.reazonspeech_test
指标:
- 名称:WER
类型:WER
值:56.6
- 名称:CER
类型:CER
值:12.2
- 任务:自动语音识别
数据集:JSUT Basic 5000
类型:japanese-asr/ja_asr.jsut_basic5000
指标:
- 名称:WER
类型:WER
值:64.3
- 名称:CER
类型:CER
值:8.5
训练数据集:
- japanese-asr/whisper_transcriptions.reazonspeech.large
- japanese-asr/whisper_transcriptions.reazonspeech.large.wer_10.0
- japanese-asr/whisper_transcriptions.reazonspeech.large.wer_10.0.vectorized
Kotoba-Whisper (v1.0)
faster-whisper权重 | whisper.cpp权重 | 带stable-ts/标点符号的管道
新闻: 此模型的新版本已在 https://huggingface.co/kotoba-tech/kotoba-whisper-v2.0 发布!
Kotoba-Whisper 是由 Asahi Ushio 和 Kotoba Technologies 合作开发的日语自动语音识别蒸馏版 Whisper 模型集合。遵循原始蒸馏 Whisper 的工作(通过大规模伪标签进行鲁棒知识蒸馏),我们采用 OpenAI 的 Whisper large-v3 作为教师模型,学生模型包含教师 large-v3 模型的完整编码器以及由 large-v3 模型首尾层初始化的两层解码器。Kotoba-Whisper 比 large-v3 快 6.3 倍,同时保持与 large-v3 相近的低错误率。
作为初始版本,我们发布了 kotoba-whisper-v1.0,该模型在 ReazonSpeech 的 large
子集(从日本电视录音中提取的最大日语语音-文本配对数据集)上训练,共计 1,253 小时音频及 16,861,235 字符的转录文本(平均每 5 秒音频对应 18 个文本标记),并剔除了 WER 超过 10 的转录(详见 WER 过滤)。模型以 16kHz 采样率、256 的批量大小训练了 8 个周期,训练及评估代码可在 https://github.com/kotoba-tech/kotoba-whisper 获取以复现 kotoba-whisper。
Kotoba-whisper-v1.0 在 ReazonSpeech 的保留测试集上 CER 和 WER 优于 openai/whisper-large-v3,并在包括 JSUT basic 5000 和 CommonVoice 8.0 日语子集等域外测试集上表现接近(详见 评估)。
-
CER
| 模型 | CommonVoice 8(日语测试集) | JSUT Basic 5000 | ReazonSpeech(保留测试集) |
|------|---------------------------|----------------|--------------------------|
| kotoba-tech/kotoba-whisper-v2.0 | 9.2 | 8.4 | 11.6 |
| kotoba-tech/kotoba-whisper-v1.0 | 9.4 | 8.5 | 12.2 |
| openai/whisper-large-v3 | 8.5 | 7.1 | 14.9 |
| openai/whisper-large-v2 | 9.7 | 8.2 | 28.1 |
| openai/whisper-large | 10.0 | 8.9 | 34.1 |
| openai/whisper-medium | 11.5 | 10.0 | 33.2 |
| openai/whisper-base | 28.6 | 24.9 | 70.4 |
| openai/whisper-small | 15.1 | 14.2 | 41.5 |
| openai/whisper-tiny | 53.7 | 36.5 | 137.9 |
-
WER
| 模型 | CommonVoice 8(日语测试集) | JSUT Basic 5000 | ReazonSpeech(保留测试集) |
|------|---------------------------|----------------|--------------------------|
| kotoba-tech/kotoba-whisper-v2.0 | 58.8 | 63.7 | 55.6 |
| kotoba-tech/kotoba-whisper-v1.0 | 59.2 | 64.3 | 56.4 |
| openai/whisper-large-v3 | 55.1 | 59.2 | 60.2 |
| openai/whisper-large-v2 | 59.3 | 63.2 | 74.1 |
| openai/whisper-large | 61.1 | 66.4 | 74.9 |
| openai/whisper-medium | 63.4 | 69.5 | 76.0 |
| openai/whisper-base | 87.2 | 93.0 | 91.8 |
| openai/whisper-small | 74.2 | 81.9 | 83.0 |
| openai/whisper-tiny | 93.8 | 97.6 | 94.9 |
-
延迟:由于 kotoba-whisper 采用与 distil-whisper/distil-large-v3 相同的架构,其继承了相比 openai/whisper-large-v3 的延迟优势(比 large-v3 快 6.3 倍,下表取自 distil-whisper/distil-large-v3)。
模型 |
参数量(百万) |
相对延迟 |
kotoba-tech/kotoba-whisper-v1.0 |
756 |
6.3 |
openai/whisper-large-v3 |
1550 |
1.0 |
Transformers 使用
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
model_id = "kotoba-tech/kotoba-whisper-v1.0"
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 {}
generate_kwargs = {"language": "ja", "task": "transcribe"}
pipe = pipeline(
"automatic-speech-recognition",
model=model_id,
torch_dtype=torch_dtype,
device=device,
model_kwargs=model_kwargs
)
dataset = load_dataset("japanese-asr/ja_asr.reazonspeech_test", split="test")
sample = dataset[0]["audio"]
result = pipe(sample, generate_kwargs=generate_kwargs)
print(result["text"])
- 转录本地音频文件时,直接传入文件路径(确保音频采样率为16kHz):
- result = pipe(sample, generate_kwargs=generate_kwargs)
+ result = pipe("audio.mp3", generate_kwargs=generate_kwargs)
- 获取分段级时间戳,传入
return_timestamps=True
并返回 "chunks"
输出:
result = pipe(sample, return_timestamps=True, generate_kwargs=generate_kwargs)
print(result["chunks"])
顺序长音频转录:Kotoba-whisper 兼容 OpenAI 的顺序长音频转录算法。该算法通过滑动窗口缓冲长音频文件(>30秒)的推理,相比 分块长音频算法 返回更准确的转录。默认情况下,传入长音频文件时模型会使用顺序长音频转录。以下场景推荐使用顺序算法:
- 转录准确性最重要,延迟次之
- 批量转录长音频文件时,此时顺序算法的延迟与分块相当,同时 WER 最高可降低 0.5%
若转录单个长音频文件且延迟最关键,应使用下方描述的 分块算法。算法差异详见 Distil-Whisper论文 第5节。使用 pipeline
类顺序转录长音频:
分块长音频转录
当需要最快速度转录单个大音频文件时,应使用此算法。此情况下分块算法比 OpenAI 顺序实现快达 9 倍(见 Distil-Whisper论文 表7)。启用分块需向 pipeline
传入 chunk_length_s
参数。对 distil-large-v3,25秒分块最优。长音频批处理需传入 batch_size
:
import torch
from transformers import pipeline
from datasets import load_dataset
model_id = "kotoba-tech/kotoba-whisper-v1.0"
torch_dtype = torch.bfloat16 if torch.c