开源语音大语言模型——Qwen-Audio

news2024/11/27 12:48:02

论文链接:https://arxiv.org/pdf/2311.07919.pdf

开源代码:https://github.com/QwenLM/Qwen-Audio

一、背景

大型语言模型(LLMs)由于其良好的知识保留能力、复杂的推理和解决问题能力,在通用人工智能(AGI)领域取得了重大进展。然而,语言模型缺乏像人类一样感知非文本模态(如图像和音频)的能力。作为一种重要模态,语音提供了超越文本的多样且复杂的信号,如人声中的情感、语调和意图,自然声音中的火车汽笛、钟声和雷声,以及音乐中的旋律。使LLMs能够感知和理解丰富的音频信号以进行音频交互引起了广泛关注。

以前关于遵循指令的工作主要是通过继承大型(多模态)LLMs的能力,采用轻量级的监督微调来激活模型的能力以与用户意图对齐。然而,由于缺乏能够处理各种音频类型和任务的预训练音频语言模型,大多数工作在音频交互能力上受到限制。现有的代表性音频语言多任务语言模型,如SpeechNet、SpeechT5、VIOLA 、Whisper和Pengi,仅限于处理特定类型的音频,如人声或自然声音。

二、简介

Qwen-Audio(Qwen 大型音频语言模型)是阿里云提出的大型模型系列Qwen(简称Tongyi Qianwen)的多模态版本。Qwen-Audio 接受各种音频(人类语音、自然声音、音乐和歌曲)和文本作为输入、输出文本。Qwen-Audio的贡献包括:

  • 基础音频模型:Qwen-Audio 是一个基本的多任务音频语言模型,支持各种任务、语言和音频类型,作为通用的音频理解模型。在Qwen-Audio的基础上,我们通过指令微调来开发Qwen-Audio-Chat,实现多轮对话,支持多样化的音频场景。
  • 适用于所有类型音频的多任务学习框架:为了扩大音频语言预训练的规模,我们通过提出多任务训练框架,实现知识共享并避免一对多干扰,解决了与不同数据集相关的文本标签变化的挑战。我们的模型包含 30 多个任务,大量实验表明该模型具有很强的性能。
  • 强大的性能:实验结果表明,Qwen-Audio 在各种基准测试任务中都取得了令人印象深刻的性能,无需任何特定于任务的微调,超越了同类产品。具体来说,Qwen-Audio 在 Aishell1、耳蜗、ClothoAQA 和 VocalSound 的测试集上取得了最先进的结果。
  • 灵活的音频和文本输入多运行聊天:Qwen-Audio 支持多音频分析、声音理解和推理、音乐欣赏和语音编辑工具使用.。

为了促进音频-文本多模态社区的增长和发展,我们引入了Qwen-Audio,一个大规模音频语言模型。Qwen-Audio是一个以音频和文本输入为条件的多任务语言模型,扩展了Qwen-7B语言模型,通过连接单个音频编码器有效地感知音频信号。与以往主要迎合单一类型的音频(如人声)的工作不同,或者专注于特定任务(如语音识别和字幕),或者将模型限制在单一语言上,我们扩大了训练规模,涵盖了超过30个任务、八种语言和各种音频类型,以推进通用音频理解能力的发展。

 多任务和多数据集共同训练面临的一个重要挑战是不同数据集关联的文本标签的相当大的变化。这种变化源于任务目标、语言、注释粒度和文本结构(结构化或非结构化)的差异。为了解决这个一对多的挑战,我们精心设计了一个多任务训练框架,将解码器的输出条件为一系列分层标签。这种设计鼓励知识共享,并通过共享和指定标签来减少干扰。此外,我们还将语音识别与基于字级时间戳预测(SRWT)的任务结合起来进行训练,这在以前的多任务学习研究中通常被忽视。我们发现这个任务不仅在超越语音信号的基于语音的问题回答任务(如声音和音乐)方面改进了接地任务,还改善了ASR的性能。

三、方法与模型 

