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

论文链接: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.mzph.cn/news/175413.shtml

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

相关文章

Android Handler同步屏障:深入解析

Android Handler同步屏障&#xff1a;深入解析 在Android开发中&#xff0c;Handler和MessageQueue是处理线程间通信的重要组件。除了常见的消息发送和处理功能&#xff0c;Handler还提供了一个高级特性&#xff1a;同步屏障。本文将深入探讨这一特性&#xff0c;包括它的工作…

Matplotlib线形图的创建_Python数据分析与可视化

线形图的创建 绘制线形图设置颜色和风格设置坐标轴上下限设置图形标签 绘制线形图 在所有图形中&#xff0c;最简单的应该就是线性方程y f (x) 的可视化了。来看看如何创建这个简单的线形图。要画Matplotlib图形时&#xff0c;都需要先创建一个图形fig 和一个坐标轴ax。创建图…

Elasticsearch(ES)概述

文章目录 一.什么是Elasticsearch?1.正向索引和倒排索引2.Mysql和ES的概念对比3.安装elasticsearch、kibana 二.IK分词器三.索引库操作四.文档操作五.RestClient操作索引库1.初始化RestClient2.创建索引库3.删除索引库4.判断索引库是否存在 六.RestClient操作文档1.新增文档2.…

Python 新版来袭!3.12.0 安装教程!!

Python是一门面向对象的计算机程序设计语言&#xff0c;以简洁和优雅著称&#xff0c;可以用于网络爬虫、web开发、人工智能、机器学习、数据挖掘及分析等工作&#xff0c;是目前最受欢迎的编程语言之一。 目前常见的Python版本有Python2和Python3&#xff0c;Python3不向下&a…

测试用例设计方法-场景法详解

01 定义 场景法是通过运用场景来对系统的功能点或业务流程的描述&#xff0c;从而提高测试效果的一种方法。 场景法一般包含基本流和备用流&#xff0c;从一个流程开始&#xff0c;通过描述经过的路径来确定的过程&#xff0c;经过遍历所有的基本流和备用流来完成整个场景。 …

北美区域性确定性预测系统平均温度数据

区域确定性预测系统&#xff08;RDPS&#xff09; 区域确定性预测系统 (RDPS) 进行物理计算&#xff0c;以 10.0 公里网格&#xff08;1/11 度&#xff09;空间分辨率对当天到未来 48 小时内的大气元素进行确定性预测。平均温度数据覆盖北美&#xff0c;由加拿大气象局 (MSC) …

【STM32】GPIO输入

1 GPIO输出 1.1 按键简介 按键&#xff1a;常见的输入设备&#xff0c;按下导通&#xff0c;松手断开 按键抖动&#xff1a;由于按键内部使用的是机械式弹簧片来进行通断的&#xff0c;所以在按下和松手的瞬间会伴随有一连串的抖动 1.2 传感器模块简介 传感器模块&#xff…

LearnTheArchitecture-MemoryManagement

快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】:【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 — 适合小白入门【目录】ARMv8/ARMv9架构高级进阶-[目录]👈👈👈 — 高级进阶、小白勿买【加群】ARM/TEE…

day02 hive 实操练习

一、某高校图书管理系统中有如下三个数据模型&#xff1a; create table book( book_id string, sort string, book_name string, writer string, output string, price decimal(10,2));INSERT INTO TABLE book VALUES (001,TP391,information_processing,author1,machinery_i…

redis优化秒杀和消息队列

redis优化秒杀 1. 异步秒杀思路1.1 在redis存入库存和订单信息1.2 具体流程图 2. 实现2.1 总结 3. Redis的消息队列3.1 基于list实现消息队列3.2 基于PubSub实现消息队列3.3 基于stream实现消息队列3.3.1 stream的单消费模式3.3.2 stream的消费者组模式 3.4 基于stream消息队列…

XmlElement注解用在Java的列表属性上产生的效果

