Ultravox-v0_4 项目介绍
项目背景
Ultravox 是一款多模态语言模型(LLM),其核心是预训练的Llama3.1-8B-Instruct和Whisper-medium模型。Ultravox 能够处理语音和文本两种输入,用户可以通过文本提示和音频消息与之交互。
项目特点
Ultravox 能够将输入的语音信息转化为模型可理解的嵌入,并将其与文本信息结合,生成相应的文本输出。未来的版本计划扩展词汇量,以支持语义和声学音频符号的生成,这些符号可用于语音编码器以产生音频输出。
Ultravox 的开发者为Fixie.ai,当前版本在没有进行偏好调整的情况下以MIT开源许可发布。
模型来源
项目的详细代码和更多信息可以通过 Ultravox 官方网站 获取。
使用说明
Ultravox 可用作语音代理以及语音翻译、语音分析等多种场景。用户通过安装相关依赖库transformers
和 librosa
,可以调用Ultravox的功能。以下是一个简单的使用示例:
# 安装必要的Python包
# pip install transformers peft librosa
import transformers
import numpy as np
import librosa
# 初始化模型管道
pipe = transformers.pipeline(model='fixie-ai/ultravox-v0_4', trust_remote_code=True)
# 加载音频文件
path = "<path-to-input-audio>" # TODO: 将音频路径替换为实际路径
audio, sr = librosa.load(path, sr=16000)
# 设定对话输入
turns = [
{
"role": "system",
"content": "你是一个友好且乐于助人的角色。你喜欢为人们回答问题。"
},
]
# 调用模型生成输出
pipe({'audio': audio, 'turns': turns, 'sampling_rate': sr}, max_new_tokens=30)
训练细节
Ultravox 使用预训练的 Llama3.1-8B-Instruct 作为基础并结合 Whisper 中的编码器部分。训练时仅针对多模态适配器进行训练,Whisper 编码器和 Llama 部分被保持冻结状态。模型采用知识蒸馏损失,目标是匹配文本基础模型 Llama 的logits。
训练数据
训练数据集是由多种自动语音识别(ASR)数据集混合组成,并通过 Llama 3.1 8B 生成的“延续”文本进行扩展。
训练过程
模型采用监督的语音到音频微调方法,训练详情可以在 Ultravox 训练代码 中找到。
训练参数
- 训练方式: BF16混合精度训练
- 硬件: 8台H100 GPU
性能和效率
当前版本的 Ultravox 使用音频输入时,首个令牌生成时间(TTFT)约为150ms,每秒生成~~50-100个令牌,测试硬件为A100-40GB GPU,使用了 Llama 3.1 8B 作为基础。性能竞标可参考 TheFastest.ai。
模型评估
Ultravox 的最新版本(v0.4)在多个翻译任务和语音识别任务上表现出色,相比之前版本有显著提高。
en_de (BLEU) | es_en (BLEU) | LibriSpeech clean.test (WER) | |
---|---|---|---|
Ultravox v0.3 | 22.66 | 24.74 | 6.67 |
Ultravox v0.4 | 25.47 | 37.11 | 4.45 |
Llama3.1 (text-only) | 31.95 | 38.28 | - |
Ultravox-v0_4 是一款具备多模态输入能力的强大工具,适用于多个自然语言处理和语音处理应用场景,未来的改进方向在于进一步拓展其生成能力以涵盖更多音频输出。