ICLR 2024|端到端语音大模型 - SALMONN 字节

ICLR 2024|端到端语音大模型 - SALMONN 字节

ICLR 2024|端到端语音大模型

2024年08月15日 17:20上海

论文题目:SALMONN: TOWARDS GENERIC HEARING ABILITIES FOR LARGE LANGUAGE MODELS

代码链接:https://github.com/bytedance/SALMONN

一、摘要

通过将一个预先训练的基于文本的大型语言模型(LLM)与语音和音频编码器集成到一个多模态模型中,SALMONN 使 LLM 能够直接处理和理解一般音频输入。并在许多语音任务(如自动语音识别和翻译、基于听觉信息的问答、情感识别等)中取得Sota的表现。

同时SALMONN还表现出一定的语音层面智能涌现能力。

比如训练中只见过中英翻译,但是推理时可以完成中德、中日等语系的同声传译;

比如基于某个电影的背景音乐讲故事,以及基于音乐/语音的电影内容推理等;

二、模型结构

www.zeeklog.com - ICLR 2024|端到端语音大模型 - SALMONN 字节

根LLM大模型类似,包含Audio Tokenizer模块,Transformer主体,映射模块。前两个模块都是采用Pretrain模型(Freeze参数),映射模块是可以被训练的。

01

Audio Tokenizer模块

包含Whisper Encoder模块和Beats Encoder模块

Whisper Encoder:基于大量弱监督数据,进行语音识别和不同语言翻译训练得到的,其编码器输出特征适用于对语音特征的建模。

Beats Encoder:输入音频首先进行Tokenizer,然后在训练中进行掩码和预测,即自监督学习来提取高级“非人类语音”音频语义信息(Eg:遮盖掉音乐中的一部分音符,AI自监督学习补充这些被去掉的元素)。

这两个特征提取器,共同可以得到Speech and non-speech information。

www.zeeklog.com - ICLR 2024|端到端语音大模型 - SALMONN 字节

02

Transformer主体

采用预训练的Vicuna LLM(Vicuna LLM是在llama LLM开源大模型finetune得到的SFT Model)。

03

映射模块

包含对齐Window-level Q-Former以及LoRA模块

其中Window-level Q-Former 负责处理Audio Tokenizer的特征,对于具有可变长度的一般音频输入 Z,通过将 Z 分割为大小L的窗口并用零填充最后一个窗口。SALMONN 在窗口级别使用 Q-Former,就好像每个大小为L的窗口中,输出一帧固定大小的图像特征,从而得到整个Audio的标记序列H。

LoRA 是一种广泛用于大语言模型适配的高效参数微调方法,在 SALMONN 中用于调整 Vicuna 自注意力层中的Query/Value。

三、训练方式

一共分为三个训练阶段:

1.

www.zeeklog.com - ICLR 2024|端到端语音大模型 - SALMONN 字节

Pre-training Stage:

任务比较简单,学习语音转文本这种不需要太多推理的任务

2.

www.zeeklog.com - ICLR 2024|端到端语音大模型 - SALMONN 字节

Instruction Tuning Stage:

指令提示的素材,是根据audio-text pair对进行人工生成的(可以是一些复杂的提问,比如基于音乐的故事描述,基于某个电影音频的逻辑推理等)

3.

www.zeeklog.com - ICLR 2024|端到端语音大模型 - SALMONN 字节

Activation Tuning Stage:

由于第二阶段训练时,Instruction往往过于简单(不像训练LLM,学术&工业界已经有超多高质量Instruction),这会让模型丧失泛化能力。即只能解决第二阶段监督学习的任务,而不能泛化到其他任务上,没有智能涌现的能力。论文提出了一种对LoRA Scaling Factor做正则化的方法,对该Scaling Factor做一定程度裁剪,可以缓解第二阶段训练的过拟合

其中 Q-Former 和 LoRA 为模型训练参数更新层,共计33M参数,大约只占整个 SALMONN模型的0.24%,在消费级显卡上,也可以训练该模型。

www.zeeklog.com - ICLR 2024|端到端语音大模型 - SALMONN 字节

Stage1/2阶段,采用了几千小时的音频/音乐数据;

Stage3阶段,采用了很少的训练数据,该数据为经过人工撰写的,复杂的音乐-故事推理Pair对

四、实验结果

Eg:基于视频背景声的故事推理

www.zeeklog.com - ICLR 2024|端到端语音大模型 - SALMONN 字节

Eg:基于音乐的故事创作

www.zeeklog.com - ICLR 2024|端到端语音大模型 - SALMONN 字节

Read more

OpenClaw Java — 用 Java 全栈实现一个 AI Agent Gateway

项目简介 大家好,分享一下我最近在做的开源项目 OpenClaw Java —— 基于 Spring Boot 3.3 的 AI Agent Gateway 全栈实现,通过 WebSocket 自定义帧协议提供全功能 Agent 接口。 项目地址:https://github.com/yuenkang/openclaw-java 当前规模: 594 个 Java 源文件 + 17 个测试文件,约 88,500 行代码 为什么做这个项目? 目前 AI Agent 框架大多集中在 Python 和 TypeScript 生态,Java 社区相对缺少成熟的 Agent 运行时方案。

详解JDK的下载

详解JDK的下载

目录 JDK官网 Windows Ubantu 1.安装JDK 2.确定JDK版本 卸载OpenJDK Centos 1.下载JDK 2.安装JDK 3.验证JDK JDK官网 官网网址:Java Downloads | Oracle Windows 双击运⾏exe⽂件, 选择安装⽬录, 直⾄安装完成  Ubuntu 1.安装JDK 更新软件包 sudo apt update  安装JDK sudo apt install openjdk-17-jdk  Linux上安装的JDK为OpenJDK OpenJDK是Oracle JDK的开放源码版本, Oracle公司每次发布JDK新版本时, 会发布两个版本: ⼀个是Oracle JDK(加了⼀些Oracle公司商业技术)

【Java 学习】对象赋值的艺术:Java中clone方法的浅拷贝与深拷贝解析,教你如何在Java中实现完美复制

【Java 学习】对象赋值的艺术:Java中clone方法的浅拷贝与深拷贝解析,教你如何在Java中实现完美复制

💬 欢迎讨论:如对文章内容有疑问或见解,欢迎在评论区留言,我需要您的帮助! 👍 点赞、收藏与分享:如果这篇文章对您有所帮助,请不吝点赞、收藏或分享,谢谢您的支持! 🚀 传播技术之美:期待您将这篇文章推荐给更多对需要学习Java语言、低代码开发感兴趣的朋友,让我们共同学习、成长! # 1. 什么是自定义类型的赋值? 什么是赋值呢? ```java // 创建一个变量a,值为10int a =10;// 把a的值赋值给bint b = a;// 他们两个的值一样System.out.println("a: "+a);System.out.println("b: "+ b); int是Java中的内置类型,我们自己创建的自定义类型(类)可以赋值吗? 同学们看一下,判断这是我们自定义类型的赋值吗? classStudent{publicString name;publicint