例如&#xff0c;下面的代码&#xff0c;XmlElement注解用在了Conditions类的conditionList属性的getter方法上&#xff0c;其中conditionList是一个列表类型&#xff1a; package com.thb;import java.util.List;import jakarta.xml.bind.annotation.XmlAttribute; import ja…

Python面经【4】

Python面经【4】 一、什么是闭包二、[列表]和(元组)的区别三、__Init__和__new__的区别四、Python里match与search的区别五、创建百万级实例如何节省内存六、18. 4G内存如何读取一个5G的数据 一、什么是闭包 闭包指的是在函数内部定义了另一个函数&#xff0c;并返回了这个作为…

香港服务器显示美国 IP 地址是怎么回事

香港服务器显示美国 IP&#xff0c;在我们选择免备案服务器时会考虑很多影响因素&#xff0c;其中香港服务器有着省时省力&#xff0c;方便速度快等优 势受到大多用户喜爱&#xff0c;可有的时候在选择香港服务器时发现&#xff0c;有的香港服务器在 IP 地址一栏会显示其它国家…

leetcode每日一题34

89.格雷编码 观察一下n不同时的格雷编码有什么特点 n1 [0,1] n2 [0,1,3,2] n3 [0,1,3,2,6,7,5,4] …… 可以看到nk时&#xff0c;编码数量是nk-1的数量的一倍 同时nk编码的前半部分和nk-1一模一样 nk编码的最后一位是2k-1 后半部分的编码是其对应的前半部分的对称的位置的数字…

如何使用OpenCV转换图像并创建视频,实现Ken Burns特效

一、Ken Burns特效 当使用OpenCV时,最常使用的是图像,但是我们也可以多个图像创建动画,通过引入时间轴更容易可视化。 Ken Burns特效这是一种以电影制片人肯伯恩斯 (Ken Burns) 命名的平移和缩放技术,Ken Burns 效果不是在屏幕上显示大型静态照片,而是裁剪细节,然后平移图…

vue3(四)-基础入门之 fetch 与 axios

一、fetch 1、axios和fetch的区别 Axios 和 Fetch 都是 JavaScript 中用于发送 HTTP 请求的 API&#xff0c;它们的主要区别在以下方面&#xff1a; 1.Axios 支持更广泛的浏览器和 Node.js 版本&#xff0c;而 Fetch 只能在较新的浏览器中使用&#xff0c;或需要使用 polyfi…

[动态规划] 回文子串

回文子串 题目描述 给定一个字符串&#xff0c;输出所有回文子串。 回文子串即从左往右输出和从右往左输出结果是一样的字符串 比如&#xff1a; abba cccdeedccc都是回文字符串 我们要查找的子串长度应该大于等于2 关于输入 输入是一行&#xff0c;即可一个字符串。长度…

vr红色教育虚拟展馆全景制作提升单位品牌形象

720全景展馆编辑平台以其独特的优势&#xff0c;为展览行业带来了革命性的变革。这种创新的技术应用为参展商提供了更高效、更便捷、更全面的展示解决方案&#xff0c;进一步提升了展览行业的水平和影响力。 一、提升展示效果&#xff0c;增强品牌形象 720全景展馆编辑平台通过…

使用conan包 - 工作流程

使用conan包 - 工作流程 主目录 conan Using packages1 Single configuration2 Multi configuration 本文是基于对conan官方文档Workflows的翻译而来&#xff0c; 更详细的信息可以去查阅conan官方文档。 This section shows how to setup your project and manage dependenci…

32 - MySQL调优之事务:高并发场景下的数据库事务调优

数据库事务是数据库系统执行过程中的一个逻辑处理单元&#xff0c;保证一个数据库操作要么成功&#xff0c;要么失败。谈到他&#xff0c;就不得不提 ACID 属性了。数据库事务具有以下四个基本属性&#xff1a;原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Con…