介绍
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:github.com/VITA-MLLM/V…
关键技术解析
- 多跨模态令牌预测(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.gitcd VITA-Audiogit submodule update --init --recursivepip install -r requirements_ds_gpu.txtpip install -e .
准备预训练权重:
- LLM:从huggingface.co/Qwen/Qwen2.…下载LLM,并放在
../models/Qwen/Qwen2.5-7B-Instruct/
。Audio Encoder and Audio Decoder:- 从huggingface.co/THUDM/glm-4…下载音频编码器,并放在
../models/THUDM/glm-4-voice-tokenizer
。从huggingface.co/THUDM/glm-4…下载音频解码器,并放在../models/THUDM/glm-4-voice-decoder
。数据格式:
{ "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 引发的任何问题负责,包括但不限于舆论风险和数据安全问题。
参考
- 更多细节请参考该项目。