本文介绍了Qwen-Audio和Qwen-Audio-Chat的详细信息,这两个系统旨在实现基于人类指令的通用音频理解和灵活交互。我们的模型训练过程包括两个阶段:多任务预训练和监督微调。

 

Qwen-Audio模型的结构如图所示。Qwen-Audio包含一个音频编码器和一个大型语言模型。给定成对数据(a, x),其中a和x表示音频序列和文本序列,训练目标是最大化下一个文本标记的概率。

 在给定音频表示和之前的文本序列x<t的条件下,θ和ϕ分别表示llm(large language model,大语言模型)和音频编码器的可训练参数。

1、音频编码器

Qwen-Audio采用单个音频编码器来处理各种类型的音频。音频编码器的初始化基于Whisper-large-v2模型 ,这是一个包含两个卷积下采样层作为起始层的32层Transformer模型。音频编码器由640M个参数组成。虽然Whisper是针对语音识别和翻译进行监督训练的,但它的编码表示仍然包含丰富的信息,如背景噪音,甚至可以用于恢复原始语音。为了预处理音频数据,Whisper将其重新采样为16kHz的频率,并使用25ms的窗口大小和10ms的跳跃大小将原始波形转换为80通道的Mel频谱图。此外,还加入了一个步幅为2的池化层以减少音频表示的长度。因此,编码器输出的每一帧大约对应于原始音频信号的40ms片段。在训练时应用了SpecAugment作为数据增强方法。

2、大语言模型

Qwen-Audio采用了一个大语言模型作为其基础组件。该模型使用从Qwen-7B导出的预训练权重进行初始化。Qwen-7B是一个32层Transformer解码模型,隐藏大小为4096,总共有77亿个参数。

3、多任务预训练

受Whisper的启发 ,为了将不同类型的音频结合起来,我们提出了一个多任务训练格式框架,如下所示: 

  • 转录标签:使用转录标签表示预测的开始。<|startoftranscripts|>用于指示任务涉及对口语的准确转录和捕获语音记录的语言内容,例如语音识别和语音翻译任务。对于其他任务,使用<|startofanalysis|>标签。 

  • 音频语言标签:然后,我们引入了一个语言标签,用于指示音频中的口语语言。该标签使用一个唯一的令牌来表示训练集中存在的每种语言,总共有八种语言。在音频片段不包含任何语音的情况下,例如自然声音和音乐,模型被训练来预测一个 <|unknown|> 令牌。 

  • 任务标签:接下来的标记指定了任务类型。我们将收集到的音频任务分为五种类别:<|transcribe|>(转录)、<|translate|>(翻译)、<|caption|>(字幕)、<|analysis|>(分析)和 <|question-answer|>(问答)任务。对于问答(QA)任务,我们在标签后添加相应的问题。 

  • 文本语言标签:标签令牌指定输出文本序列的语言。 

  • 时间戳标记:存在一个<|timestamps|>或<|notimestamps|>的标记决定模型是否需要预测时间戳。与Whisper中使用的句级时间戳不同,<|timestamps|>标记的包含需要模型进行细粒度的词级时间戳预测,简称为SRWT(带有词级时间戳的语音识别)。这些时间戳的预测与转录单词交叉进行:每个转录单词之前预测开始时间标记,而每个转录单词之后预测结束时间标记。根据我们的实验,SRWT提高了模型对音频信号与时间戳对齐的能力。这种改进的对齐有助于模型对语音信号进行全面理解,从而在诸多任务中取得显著进展,如语音识别和音频问答任务。

  • 最后,我们提供输出说明,以进一步明确不同子任务的任务和所需格式,然后文本输出开始。我们框架的指导原则是通过共享标签来最大化类似任务之间的知识共享,从而提高它们的性能。同时,我们确保可以区分不同的任务和输出格式,以避免模型中的一对多映射问题。

4、监督微调

多任务模型的广泛预训练使其具备了广泛的音频理解能力。在此基础上,我们采用基于指示的微调技术来提高模型与人类意图的对齐能力,从而得到一个交互式聊天模型,命名为Qwen-Audio-Chat。 

为了实现这一目标,我们为每个任务手动创建演示。这些演示包括原始文本标签、问题和答案。然后,我们利用GPT-3.5 根据提供的原始文本标签生成更多的问题和答案。此外,我们还通过手动注释、模型生成和策略串联的方式创建了一个音频对话数据集。这个数据集帮助我们将推理、故事生成和多图像理解能力融入到我们的模型中。

为了有效处理多音频对话和多个音频输入,我们引入了使用 "Audio id:" 标记不同音频的约定,其中 id对应音频输入对话的顺序。在对话格式方面,我们使用ChatML (Openai)格式构建我们的指示微调数据集。在这个格式中,每个交互的陈述都用两个特殊标记(和)标注,以便促进对话的终止。

为了在多轮对话中实现对音频和纯文本模态的灵活输入,我们在训练过程中使用了上述提到的音频为中心的指令数据和纯文本指令数据的组合。这种方法使模型能够无缝处理多种形式的输入。指令调整数据的总量为20k。

 原文链接:开源语音大语言模型来了!阿里基于Qwen-Chat提出Qwen-Audio! (qq.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1259592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

链表的反转—c++版本

一、迭代反转法 过程分析&#xff1a; 代码实现&#xff1a; #include <iostream>struct LinkNode{ //创建一个结构体做为链表的结点int data; //数据域LinkNode* next; //指针域 };void Print_Link(LinkNode* phead) //打印链表 {while (phead ! nu…

cadence virtuoso simulation文件夹删除

ADE XL仿真结果错误&#xff0c;与预期结果差别太大&#xff0c;与ADE L仿真结果也差别很大。 可能是由于仿真数据过多&#xff0c;卡爆了。 在virtuoso启动路径下&#xff0c;simulation文件夹是仿真过程文件&#xff0c;可以将此文件夹清空。 清空后ADE XL仿真结果正常了。…

P23 C++字符串

目录 前言 01 什么是字符串 02 字符串是怎么工作的呢&#xff1f; 2.1 字符 2.2 字符串 2.3 如何知道指向hello world的这个指针多大 03 使用字符串 04 字符串传参 前言 本期我们将讨论 C 中的字符串。 首先&#xff0c;什么是字符串&#xff1f; 01 什么是字符串 字…

基于OpenCV+YOLOv5实现车辆跟踪与计数(附源码)

导 读 本文主要介绍基于OpenCVYOLOv5实现车辆跟踪与计数的应用&#xff0c;并给出源码。 资源下载 基础代码和视频下载地址&#xff1a; https://github.com/freedomwebtech/win11vehiclecount main.py代码:​​​​​​​ import cv2import torchimport numpy as npfrom tr…

Vue CLI 初体验之如何创建一个项目并打开,以及组件的简单使用案例。

目录 什么是Vue CLI? 如何使用Vue CLI 创建一个项目 1.winr 打开cmd 输入vue create 1127(1127是文件名) 2.配置基础设置 选择Manually select features 选择Router和Vuex 选中vue版本&#xff08;我这里选vue3&#xff09; 剩下的看自己需要&#xff0c;如果不确定就一…

3、Segment Anything

github 创建anaconda环境 conda create -n ASM python3.8下载依赖包 # pytorch>1.7 and torchvision>0.8 conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatoolkit11.3 -c pytorchpip install githttps://github.com/facebookresearch/segment-a…

13、LCD1602调试工具

LCD1602调试工具 使用LCD1602液晶屏作为调试窗口&#xff0c;提供类似Printf函数的功能&#xff0c;可实时观察单片机内部数据的变化情况&#xff0c;便于调试和演示。 main.c #include <REGX52.H> #include "LCD1602.h" #include "Delay.h"//存储…

快速搭建一个SpringCloud、SpringBoot项目 || 项目搭建要点

1. 基本结构 建立springcloud项目从表入手&#xff0c;分析好需求建立表结构后&#xff0c;使用mybatis-plux生成POJO类&#xff0c;在对应的model模块中。 2. 微服务部分架构 2.1 依赖 service 微服务模块的依赖仅包含如下&#xff0c;数据库等依赖包含在model中&#xff0c…

【解决视觉引导多个位置需要标定多个位置的问题】

** 以下只针对2D定位&#xff0c;就是只有X、Y、Rz三个自由度的情况。** 假设一种情况&#xff0c;当视觉给机器人做引导任务时&#xff0c;零件有多个&#xff0c;分布在料框里&#xff0c;视觉需要走多个位置去拍&#xff0c;那么只需要对第一个位置确定拍照位&#xff0c;确…

力扣6:N字形变化

代码&#xff1a; class Solution { public:string convert(string s, int numRows){int lens.size();if(numRows1){return s;}int d2*numRows-2;int count0;string ret;//第一行&#xff01;for(int i0;i<len;id){rets[i];}//第k行&#xff01;for(int i1;i<numRows-1;…

智能优化算法应用:基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.教与学算法4.实验参数设定5.算法结果6.参考文献7.…

超越GPT-4,拥有联网能力,Kimi-Chat大模型已免费使用,国内直接访问

目前ChatGPT的所有免费用户都已可以使用带有语音功能的ChatGPT。 人吧&#xff0c;总是贪婪的&#xff0c;我还想要ChatGPT Plus用户独享的“联网”功能。 目前对于ChatGPT来说&#xff0c;不想交钱&#xff0c;别拥有“联网”能力了&#xff0c;于是我找到了一个后起之秀&…

【差旅游记】新疆哈密回王府印象

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 2023年11月4号&#xff0c;那天的风的确挺大&#xff0c;逛完哈密博物馆考虑要不要去旁边的哈密回王府逛逛。想着来都来了&#xff0c;虽然网上评价不太好&#xff0c;还是去溜达一圈吧&#xff0c;于是决定自己去转转…

为啥网络安全那么缺人,但很多人却找不到工作?

文章目录 一、学校的偏向于学术二、学的东西太基础三、不上班行不行 为什么网络安全的人才缺口那么大&#xff0c;但是大学毕业能找到网安工作的人却很少&#xff0c;就连招聘都没有其他岗位多&#xff1f; 明明央视都说了网络安全的人才缺口还有300多万&#xff0c;现在找不到…

C++ 用ifstream读文件

输入流的继承关系: C++ 使用标准库类来处理面向流的输入和输出: iostream 处理控制台 IOfstream 处理命名文件 IOstringstream 完成内存 string 的 IO每个IO 对象都维护一组条件状态 flags (eofbit, failbit and badbit),用来指出此对象上是否可以进行 IO 操作。如果遇到错误…

vue实战——登录【详解】(含自适配全屏背景,记住账号--支持多账号,显隐密码切换,登录状态保持)

效果预览 技术要点——自适配全屏背景 https://blog.csdn.net/weixin_41192489/article/details/119992992 技术要点——密码输入框 自定义图标切换显示隐藏 https://blog.csdn.net/weixin_41192489/article/details/133940676 技术要点——记住账号&#xff08;支持多账号&…

「江鸟中原」有关HarmonyOS-ArkTS的Http通信请求

一、Http简介 HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是一种用于在Web应用程序之间进行通信的协议&#xff0c;通过运输层的TCP协议建立连接、传输数据。Http通信数据以报文的形式进行传输。Http的一次事务包括一个请求和一个响应。 Http通信是基于客户端-服…

进程等待讲解

今日为大家分享有关进程等待的知识&#xff01;希望读完本文&#xff0c;大家能有一定的收获&#xff01; 正文开始&#xff01; 进程等待的引进 既然我们今天要讲进程等待这个概念&#xff01;那么只有我们把下面这三个方面搞明白&#xff0c;才能真正的了解进程等待&#x…

形象建设、生意经营、用户运营,汽车品牌如何在小红书一举多得?

随着小红书在多领域的持续成长&#xff0c;现在来小红书看汽车的用户&#xff0c;需求逐渐多元化与专业化。近1年的时间&#xff0c;有超过1亿人在小红书「主动搜索」过汽车内容&#xff0c;大家已经不仅限于玩车、用车&#xff0c;更是扩展到了百科全书式的看、选、买、学各个…