license: apache-2.0
language:
- en
base_model:
- ibm-granite/granite-3.3-8b-instruct
library_name: transformers
Granite-speech-3.3-8b
模型概述:
Granite-speech-3.3-8b 是一款专为自动语音识别(ASR)和自动语音翻译(AST)设计的紧凑高效语音语言模型。与单次处理语音和文本的集成模型不同,该模型采用双阶段设计。首次调用时会将音频文件转写为文本,若需通过底层 Granite 语言模型处理转写文本,用户需显式发起第二次调用。
模型基于包含多样化 ASR/AST 任务的公开语料库及针对语音翻译任务合成的数据集训练而成,通过模态对齐技术将 granite-3.3-8b-instruct (https://huggingface.co/ibm-granite/granite-3.3-8b-instruct) 适配到含音频输入与文本目标的公开语料上。
当前已知问题:
- 贪婪解码(
num_beams=1
)存在异常,建议始终使用束搜索(beam size > 1)
- 极短音频(<0.1秒)可能产生幻觉输出
我们将持续修复并更新指南。
评估表现:
在 8B 参数量级以下的语音语言模型(SLM)及专用 ASR/AST 系统中,本模型在多个公开基准测试(尤其英语 ASR 及英-X 翻译任务)表现优异:



发布日期:2025年4月15日
许可证:Apache 2.0
支持语言:英语
应用场景:
适用于企业级语音处理场景,尤其擅长:
- 英语语音转文本
- 英语到主要欧洲语言(法语/西班牙语/意大利语/德语/葡萄牙语)及日语/中文的语音翻译
- 纯文本输入任务(此时将直接调用底层 granite-3.3-8b-instruct 模型)
生成示例
使用 transformers
需安装最新版 transformers:
pip install https://github.com/huggingface/transformers/archive/main.zip torchaudio peft soundfile
示例代码:
import torch
import torchaudio
from transformers import AutoProcessor, AutoModelForSpeechSeq2Seq
from huggingface_hub import hf_hub_download
device = "cuda" if torch.cuda.is_available() else "cpu"
model_name = "ibm-granite/granite-speech-3.3-8b"
speech_granite_processor = AutoProcessor.from_pretrained(model_name)
tokenizer = speech_granite_processor.tokenizer
speech_granite = AutoModelForSpeechSeq2Seq.from_pretrained(model_name).to(device)
audio_path = hf_hub_download(repo_id=model_name, filename='10226_10111_000000.wav')
wav, sr = torchaudio.load(audio_path, normalize=True)
assert wav.shape[0] == 1 and sr == 16000
chat = [
{"role": "system", "content": "知识截止日期:2024年4月\n当前日期:2025年4月9日\n你是IBM开发的Granite助手"},
{"role": "user", "content": "<|audio|>请将语音转写成文字"}
]
text = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
model_inputs = speech_granite_processor(text, wav, device=device, return_tensors="pt").to(device)
model_outputs = speech_granite.generate(
**model_inputs,
max_new_tokens=200,
num_beams=4
)
output_text = tokenizer.batch_decode(model_outputs[:, model_inputs["input_ids"].shape[-1]:, skip_special_tokens=True)
print(f"转录结果:{output_text[0].upper()}")
使用 vLLM
离线模式示例:
from vllm import LLM, SamplingParams
from vllm.assets.audio import AudioAsset
model = LLM(
model="ibm-granite/granite-speech-3.3-8b",
enable_lora=True,
max_lora_rank=64
)
audio = AudioAsset("mary_had_lamb").audio_and_sample_rate
outputs = model.generate(
{"prompt": "<|audio|>转录这段语音", "multi_modal_data": {"audio": audio}},
sampling_params=SamplingParams(temperature=0.2, max_tokens=64),
lora_request=[LoRARequest("speech", 1, "ibm-granite/granite-speech-3.3-8b")]
)
模型架构:
-
语音编码器:10层Conformer块,采用字符级CTC损失训练
- 输入维度:160(80维梅尔谱x2)
- 隐藏层:1024维,8头注意力
- 输出维度:42
-
语音投影与时序降采样器:2层窗口查询Transformer,总降采样率10倍
-
大语言模型:granite-3.3-8b-instruct(128k上下文长度)
-
LoRA适配器:在Q/V投影矩阵应用rank=64的适配
训练数据:
数据集 |
任务 |
时长 |
来源 |
CommonVoice-17 |
ASR |
2600h |
链接 |
MLS英语 |
ASR |
44000h |
链接 |
合成数据(英->德/西/法等) |
AST |
2600h*7 |
基于Phi-4和MADLAD生成 |
训练设施:
在配备NVIDIA H100的IBM Blue Vela超算集群上完成,32张GPU训练耗时9天。
伦理与限制:
- 避免使用贪婪解码和极短音频输入
- 建议配合Granite Guardian安全层使用
- 模块化设计降低对抗攻击风险
资源链接: