license: gemma
library_name: transformers
base_model: google/gemma-3-4b-it
datasets:
- junnei/covost2
metrics:
- bleu
- cer
- wer
pipeline_tag: automatic-speech-recognition
Gemma 3 多模态模型卡片
使用条款: 条款
模型概述
Gemma-3-MM 是一款开源多模态指令模型,在原始Gemma-3模型基础上扩展了语音处理能力。该模型继承了原始Gemma-3模型的语言与视觉研究,并通过语音适配器新增了语音处理功能,可处理文本、图像和音频输入,生成文本输出,上下文长度达128K token(1B模型为32K)。
评估
模型评估指标与结果。
此处提供评估模型的[脚本][Script]。
自动语音识别(ASR)
自动语音翻译(AST)
(实验性)ASR: 韩语分支
因未应用韩语标准化器,分数较低
基准测试 |
任务 |
BLEU ↑ |
CER ↓ |
WER ↓ |
结果 |
Zeroth |
韩语ASR |
94.91 |
1.31 |
2.50 |
链接 |
Fleurs |
韩语ASR |
62.83 |
9.08 |
23.0 |
链接 |
Covost2 |
韩语ASR |
43.66 |
22.5 |
41.4 |
链接 |
模型详情
开发者: junnei
模型类型: 多模态(文本、视觉、语音)语言模型
支持语言: 多语言
许可证: Gemma
基础模型: google/gemma-3-4b-it
灵感来源: Phi-4-multimodal-instruct
训练详情
- 通过在基础Gemma-3-4b-it模型上添加596B参数的语音LoRA适配器进行训练
- 由于计算资源有限,仅使用A100单GPU在ASR和AST任务上进行了有限数据集和轮次的训练
- 训练数据仅限于英语和韩语,且音频时长小于30秒
数据集
ASR/AST
局限性
请注意,本模型仅为实验性概念验证(PoC),不适用于生产环境。需在以下方面进行改进以提升性能与可靠性:
- 需要更多计算资源进行扩展训练
- 当前仅支持视觉-语言任务和音频-语言任务(ASR/AST)
- 因计算资源不足,模型主要识别30秒以内的音频,对更长音频的准确率可能显著下降
- 未来计划扩展至语音-视觉任务及更多音频-语言任务
使用方式
以下是快速运行模型的代码片段。
首先升级Transformers库(现已支持chat_template的AudioInput):
$ pip install -U transformers
然后根据您的使用场景复制对应代码段。
使用chat_template运行模型
from transformers import AutoProcessor, AutoModel
import torch
model_id = "junnei/gemma-3-4b-it-speech"
revision = "main"
model = AutoModel.from_pretrained(
model_id, device_map="auto", revision = revision, trust_remote_code=True
).eval()
processor = AutoProcessor.from_pretrained(
model_id, revision = revision, trust_remote_code=True
)
messages = [
{
"role": "user",
"content": [
{"type": "audio", "audio": "https://huggingface.co/microsoft/Phi-4-multimodal-instruct/resolve/main/examples/what_is_shown_in_this_image.wav"},
{"type": "text", "text": "将这段音频转录为文字"}
]
}
]
inputs = processor.apply_chat_template(
messages, add_generation_prompt=True, tokenize=True,
return_dict=True, return_tensors="pt"
)
with torch.inference_mode():
generate_ids = model.generate(**inputs, max_new_tokens=128, do_sample=False)
generate_ids = generate_ids[:, inputs['input_ids'].shape[1] :]
response = processor.batch_decode(
generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False
)[0]
print(response)
使用原始数据运行模型
from io import BytesIO
from urllib.request import urlopen
import soundfile
from PIL import Image
url = "https://huggingface.co/microsoft/Phi-4-multimodal-instruct/resolve/main/examples/what_is_shown_in_this_image.wav"
audio, sr = soundfile.read(BytesIO(urlopen(url).read()))
audio_token = '<start_of_audio>'
messages = [
{'role': 'user', 'content': audio_token + '将此音频翻译为韩语'},
]
prompt = processor.tokenizer.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
inputs = processor(text=prompt, audio=[audio], add_special_tokens=False, return_tensors="pt")
with torch.inference_mode():
generate_ids = model.generate(**inputs, max_new_tokens=128, do_sample=False)
generate_ids = generate_ids[:, inputs['input_ids'].shape[1] :]
response = processor.batch_decode(
generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False
)[0]
print(response)
微调模型
微调脚本见: 链接
必须修改output_dir、upload_dir并适配您的数据集
python finetune_speech.py
引用
@article{gemma3mm_2025,
title={Gemma-3-MM: 具备语音能力的多模态语言模型},
author={张成俊},
year={2025}
}