Whisper Large V3 Turbo Quantized.w4a16
基于openai/whisper-large-v3-turbo的INT4权重量化版本,支持高效音频转文本任务
下载量 1,851
发布时间 : 4/1/2025
模型简介
这是一个量化版本的音频转录模型,通过vLLM实现高效部署,适用于语音识别和转录任务
模型特点
高效量化
采用INT4权重量化技术,显著减少模型大小和计算资源需求
vLLM优化部署
专为vLLM后端优化,支持高效推理和批量处理
多语言支持
支持多种语言的语音识别任务
模型能力
语音识别
音频转录
多语言处理
使用案例
语音转录
会议记录
将会议录音自动转换为文字记录
媒体字幕生成
为视频内容自动生成字幕
🚀 whisper-large-v3-turbo-quantized.w4a16
这是一个量化版本的音频模型,基于openai/whisper-large-v3-turbo
进行了权重量化,能借助vLLM
高效部署,可用于音频转文本任务。
🚀 快速开始
使用 vLLM 部署
此模型可使用 vLLM 后端高效部署,示例代码如下:
from vllm.assets.audio import AudioAsset
from vllm import LLM, SamplingParams
# 准备模型
llm = LLM(
model="neuralmagic/whisper-large-v3-turbo-quantized.w4a16",
max_model_len=448,
max_num_seqs=400,
limit_mm_per_prompt={"audio": 1},
)
# 准备输入
inputs = { # 测试显式编码器/解码器提示
"encoder_prompt": {
"prompt": "",
"multi_modal_data": {
"audio": AudioAsset("winning_call").audio_and_sample_rate,
},
},
"decoder_prompt": "<|startoftranscript|>",
}
# 生成响应
print("========== SAMPLE GENERATION ==============")
outputs = llm.generate(inputs, SamplingParams(temperature=0.0, max_tokens=64))
print(f"PROMPT : {outputs[0].prompt}")
print(f"RESPONSE: {outputs[0].outputs[0].text}")
print("==========================================")
vLLM 还支持与 OpenAI 兼容的服务,更多详情请参阅 文档。
✨ 主要特性
模型概述
- 模型架构:whisper-large-v3-turbo
- 输入:音频 - 文本
- 输出:文本
- 模型优化:
- 权重量化:INT4
- 发布日期:2025 年 4 月 16 日
- 版本:1.0
- 模型开发者:Neural Magic
此模型是 openai/whisper-large-v3-turbo 的量化版本。
模型优化
该模型通过将 openai/whisper-large-v3-turbo 的权重量化为 INT4 数据类型获得,可用于 vLLM >= 0.5.2 进行推理。
💻 使用示例
基础用法
上述使用 vLLM 部署的代码即为基础用法示例,可用于快速启动模型并生成音频转录结果。
📚 详细文档
模型创建
此模型使用 llm-compressor 创建,代码片段如下:
模型创建代码
python quantize.py --model_path openai/whisper-large-v3-turbo --quant_path "output_dir/whisper-large-v3-turbo-quantized.w4a16" --calib_size 1024 --group_size 64 --dampening_frac 0.01 --actorder weight
import torch
import argparse
from datasets import load_dataset
from transformers import WhisperProcessor
from llmcompressor import oneshot
from llmcompressor.modifiers.quantization import GPTQModifier
from llmcompressor.transformers.tracing import TraceableWhisperForConditionalGeneration
import os
from compressed_tensors.quantization import QuantizationArgs, QuantizationType, QuantizationStrategy, ActivationOrdering, QuantizationScheme
from llmcompressor.modifiers.smoothquant import SmoothQuantModifier
parser = argparse.ArgumentParser()
parser.add_argument('--model_path', type=str)
parser.add_argument('--quant_path', type=str)
parser.add_argument('--calib_size', type=int, default=256)
parser.add_argument('--dampening_frac', type=float, default=0.1)
parser.add_argument('--observer', type=str, default="minmax")
parser.add_argument('--actorder', type=str, default="dynamic")
parser.add_argument('--group_size', type=int, default=128)
parser.add_argument('--save_dir', type=str, required=True)
args = parser.parse_args()
model_id = args.model_path
model = TraceableWhisperForConditionalGeneration.from_pretrained(
model_id,
device_map="auto",
torch_dtype="auto",
)
model.config.forced_decoder_ids = None
processor = WhisperProcessor.from_pretrained(model_id)
# 配置处理器的数据集任务。
processor.tokenizer.set_prefix_tokens(language="en", task="transcribe")
# 选择校准数据集。
DATASET_ID = "MLCommons/peoples_speech"
DATASET_SUBSET = "test"
DATASET_SPLIT = "test"
# 选择校准样本数量。512 个样本是一个不错的起点。
# 增加样本数量可以提高准确性。
NUM_CALIBRATION_SAMPLES = args.calib_size
MAX_SEQUENCE_LENGTH = 2048
dampening_frac=args.dampening_frac
actorder_arg=args.actorder
group_size=args.group_size
# 加载数据集并进行预处理。
ds = load_dataset(
DATASET_ID,
DATASET_SUBSET,
split=f"{DATASET_SPLIT}[:{NUM_CALIBRATION_SAMPLES}]",
trust_remote_code=True,
)
def preprocess(example):
return {
"array": example["audio"]["array"],
"sampling_rate": example["audio"]["sampling_rate"],
"text": " " + example["text"].capitalize(),
}
ds = ds.map(preprocess, remove_columns=ds.column_names)
# 处理输入。
def process(sample):
inputs = processor(
audio=sample["array"],
sampling_rate=sample["sampling_rate"],
text=sample["text"],
add_special_tokens=True,
return_tensors="pt",
)
inputs["input_features"] = inputs["input_features"].to(dtype=model.dtype)
inputs["decoder_input_ids"] = inputs["labels"]
del inputs["labels"]
return inputs
ds = ds.map(process, remove_columns=ds.column_names)
# 定义一个用于多模态输入的一次性数据收集器。
def data_collator(batch):
assert len(batch) == 1
return {key: torch.tensor(value) for key, value in batch[0].items()}
ignore=["lm_head"]
# 配方
recipe = GPTQModifier(
targets="Linear",
config_groups={
"config_group": QuantizationScheme(
targets=["Linear"],
weights=QuantizationArgs(
num_bits=4,
type=QuantizationType.INT,
strategy=QuantizationStrategy.GROUP,
group_size=group_size,
symmetric=True,
dynamic=False,
actorder=getattr(ActivationOrdering, actorder_arg.upper()),
),
),
},
sequential_targets=["WhisperEncoderLayer", "WhisperDecoderLayer"],
ignore=["re:.*lm_head"],
update_size=NUM_CALIBRATION_SAMPLES,
dampening_frac=dampening_frac
)
# 应用算法。
oneshot(
model=model,
dataset=ds,
recipe=recipe,
max_seq_length=MAX_SEQUENCE_LENGTH,
num_calibration_samples=NUM_CALIBRATION_SAMPLES,
data_collator=data_collator,
)
# 保存压缩后的模型到磁盘。
save_name = f"{model_id.split('/')[-1]}-quantized.w4a16"
save_path = os.path.join(args.save_dir, save_name)
print("Saving model:", save_path)
model.save_pretrained(save_path, save_compressed=True)
processor.save_pretrained(save_path)
模型评估
该模型在 LibriSpeech 和 Fleurs 数据集上使用 lmms-eval 进行了评估,命令如下:
评估命令
Librispeech:
lmms-eval \
--model=whisper_vllm \
--model_args="pretrained=neuralmagic-ent/whisper-large-v3-turbo-quantized.w4a16" \
--batch_size 64 \
--output_path <output_file_path> \
--tasks librispeech
Fleurs:
lmms-eval \
--model=whisper_vllm \
--model_args="pretrained=neuralmagic-ent/whisper-large-v3-turbo-quantized.w4a16" \
--batch_size 64 \
--output_path <output_file_path> \
--tasks fleurs
评估结果如下表所示:
基准测试 | 划分 | BF16 | W4A16 | 恢复率 (%) |
---|---|---|---|---|
LibriSpeech (WER) | test-clean | |||
test-other | ||||
Fleurs (X→en, WER) | cmn_hans_cn | 8.2384 | 9.1255 | 90.23% |
en | 4.2914 | 4.4425 | 96.660% | |
yue_hant_hk | 10.5004 | 12.0418 | 87.2 |
📄 许可证
本项目采用 Apache-2.0 许可证。
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
智启未来,您的人工智能解决方案智库
简体中文