多模态实时交互边界的高效语音语言模型 VITA-Audio 介绍
介绍
VITA-Audio是由Zuwei Long等研究者提出的端到端大型语音语言模型,其核心目标是通过跨模态令牌生成技术,解决传统语音交互系统中首音频令牌生成延迟高的问题。该模型的创新点主要体现在:
- 低延迟:VITA-Audio 是首个能够在初次前向传播过程中生成音频的端到端语音模型。通过使用 32 个预填充标记,VITA-Audio 将生成首个音频标记块所需的时间从 236 毫秒缩短至 53 毫秒。
- 快速推理:在 70 亿参数规模下,VITA-Audio 实现了 3 到 5 倍的推理加速。
- 开源:VITA-Audio 仅在开源数据上进行训练,包括 20 万小时的公开可用音频。
- 性能强劲:在 70 亿参数规模下,VITA-Audio 在语音识别(ASR)、文本 - 语音合成(TTS)和语音问答(SQA)基准测试中的表现与前沿模型相当。
GitHub:https://github.com/VITA-MLLM/VITA-Audio
关键技术解析
- 多跨模态令牌预测(MCTP)架构
- 并行生成机制:单次前向传播可生成多个音频令牌,突破传统自回归模型的序列依赖瓶颈
- 跨模态对齐:通过两层MLP连接器对齐语音编码器(CNN+Transformer)与视觉编码器(InternViT)特征
- 动态资源分配:根据输入类型自动调整计算资源,如视频处理采用动态帧采样策略(4-16秒视频按1秒/帧采样)
- 四阶段渐进式训练策略
阶段 | 训练目标 | 关键数据 | 冻结参数 |
---|---|---|---|
1 | 视觉对齐 | 图像描述数据集 | LLM主体 |
2 | 语言强化 | 视觉问答数据集 | - |
3 | 语音对齐 | ASR/TTS数据 | 视觉编码器 |
4 | 多模态交互 | 噪声语音数据 | 连接器 |
该策略通过渐进式解冻参数,在保证模态兼容性的同时最小化性能损失。
- 实时交互优化技术
- 语音打断机制:部署双模型架构(生成模型+监测模型),基于Silero VAD实现200ms级语音活动检测
- 噪声抑制方案:构建474K噪声语音数据集,通过特殊终止符(2)实现无效输入的快速截断
- 动态编码优化:音频采用25token/2s的梅尔频谱编码,图像采用448px分辨率下的动态分块策略
性能表现与基准测试
在开源数据集上的表现:
任务类型 | 指标 | VITA-1.5 | Baseline |
---|---|---|---|
英文ASR | WER | 7.5% | 18.4% |
中文TTS | MOS评分 | 4.2 | 3.8 |
视频问答 | Accuracy | 83.7% | 76.2% |
端到端延迟 | 首token生成时间 | 1.2s | 4.5s |
实验显示,其7B版本在MMBench、Video-MME等基准上超越同规模开源模型20%以上。
应用场景与部署实践
典型应用场景
- 实时语音助手:医疗问诊场景中实现<2秒的连续对话
- 无障碍交互系统:支持视障用户的图像语音描述(测试集准确率91.3%)
- 智能客服系统:多轮对话中准确率提升至89%,误唤醒率<5%
快速部署
- 环境要求:
docker pull shenyunhang/pytorch:24.11-py3_2024-1224
- 获取源码:
git clone https://github.com/VITA-MLLM/VITA-Audio.git
cd VITA-Audio
git submodule update --init --recursive
pip install -r requirements_ds_gpu.txt
pip install -e .
-
准备预训练权重:
- LLM:从https://huggingface.co/Qwen/Qwen2.5-7B-Instruct下载LLM,并放在
../models/Qwen/Qwen2.5-7B-Instruct/
。 - Audio Encoder and Audio Decoder:
- 从https://huggingface.co/THUDM/glm-4-voice-tokenizer下载音频编码器,并放在
../models/THUDM/glm-4-voice-tokenizer
。 - 从https://huggingface.co/THUDM/glm-4-voice-decoder下载音频解码器,并放在
../models/THUDM/glm-4-voice-decoder
。
- 从https://huggingface.co/THUDM/glm-4-voice-tokenizer下载音频编码器,并放在
- LLM:从https://huggingface.co/Qwen/Qwen2.5-7B-Instruct下载LLM,并放在
-
数据格式:
{"messages": [{"content": "<|audio|>","role": "user"},{"content": "好的,这样排列更合理:这些生物废弃物如鸡蛋壳、蛤壳、贻贝壳比其他工业废渣更有价值。研究表明,它们在能源、材料、环境保护等领域有广泛应用。高效利用贝壳能提高资源利用效率,减少废弃物,减轻环境负担。特别是在这些领域中,鸡蛋壳因为含有丰富的钙元素,被用于制造医药品和肥料。\n<|audio|>","role": "assistant"}],"audios": ["datasets/VITA-MLLM/AudioQA-1M/QA_1450K_question_tar/question_shuf_part_8/wav/000000200014510ac1fd776006fc66b36f7f3cda76_question.wav","datasets/VITA-MLLM/AudioQA-1M/QA_1450K_answer_part1_tar/answer_part1_shuf_part_3/wav/000000200114510ac1fd776006fc66b36f7f3cda76_F10.wav"]
}
- ASR 数据格式:
{"messages": [{"content": "Convert the speech to text.\n<|audio|>","role": "user"},{"content": "没有跟大家说是在做什么","role": "assistant"}],"audios": ["datasets/wenet-e2e/wenetspeech/data/cuts_L_fixed.00000000/X00/X0000016296_135343932_S00019.wav"]
}
- TTS 数据格式:
{"messages": [{"content": "Convert the text to speech.\n那我情愿无药可救。","role": "user"},{"content": "<|audio|>","role": "assistant"}],"audios": ["datasets/Wenetspeech4TTS/WenetSpeech4TTS/Premium/WenetSpeech4TTS_Premium_9/wavs/X0000001735_50639692_S00035.wav"]
}
训练
以VITA-Audio-Boost为例:
- 训练ITA-Audio-Balance 及其他变体时,应调整文本 - 音频间隔比率。
# VITA-Audio-Boost:
--text-audio-interval-ratio 1 10 4 10 \
# VITA-Audio-Balance:
--text-audio-interval-ratio 1 4 3 8 4 10 \
- 训练 VITA-Audio-Plus-* 时,可以使用如下脚本。
scripts/deepspeed/sts_qwen25/finetune_sensevoice_glm4voice...
- 阶段一(音频 - 文本对齐)
bash scripts/deepspeed/sts_qwen25/finetune_glm4voice_stage1.sh 8192 `date +'%Y%m%d_%H%M%S'`
上述脚本可能需要进行一些调整。
- 将 ROOT_PATH 设置为你的代码根文件夹。
- 将 LOCAL_ROOT_PATH 设置为一个临时代码根文件夹。
- 根据需要修改其他环境变量。
- 阶段二(单个 MCTP 模块训练)
bash scripts/deepspeed/sts_qwen25/finetune_glm4voice_mtp1_stage1.sh 8192 `date +'%Y%m%d_%H%M%S'`
上述脚本可能需要进行一些调整。
- 将 ROOT_PATH 设置为你的代码根文件夹。
- 将 LOCAL_ROOT_PATH 设置为一个临时代码根文件夹。
- 将 MODEL_NAME_OR_PATH 设置为阶段一训练的模型路径。
- 根据需要修改其他环境变量。
- 阶段三(多个 MCTP 模块训练)
bash scripts/deepspeed/sts_qwen25/finetune_glm4voice_mtp10_stage1.sh 8192 `date +'%Y%m%d_%H%M%S'`
上述脚本可能需要进行一些调整。
- ROOT将_PATH 设置为你的代码根文件夹。
- 将 LOCAL_ROOT_PATH 设置为一个临时代码根文件夹。
- 将 MODEL_NAME_OR_PATH 设置为阶段二训练的模型路径。
- 根据需要修改其他环境变量。
6. 阶段四(监督式微调)
bash scripts/deepspeed/sts_qwen25/finetune_glm4voice_mtp10_stage2.sh 2048 `date +'%Y%m%d_%H%M%S'`
上述脚本可能需要进行一些调整。
- 将 ROOT_PATH 设置为你的代码根文件夹。
- 将 LOCAL_ROOT_PATH 设置为一个临时代码根文件夹。
- 将 MODEL_NAME_OR_PATH 设置为阶段三训练的模型路径。
- 根据需要修改其他环境变量。
推理
该脚本包括语音 - 语音、语音识别(ASR)和文本 - 语音(TTS)任务示例,以及流式和非流式推理速度测试。
python tools/inference_sts.py
- 将
model_name_or_path
设置为 VITA-Audio 模型权重路径 - 将
audio_tokenizer_path
设置为音频编码器路径 - 将
flow_path
设置为音频解码器路径
评估
评估语音 - 语音、语音识别(ASR)和文本 - 语音(TTS)基准测试
bash scripts/deepspeed/evaluate_sts.sh
声明
VITA-Audio 在大规模开源语料库上训练,其输出具有随机性。VITA-Audio 生成的任何内容不代表模型开发者的观点。我们不对因使用、滥用和传播 VITA-Audio 引发的任何问题负责,包括但不限于舆论风险和数据安全问题。
参考
- 更多细节请参考该项目。