目录
引言
在当今人工智能飞速发展的时代,大型语言模型如雨后春笋般涌现,为我们的生活和工作带来了极大的便利。然而,目前大多数语言模型主要支持文本交互,这在一定程度上限制了其在某些场景中的应用。如今,LLaMA-Omni 的出现为我们带来了全新的突破,实现了与大型语言模型的低延迟和高质量语音交互。
一、LLaMA-Omni 的背景与意义
随着科技的不断进步,人们对于自然、高效的交互方式的需求日益增长。以 ChatGPT 为代表的大型语言模型在文本交互方面表现出色,但在语音交互领域仍有很大的发展空间。GPT4o 的出现虽然使通过语音与语言模型交互成为可能,但在开源社区中,基于语言模型构建语音交互模型的探索仍显不足。
LLaMA-Omni 应运而生,它旨在解决与语言模型进行低延迟和高质量语音交互的难题。这一创新不仅拓展了语言模型的应用场景,还为用户提供了更加便捷、自然的交互方式,有望在智能助手、智能家居、智能客服等领域发挥重要作用。
二、LLaMA-Omni 的技术架构
三、数据集构建与训练策略
1. 构建 InstructS2S-200K 数据集
- 为了训练 LLaMA-Omni,研究团队构建了 InstructS2S-200K 数据集。该数据集通过改写现有文本指令数据并进行语音合成来构建。具体步骤包括指令改写、响应生成和语音合成三个环节。
- 首先,从 Alpaca 数据集和 UltraChat 数据集中收集基础文本指令。然后,对这些指令进行改写,使其更适合语音交互场景。最后,通过语音合成技术将文本指令转换为语音指令,得到 200K 语音指令数据。
2. 两阶段训练策略
- LLaMA-Omni 采用两阶段训练策略。第一阶段训练模型从语音指令直接生成文本响应,使用交叉熵损失进行训练。在这一阶段,模型学习如何理解语音指令并生成准确的文本响应。
- 第二阶段训练模型生成语音响应。在这一阶段,模型结合语言模型和流式语音解码器,学习如何将文本响应转换为语音响应,同时保持低延迟和高质量。
四、实验与评估
1. 实验设置
- 研究团队使用 InstructS2S-200K 数据集进行训练,其中包括 200K 语音指令数据。在实验中,他们选择 AlpacaEval 中的两个子集进行评估,共 199 条指令,并合成语音版本作为测试集。
- 为了生成离散单元,他们使用预训练的 K-means 量化器,并使用 HiFi-GAN 声码器合成波形。
2. 评估指标
- 为了全面评估 LLaMA-Omni 的性能,研究团队采用了多个评估指标。包括 ChatGPT 评分,从内容和风格两个方面评估模型遵循语音指令的能力;语音-文本对齐,计算语音响应和文本响应之间的词错误率(WER)和字符错误率(CER);语音质量,使用 UTMOS 预测模型评估生成语音的自然度;响应延迟,指输入语音指令到开始语音响应的时间间隔,以及语音响应开始时文本响应已生成的单词数量。
3. 实验结果
- LLaMA-Omni 在各项评估指标上均表现出色。在内容和风格方面,它优于先前的模型,提供了更准确、更自然的响应。在语音和文本响应的对齐方面,它表现最佳,WER 和 CER 较低。此外,它的响应延迟低至 226ms,解码速度具有明显优势。
4. 权衡语音质量和响应延迟
- 通过调整一个参数Ω的值,可以控制系统的延迟和语音质量。较小的Ω对应较低的系统延迟,但可能导致语音不连贯;较大的Ω会提高语音的自然度。这一特性使得用户可以根据实际需求进行调整,以达到最佳的交互效果。
五、优势与应用前景
1. 优势
- 低延迟:响应延迟低至 226ms,能够实现实时交互,为用户提供更加流畅的体验。
- 高质量:在语音质量和文本响应的准确性方面表现出色,能够满足用户对高质量交互的需求。
- 训练成本低:仅使用 4 个 GPU,训练时间不到 3天,便于基于最新的语言模型进行快速开发。
- 开源:代码开源,为开发者提供了更多的可能性和创新空间。
2. 应用前景
- 智能助手:可以作为智能助手,通过语音交互为用户提供各种服务,如查询信息、安排日程、发送邮件等。
- 智能家居:与智能家居设备结合,实现语音控制,提高家居生活的便利性和智能化程度。
- 智能客服:应用于客服领域,通过语音交互为用户解答问题,提高客户满意度。
- 教育领域:可以作为教育工具,为学生提供语音辅导和学习支持。
六、快速开始实践
1. 克隆代码
首先,从GitHub上克隆LLaMA-Omni的代码库到本地环境中。
git clone https://github.com/ictnlp/LLaMA-Omni
cd LLaMA-Omni
2. 安装包
创建一个新的conda环境,并安装Python和其他必要的包。
conda create -n llama-omni python=3.10
conda activate llama-omni
pip install pip==24.0
pip install -e .
3. 安装fairseq
Fairseq是一个用于序列建模的Python库,我们需要用它来处理语音数据。
git clone https://github.com/pytorch/fairseq
cd fairseq
pip install -e . --no-build-isolation
4. 安装flash-attention
Flash-attention是一个用于加速Transformer模型的库。
pip install flash-attn --no-build-isolation
5. 下载预训练模型
下载所需的预训练模型,包括LLaMA-3.1-8B-Omni模型、Whisper-large-v3模型,以及基于单元的hifi-gan声码器。
# 下载 LLaMA-3.1-8B-Omni 模型
# 请从 Huggingface 获取模型下载链接
# 下载 Whisper-large-v3 模型
import whisper
model = whisper.load_model("large-v3", download_root="models/speech_encoder/")
# 下载基于单元的hifi-gan声码器
wget https://dl.fbaipublicfiles.com/fairseq/speech_to_speech/vocoder/code_hifigan/mhubert_vp_en_es_fr_it3_400k_layer11_km1000_lj/g_00500000 -P vocoder/
wget https://dl.fbaipublicfiles.com/fairseq/speech_to_speech/vocoder/code_hifigan/mhubert_vp_en_es_fr_it3_400k_layer11_km1000_lj/config.json -P vocoder/
6. 启动Gradio Web服务器
使用Gradio启动一个Web服务器,以便在Web浏览器中与LLaMA-Omni模型进行交互。
python -m omni_speech.serve.gradio_web_server --controller http://localhost:10000 --port 8000 --model-list-mode reload --vocoder vocoder/g_00500000 --vocoder-cfg vocoder/config.json
7. 访问Web界面
打开Web浏览器,访问http://localhost:8000/
,开始与LLaMA-3.1-8B-Omni模型互动。
结语
LLaMA-Omni 的出现为我们带来了与大型语言模型低延迟和高质量语音交互的全新体验。它的创新架构、高效的训练策略和出色的实验结果,使其在语音交互领域具有广阔的应用前景。相信在未来,随着技术的不断进步,LLaMA-Omni 将为我们的生活和工作带来更多的便利和创新。
相关资料:
模型:https://huggingface.co/ICTNLP/Llama-3.1-8B-Omni
代码:https://github.com/ictnlp/LLaMA-Omni
论文:https://arxiv.org/pdf/2409.06666
🎯🔖更多专栏系列文章:AI大模型提示工程完全指南、AI大模型探索之路(零基础入门)、AI大模型预训练微调进阶、AI大模型开源精选实践、AI大模型RAG应用探索实践🔥🔥🔥 其他专栏可以查看博客主页📑