Whisperfile
Whisper是一个基于Transformer的编码器-解码器模型,用于语音识别和翻译任务,支持多语言处理。
下载量 353
发布时间 : 5/17/2024
模型简介
Whisper是一个强大的自动语音识别(ASR)系统,能够处理多种语言的语音转录和翻译任务。它在100万小时的弱标记音频和400万小时的伪标记音频上进行训练,具有出色的鲁棒性和准确性。
模型特点
多语言支持
支持多种语言的语音识别和翻译,包括新增的粤语支持
高鲁棒性
对口音、背景噪音和专业语言具有更强的鲁棒性
高效分块处理
采用分块算法处理长音频,比传统顺序算法快9倍
时间戳支持
可获取句子级和单词级的时间戳信息
模型能力
语音识别
语音翻译
多语言处理
长音频处理
时间戳生成
使用案例
语音转录
会议记录
将会议录音自动转录为文字
高准确率的文字转录
播客转录
将播客内容转录为可搜索的文字
支持多种语言和口音
语音翻译
实时翻译
将一种语言的语音实时翻译为另一种语言的文字
接近当前先进水平的翻译准确性
辅助工具
无障碍应用
为听障人士提供语音转文字服务
提高信息可访问性
🚀 Whisper量化Llamafile项目
本项目为whisper模型生成了一系列llamafiles,解决了语音识别模型在特定场景下的部署和使用问题,为开发者提供了便捷的语音识别解决方案。
🚀 快速开始
运行模型
chmod +x <model>.llamafile
./<model>.llamafile
使用示例
基础用法
import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
from datasets import load_dataset
device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32
model_id = "openai/whisper-large-v3"
model = AutoModelForSpeechSeq2Seq.from_pretrained(
model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True
)
model.to(device)
processor = AutoProcessor.from_pretrained(model_id)
pipe = pipeline(
"automatic-speech-recognition",
model=model,
tokenizer=processor.tokenizer,
feature_extractor=processor.feature_extractor,
max_new_tokens=128,
chunk_length_s=30,
batch_size=16,
return_timestamps=True,
torch_dtype=torch_dtype,
device=device,
)
dataset = load_dataset("distil-whisper/librispeech_long", "clean", split="validation")
sample = dataset[0]["audio"]
result = pipe(sample)
print(result["text"])
高级用法
# 转录本地音频文件
result = pipe("audio.mp3")
# 指定源音频语言
result = pipe(sample, generate_kwargs={"language": "english"})
# 执行语音翻译任务
result = pipe(sample, generate_kwargs={"task": "translate"})
# 获取句子级时间戳
result = pipe(sample, return_timestamps=True)
print(result["chunks"])
# 获取单词级时间戳
result = pipe(sample, return_timestamps="word")
print(result["chunks"])
# 组合使用参数
result = pipe(sample, return_timestamps=True, generate_kwargs={"language": "french", "task": "translate"})
print(result["chunks"])
✨ 主要特性
- 为多语言的Whisper模型提供量化的llamafile,包括q8、q5k量化版本,也提供原始模型。
- 每个llamafile可启动服务器,将音频文件转换为合适的.wav格式,并在终端输出中打印/着色解码文本。
- 支持使用
pipeline
类转录任意长度的音频文件,采用分块算法,比OpenAI提出的顺序算法快9倍。 - 可自动预测源音频的语言,也可手动指定。
- 支持语音转录和语音翻译任务,还可获取句子级和单词级的时间戳。
📦 安装指南
pip install --upgrade pip
pip install --upgrade git+https://github.com/huggingface/transformers.git accelerate datasets[audio]
额外的速度和内存优化
Flash Attention
pip install flash-attn --no-build-isolation
- model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True)
+ model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True, use_flash_attention_2=True)
Torch Scale-Product-Attention (SDPA)
pip install --upgrade optimum
model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id, torch_dtype=torch_dtype, low_cpu_mem_usage=True, use_safetensors=True)
+ model = model.to_bettertransformer()
📚 详细文档
模型详情
Whisper是一个基于Transformer的编码器 - 解码器模型,也称为_序列到序列_模型。它在100万小时的弱标记音频和400万小时使用Whisper large-v2
收集的伪标记音频上进行训练。
模型在仅英语数据或多语言数据上进行训练。仅英语模型用于语音识别任务,多语言模型用于语音识别和语音翻译任务。
Whisper检查点有五种不同模型大小的配置,最小的四个在仅英语或多语言数据上训练,最大的检查点仅为多语言模型。所有十个预训练检查点都可以在Hugging Face Hub上找到。
大小 | 参数 | 仅英语 | 多语言 |
---|---|---|---|
tiny | 39 M | 🔗 | 🔗 |
base | 74 M | 🔗 | 🔗 |
small | 244 M | 🔗 | 🔗 |
medium | 769 M | 🔗 | 🔗 |
large | 1550 M | x | 🔗 |
large-v2 | 1550 M | x | 🔗 |
large-v3 | 1550 M | x | 🔗 |
训练数据
模型在100万小时的弱标记音频和400万小时使用Whisper large-v2
收集的伪标记音频上进行训练。在给定语言中的转录性能与该语言的训练数据量直接相关。
性能和局限性
- 优点:与许多现有的自动语音识别(ASR)系统相比,该模型对口音、背景噪音、专业语言具有更强的鲁棒性,并且在多语言到英语的零样本翻译方面表现出色,语音识别和翻译的准确性接近当前的先进水平。
- 缺点:由于模型是使用大规模噪声数据进行弱监督训练的,预测结果可能包含音频输入中实际未说出的文本(即幻觉)。模型在不同语言上的表现不均衡,在资源较少和/或可发现性较低的语言上准确性较低。此外,模型的序列到序列架构容易生成重复文本,尽管可以通过束搜索和温度调度在一定程度上缓解,但无法完全解决。
更广泛的影响
- 积极方面:Whisper模型的转录能力可用于改进辅助工具,尽管不能直接用于实时转录,但基于其构建的应用程序可能实现接近实时的语音识别和翻译。
- 潜在风险:发布Whisper模型可能带来潜在的双重用途问题,可能使更多人能够构建强大的监控技术或扩大现有监控工作。此外,不建议在高风险领域使用该模型,因为其准确性缺陷可能导致严重的后果。
评估使用
- 主要用户:主要面向研究当前模型的鲁棒性、泛化能力、性能、偏差和局限性的AI研究人员。同时,对于开发者,尤其是英语语音识别领域的开发者,Whisper也是一个潜在有用的ASR解决方案。
- 使用建议:强烈建议用户在特定上下文和领域中对模型进行充分评估后再进行部署。特别要注意,不要在未经个人同意的情况下转录其录音,也不要将模型用于主观分类任务。不建议在高风险决策领域使用该模型。
🔧 技术细节
模型差异
Whisper large-v3
与之前的大型模型具有相同的架构,但有以下细微差异:
- 输入使用128个梅尔频率 bins,而不是80个。
- 新增了粤语的语言标记。
训练过程
large-v3
模型在100万小时的弱标记音频和400万小时使用Whisper large-v2
收集的伪标记音频上进行训练,训练了2.0个周期。
速度和内存优化
- Flash Attention:如果GPU支持,建议使用Flash-Attention 2,可通过安装Flash Attention并在
from_pretrained
中传递use_flash_attention_2=True
来启用。 - Torch Scale-Product-Attention (SDPA):如果GPU不支持Flash Attention,建议使用BetterTransformers,通过安装
optimum
并将模型转换为“BetterTransformer”模型来使用。
📄 许可证
本项目采用Apache-2.0许可证。
BibTeX引用
@misc{radford2022whisper,
doi = {10.48550/ARXIV.2212.04356},
url = {https://arxiv.org/abs/2212.04356},
author = {Radford, Alec and Kim, Jong Wook and Xu, Tao and Brockman, Greg and McLeavey, Christine and Sutskever, Ilya},
title = {Robust Speech Recognition via Large-Scale Weak Supervision},
publisher = {arXiv},
year = {2022},
copyright = {arXiv.org perpetual, non-exclusive license}
}
Voice Activity Detection
MIT
基于pyannote.audio 2.1版本的语音活动检测模型,用于识别音频中的语音活动时间段
语音识别
V
pyannote
7.7M
181
Wav2vec2 Large Xlsr 53 Portuguese
Apache-2.0
这是一个针对葡萄牙语语音识别任务微调的XLSR-53大模型,基于Common Voice 6.1数据集训练,支持葡萄牙语语音转文本。
语音识别 其他
W
jonatasgrosman
4.9M
32
Whisper Large V3
Apache-2.0
Whisper是由OpenAI提出的先进自动语音识别(ASR)和语音翻译模型,在超过500万小时的标注数据上训练,具有强大的跨数据集和跨领域泛化能力。
语音识别 支持多种语言
W
openai
4.6M
4,321
Whisper Large V3 Turbo
MIT
Whisper是由OpenAI开发的最先进的自动语音识别(ASR)和语音翻译模型,经过超过500万小时标记数据的训练,在零样本设置下展现出强大的泛化能力。
语音识别
Transformers 支持多种语言

W
openai
4.0M
2,317
Wav2vec2 Large Xlsr 53 Russian
Apache-2.0
基于facebook/wav2vec2-large-xlsr-53模型微调的俄语语音识别模型,支持16kHz采样率的语音输入
语音识别 其他
W
jonatasgrosman
3.9M
54
Wav2vec2 Large Xlsr 53 Chinese Zh Cn
Apache-2.0
基于facebook/wav2vec2-large-xlsr-53模型微调的中文语音识别模型,支持16kHz采样率的语音输入。
语音识别 中文
W
jonatasgrosman
3.8M
110
Wav2vec2 Large Xlsr 53 Dutch
Apache-2.0
基于facebook/wav2vec2-large-xlsr-53微调的荷兰语语音识别模型,在Common Voice和CSS10数据集上训练,支持16kHz音频输入。
语音识别 其他
W
jonatasgrosman
3.0M
12
Wav2vec2 Large Xlsr 53 Japanese
Apache-2.0
基于facebook/wav2vec2-large-xlsr-53模型微调的日语语音识别模型,支持16kHz采样率的语音输入
语音识别 日语
W
jonatasgrosman
2.9M
33
Mms 300m 1130 Forced Aligner
基于Hugging Face预训练模型的文本与音频强制对齐工具,支持多种语言,内存效率高
语音识别
Transformers 支持多种语言

M
MahmoudAshraf
2.5M
50
Wav2vec2 Large Xlsr 53 Arabic
Apache-2.0
基于facebook/wav2vec2-large-xlsr-53微调的阿拉伯语语音识别模型,在Common Voice和阿拉伯语语音语料库上训练
语音识别 阿拉伯语
W
jonatasgrosman
2.3M
37
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98