LLaMA-Omni 低延迟高质量语音交互,开源!

简介: 随着GPT-4o的发布,在语音界面的Voice-Chat越来越受到大家的关注,对于低延迟,高准确性模型的speech-to-speech的需求日益增长

引言

随着GPT-4o的发布,在语音界面的Voice-Chat越来越受到大家的关注,对于低延迟,高准确性模型的speech-to-speech的需求日益增长,来自中科院计算所NLP组的LLaMA-Omni 有效的解决了这样的需求,该模型整合了预训练的语音编码器、语音adapter、LLM和流式语音解码器,并消除了对文本输出后再语音转录的需求,能够直接从语音指令中同时生成文本和语音响应。

研究团队使用最新的Llama-3.1-8B-Instruct模型构建了Llama-3.1-8B-Omni,同时构建了一个名为“InstructS2S-200K”的数据集,其中包含20万个语音指令及其对应的语音响应。实验结果表明,相比于之前的语音语言模型,LLaMA-Omni在内容和风格上提供了更好的响应,并且具有极低的响应延迟,仅为226毫秒。此外,训练LLaMA-Omni仅需要不到3天的时间,在只有4个GPU的情况下进行,为未来高效开发语音语言模型铺平了道路。

image.png

小编敲黑板,LLaMA-Omni 主要特点和进步:

高质量问答

基于LLaMA-3.1-8B训练,LLaMA-3.1-8B是同尺寸大小的比较领先的大语言模型,来确保回应质量高

同时语音和文本响应

LLaMA-Omni 能够根据用户语音输入生成语音和文本响应(如下图)。这使其成为语音助手或交互式代理等实时应用的理想选择。响应是同时生成的,无需繁琐的中间转录步骤,从而提高了对话的速度和流畅度。

image.png

低延迟

LLaMA-Omni 最令人印象深刻的功能是低延迟,其响应时间低至226 毫秒。这使其成为目前最快的语音对语音交互模型之一,可确保用户体验近乎即时的反馈。和传统的方式不同之处在于输出的时候不是先输出完文本再把文本转换成语音,而是流式的边输出文本边输出语音,类似人的同声传译,大幅度降低了延迟。

高效训练

LLaMA-Omni 不仅延迟低,开发效率也高,训练LLaMA-Omni仅需要不到3天的时间,在只有4个GPU的情况下进行,为未来高效开发语音语言模型铺平了道路,凸显了其对各类 AI 开发者和研究人员的可扩展性和可访问性。

优化数据集

构建了一个名为“InstructS2S-200K”的数据集,其中包含20万个语音指令及其对应的语音响应。此数据集确保模型高度适应处理各种语音输入并生成适当的上下文感知响应。

模型地址:

https://modelscope.cn/models/ICTNLP/Llama-3.1-8B-Omni

论文地址:

https://arxiv.org/abs/2409.06666

代码地址:

https://github.com/ictnlp/LLaMA-Omni

模型体验

创空间体验链接:

https://modelscope.cn/studios/ICTNLP/Llama-3.1-8B-Omni

image.png

模型使用

下载代码repo

git clone https://github.com/ictnlp/LLaMA-Omni
cd LLaMA-Omni

安装Omni包

pip install pip==24.0
pip install -e .

安装fairseq

git clone https://github.com/pytorch/fairseq
cd fairseq
pip install -e . --no-build-isolation

安装flash-attention

pip install flash-attn --no-build-isolation

模型下载

下载Llama-3.1-8B-Omni

modelscope download --model=ICTNLP/Llama-3.1-8B-Omni --local_dir ./Llama-3.1-8B-Omni

下载whisper-large-v3

wget "https://modelscope.cn/models/ai-modelscope/large-v3.pt/resolve/master/large-v3.pt" -P models/speech_encoder/

下载HiFi-GAN vocoder.

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/

模型推理

要进行本地推理,请按照 omni_speech/infer/examples 目录中的格式组织语音指令文件,然后参考以下脚本。

bash omni_speech/infer/run.sh omni_speech/infer/examples

模型微调

我们使用ms-swift对Llama3.1-8B-Omni进行微调。ms-swift是魔搭社区官方提供的大模型与多模态大模型微调部署框架。

ms-swift开源地址:

https://github.com/modelscope/ms-swift

这里展示可运行的demo,自定义数据集可以查看这里:https://swift.readthedocs.io/zh-cn/latest/Instruction/%E8%87%AA%E5%AE%9A%E4%B9%89%E4%B8%8E%E6%8B%93%E5%B1%95.html

在开始微调之前,请确保您的环境已准备妥当。

git clone https://github.com/modelscope/ms-swift.git
cd ms-swift
pip install -e .[llm]

我们使用 aishell1-zh-mini 数据集:https://modelscope.cn/datasets/speech_asr/speech_asr_aishell1_trainsets 进行微调。

微调脚本:

# 默认:微调LLM和projector, 冻结vision encoder和generator
CUDA_VISIBLE_DEVICES=0 swift sft \
  --model_type llama3_1-8b-omni \
  --model_id_or_path ICTNLP/Llama-3.1-8B-Omni \
  --sft_type lora \
  --dataset aishell1-zh-mini#5000
# Deepspeed ZeRO2
NPROC_PER_NODE=4 \
CUDA_VISIBLE_DEVICES=0,1,2,3 swift sft \
  --model_type llama3_1-8b-omni \
  --model_id_or_path ICTNLP/Llama-3.1-8B-Omni \
  --sft_type lora \
  --dataset aishell1-zh-mini#5000 \
  --deepspeed default-zero2

训练显存占用:

image.png

如果要使用自定义数据集,只需按以下方式进行指定:

# val_dataset可选,如果不指定,则会从dataset中切出一部分数据集作为验证集
    --dataset train.jsonl \
    --val_dataset val.jsonl \

自定义数据集格式如下,分别代表单音频、多音频和纯文本的格式:

{"query": "<audio>55555", "response": "66666", "audios": ["audio_path"]}
{"query": "<audio><audio>eeeee", "response": "fffff", "history": [], "audios": ["audio_path1", "audio_path2"]}
{"query": "query3", "response": "response3", "history": [["query1", "response1"], ["query2", "response2"]]}

训练loss图:

image.png

微调后推理脚本如下,这里的ckpt_dir需要修改为训练生成的last_checkpoint文件夹。

CUDA_VISIBLE_DEVICES=0 swift infer \
    --ckpt_dir output/llama3_1-8b-omni/vx-xxx/checkpoint-xxx \
    --load_dataset_config true
# or merge-lora & infer
CUDA_VISIBLE_DEVICES=0 swift infer \
    --ckpt_dir output/llama3_1-8b-omni/vx-xxx/checkpoint-xxx \
    --load_dataset_config true --merge_lora true

微调后模型对验证集进行推理的结果:

image.png

点击链接👇即可跳转体验~

https://modelscope.cn/studios/AIDC-AI/Ovis1.6-Gemma2-9B?from=alizishequ__text

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
机器学习/深度学习 语音技术 开发工具
阿里巴巴开源语音识别声学建模技术
本文我们介绍阿里巴巴的语音识别声学建模新技术: 前馈序列记忆神经网络(DFSMN)。目前基于DFSMN的语音识别系统已经在法庭庭审识别、智能客服、视频审核和实时字幕转写、声纹验证、物联网等多个场景成功应用。
10488 0
|
4月前
|
达摩院 语音技术 异构计算
语音识别-免费开源的语音转文本软件Whisper的本地搭建详细教程,python版本是3.805,ffmpeg是专门处理音视频的,ffmpeg的下载链接,现在要求安装python和ffmpeg
语音识别-免费开源的语音转文本软件Whisper的本地搭建详细教程,python版本是3.805,ffmpeg是专门处理音视频的,ffmpeg的下载链接,现在要求安装python和ffmpeg
|
5月前
|
人工智能 自然语言处理 语音技术
GigaSpeech 2:三万小时东南亚多语种语音识别开源数据集发布
GigaSpeech 2 是一个持续扩展的、多领域多语言的大规模语音识别语料库,旨在促进低资源语言语音识别领域的发展和研究。
|
6月前
|
PyTorch 测试技术 TensorFlow
Modelscope-FunASR是一个开源的语音识别框架
【2月更文挑战第9天】Modelscope-FunASR是一个开源的语音识别框架
717 2
|
达摩院 自然语言处理 测试技术
开源|业界首个应用落地的非自回归端到端语音识别模型,推理效率可提升10倍
近期,阿里巴巴达摩院发布新一代语音识别模型Paraformer,这是业界首个应用落地的非自回归端到端语音识别模型,在推理效率上最高可较传统模型提升10倍,且识别准确率在多个权威数据集上名列第一。 目前,该模型于魔搭社区面向全社会开源,适用语音输入法、智能客服、车载导航、会议纪要等众多场景。
708 0
|
达摩院 自然语言处理 测试技术
直接开源!达摩院公布下一代工业级语音识别模型
直接开源!达摩院公布下一代工业级语音识别模型
731 0
|
机器学习/深度学习 人工智能 自然语言处理
Facebook 开源首个全卷积语音识别工具包 wav2letter++
系统基于全卷积方法进行语音识别,训练语音识别端到端神经网络的速度是其他框架的 2 倍多。
646 0
|
语音技术 机器学习/深度学习
阿里开源新一代自研语音识别模型DFSMN,准确率达96.04%
近日,阿里巴巴达摩院机器智能实验室推出了新一代语音识别模型DFSMN,将全球语音识别准确率纪录提高至96.04%(这一数据测试基于世界最大的免费语音识别数据库LibriSpeech)。
2577 0

热门文章

最新文章

  • 1
    实时语音识别 使用websockt传输二进制数组 onSentenceEnd不返回结果
    30
  • 2
    在人工智能和机器学习的领域中,语音识别(Speech Recognition,SR)是一个重要的研究方向。它旨在将人类的语音转换为计算机可读的文本。
    112
  • 3
    Python基于librosa和人工神经网络实现语音识别分类模型(ANN算法)项目实战
    133
  • 4
    深度学习在语音识别中的进展
    59
  • 5
    语音识别------ffmpeg的使用01,ffmpeg的安装,会做PPT很好,ffmpeg不具备直接使用,只可以操作解码数据,ffmpeg用C语言写的,得学C语言,ffmpeg的安装
    64
  • 6
    语音识别-----列表的常用操作课后练习讲解,用变量追加,取出第一个,取出最后一个,下标位置,列表的循环遍历,下标+1的写法,len下标可以小于这个值,while循环对index循环的遍历
    38
  • 7
    语音识别-免费开源的语音转文本软件Whisper的本地搭建详细教程,python版本是3.805,ffmpeg是专门处理音视频的,ffmpeg的下载链接,现在要求安装python和ffmpeg
    217
  • 8
    语音识别,列表的定义语法,列表[],列表的下标索引,从列表中取出来特定的数据,name[0]就是索引,反向索引,头部是-1,my[1][1],嵌套列表使用, 列表常用操作, 函数一样,需引入
    40
  • 9
    语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
    39
  • 10
    语音识别----函数基础定义联系案例,函数的参数,函数的参数练习案例,函数的返回值定义语法,函数返回值之None,函数的说明文档,函数的嵌套调用,变量在函数中的作用域,内部变量变全局变量用global
    44