模型简介
模型特点
模型能力
使用案例
🚀 Granite-speech-3.2-8b
Granite-speech-3.2-8b是一款紧凑高效的语音语言模型,专为自动语音识别(ASR)和自动语音翻译(AST)而设计。它采用双步设计,与将语音和语言处理整合为一步的集成模型不同。该模型能有效处理语音输入,为相关企业应用提供支持。
🚀 快速开始
安装依赖
首先,确保安装最新版本的transformers
库:
pip install transformers>=4.49 peft torchaudio
安装torchaudio
后端,例如:
pip install 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.2-8b"
speech_granite_processor = AutoProcessor.from_pretrained(
model_name, trust_remote_code=True)
tokenizer = speech_granite_processor.tokenizer
speech_granite = AutoModelForSpeechSeq2Seq.from_pretrained(
model_name, trust_remote_code=True).to(device)
# prepare speech and text prompt, using the appropriate prompt template
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 # mono, 16khz
# create text prompt
chat = [
{
"role": "system",
"content": "Knowledge Cutoff Date: April 2024.\nToday's Date: December 19, 2024.\nYou are Granite, developed by IBM. You are a helpful AI assistant",
},
{
"role": "user",
"content": "<|audio|>can you transcribe the speech into a written format?",
}
]
text = tokenizer.apply_chat_template(
chat, tokenize=False, add_generation_prompt=True
)
# compute audio embeddings
model_inputs = speech_granite_processor(
text,
wav,
device=device, # Computation device; returned tensors are put on CPU
return_tensors="pt",
).to(device)
model_outputs = speech_granite.generate(
**model_inputs,
max_new_tokens=200,
num_beams=4,
do_sample=False,
min_length=1,
top_p=1.0,
repetition_penalty=1.0,
length_penalty=1.0,
temperature=1.0,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id,
pad_token_id=tokenizer.pad_token_id,
)
# Transformers includes the input IDs in the response.
num_input_tokens = model_inputs["input_ids"].shape[-1]
new_tokens = torch.unsqueeze(model_outputs[0, num_input_tokens:], dim=0)
output_text = tokenizer.batch_decode(
new_tokens, add_special_tokens=False, skip_special_tokens=True
)
print(f"STT output = {output_text[0].upper()}")
✨ 主要特性
- 双步设计:与集成模型不同,Granite-speech-3.2-8b采用双步设计,首次调用将音频文件转录为文本,若要使用底层Granite语言模型处理转录文本,需进行第二次调用。
- 多任务支持:适用于自动语音识别(ASR)和自动语音翻译(AST)任务。
- 广泛的训练数据:在包含多种ASR和AST数据集的公共语料库以及针对语音翻译任务定制的合成数据集上进行训练。
- 模块化设计:提高了安全性,限制了音频输入对系统的影响,降低了对抗性输入的风险。
📚 详细文档
模型概述
Granite-speech-3.2-8b是一款专为自动语音识别(ASR)和自动语音翻译(AST)设计的紧凑高效语音语言模型。它使用双步设计,首次调用将音频文件转录为文本,若要使用底层Granite语言模型处理转录文本,需进行第二次调用。
评估
我们在标准基准测试中,将Granite-speech-3.2-8b与参数少于80亿的其他语音语言模型(SLM)以及专用的ASR和AST系统进行了评估。评估涵盖多个公共基准,特别侧重于英语ASR任务,同时也包括英语到其他语言(En-X)的翻译任务。
发布日期
2025年4月2日
许可证
支持语言
英语
预期用途
该模型适用于涉及语音输入处理的企业应用,尤其适合英语语音转文本以及英语到一些主要欧洲语言(如法语、西班牙语、意大利语、德语、葡萄牙语)以及日语和普通话的语音翻译任务。对于仅涉及基于文本输入的任务,建议使用Granite大语言模型,其针对纯文本处理进行了优化,性能优于本模型。
🔧 技术细节
模型架构
Granite-speech-3.2-8b的架构由以下组件组成:
-
语音编码器:包含10个Conformer块,在仅包含ASR语料库的子集上,使用基于字符级目标的连接主义时序分类(CTC)进行训练。此外,我们的CTC编码器在中间层使用了块注意力机制(block-attention),处理4秒的音频块,并采用自条件CTC。 | 配置参数 | 值 | | ---- | ---- | | 输入维度 | 160 (80 logmels x 2) | | 层数 | 10 | | 隐藏维度 | 1024 | | 注意力头数量 | 8 | | 注意力头大小 | 128 | | 卷积核大小 | 15 | | 输出维度 | 42 |
-
语音投影器和时间下采样器(语音 - 文本模态适配器):使用一个2层的窗口查询变压器(q-former),对来自语音编码器最后一个Conformer块的15个1024维声学嵌入块进行操作。每个块和每层使用3个可训练查询,将其下采样5倍。总的时间下采样因子为10(编码器下采样2倍,投影器下采样5倍),为大语言模型(LLM)生成10Hz的声学嵌入率。编码器、投影器和LoRA适配器在训练数据中提到的所有语料库上进行联合微调/训练。
-
大语言模型:使用具有128k上下文长度的Granite-3.2-8b-instruct(https://huggingface.co/ibm-granite/granite-3.2-8b-instruct)。
-
LoRA适配器:对查询、值投影矩阵应用秩为64的LoRA适配器。
训练数据
我们的训练数据主要来自两个关键来源:(1)公开可用的数据集;(2)从公开可用数据集创建的、专门针对语音翻译任务的合成数据。训练数据集的详细描述如下表所示:
名称 | 任务 | 时长(小时) | 来源 |
---|---|---|---|
CommonVoice-17 English | ASR | 2600 | https://huggingface.co/datasets/mozilla-foundation/common_voice_17_0 |
MLS English | ASR | 44000 | https://huggingface.co/datasets/facebook/multilingual_librispeech |
Librispeech | ASR | 1000 | https://huggingface.co/datasets/openslr/librispeech_asr |
VoxPopuli English | ASR | 500 | https://huggingface.co/datasets/facebook/voxpopuli |
AMI | ASR | 100 | https://huggingface.co/datasets/edinburghcstr/ami |
YODAS English | ASR | 10000 | https://huggingface.co/datasets/espnet/yodas |
CommonVoice-17 En->Ja | AST | 2600 | 使用Granite-3.2-8b和Phi-4进行翻译 |
CommonVoice-17 En->De | AST | 2600 | 使用Granite-3.2-8b和Phi-4进行翻译 |
MLS English | 其他 | 44000 | 由Granite-3.1-8b提供的转录描述 |
CREMA-D | SER | 3 | https://github.com/CheyneyComputerScience/CREMA-D |
MELD | SER | 7 | https://github.com/declare-lab/MELD |
基础设施
我们使用IBM的超级计算集群Blue Vela来训练Granite Speech,该集群配备了NVIDIA H100 GPU。这个集群为在数千个GPU上训练我们的模型提供了可扩展且高效的基础设施。该特定模型在32个H100 GPU上用10天完成训练。
伦理考虑和局限性
使用大型语音和语言模型可能涉及人们应该意识到的风险和伦理问题,这些风险可能包括偏差和公平性、错误信息以及自主决策。我们敦促社区以符合IBM负责任使用指南或类似负责任使用框架的方式使用Granite-speech-3.2-8b。IBM建议将此模型用于自动语音识别任务。该模型的模块化设计通过限制音频输入对系统的影响来提高安全性。如果收到不熟悉或格式错误的提示,模型只会简单地回显其转录内容,这将对抗性输入的风险降至最低,与直接解释音频且可能更容易受到此类攻击的集成模型不同。请注意,更通用的语音任务可能会带来更高的触发不良输出的内在风险。
为了增强安全性,我们建议将Granite-speech-3.2-8b与Granite Guardian一起使用。Granite Guardian是一个经过微调的指令模型,旨在检测和标记提示和响应中符合IBM AI风险图谱中概述的关键维度的风险。其训练包括人工标注数据和受内部红队测试启发的合成数据,使其在标准基准测试中优于类似的开源模型,提供了额外的安全层。
📄 许可证
本项目采用Apache 2.0许可证。
🔗 相关资源
- ⭐️ 了解Granite的最新更新:https://www.ibm.com/granite
- 🚀 获取教程、最佳实践和提示工程建议:https://www.ibm.com/granite/docs/
- 💡 了解最新的Granite学习资源:https://ibm.biz/granite-learning-resources



