语音语言模型最新综述! 关于GPT-4o背后技术的尝试

近期,大型语言模型(LLMs)在生成文本和执行各种自然语言处理任务方面展现出了卓越的能力,成为了强大的AI驱动语言理解和生成的基础模型。然而,仅依赖于基于文本模态的模型存在显著局限性。这促使了基于语音的生成模型的发展,使其能够更自然、直观地与人类互动。

为了实现语音交互,OpenAI前阵子发布的GPT-4o,它可以直接与用户进行低时延,高质量语音对话,并具有多种不同的能力,如对说话人的识别,语音情感的识别,甚至是生成特定风格的语音,如唱歌。语音语言模型 (SpeechLMs)正是朝着这个方向的一种尝试,近期也成为了研究热点。本文是对SpeechLMs研究的一篇全面综述。

  论文链接:https://arxiv.org/abs/2410.03751

Motivation 

由于基于文本的大语言模型的成功,一般的语音交互方案通常采用"自动语音识别(ASR) +大型语言模型(LLM) +文本到语音合成(TTS)"的级联式架构。这种方法需要将语音信号转换为文本,并通过LLM基于文本进行回答,最后再将回答的语音进行生成。然而,这种方法存在两大主要的局限性:

  1. 整个流程是基于文本语言模型的,所以首先需要将音频转换为文本再进行处理。这种方式会丢失掉很多包含在音频中但不包含在文本中的信息,导致了音频信息的部分丢失。

  2. 整个流程是将三个独立的模块拼接在一起的,因此三个阶段在处理时候的错误会进行累积。

图片

为了解决这些问题,SpeechLMs作为一种端到端的语音交互模型应运而生,它无需将语音转换为文本就能直接生成语音输出。SpeechLMs不仅可以执行传统的ASR、TTS任务,还能直接进行端到端的语音对话,以及实现更多复杂的功能,如编码说话人的音色信息和语音情感的细微差别。

那么,什么是SpeechLM呢?SpeechLM是一种自回归的基础模型(foundation model),能够处理和生成语音数据,利用上下文理解来生成连贯的序列。它通常支持语音,或语音和文本两个模态,如语音输入文本输出、文本输入语音输出或语音输入语音输出。这使其可以进行广泛的任务和具有上下文感知的能力。

以下是SpeechLMs的分类框架:

SpeechLM的组成部分 

SpeechLM主要由三个核心组件构成:

  1. 语音分词器(Speech Tokenizer):将连续的音频信号编码为离散的token。

  2. 语言模型(Language Model):对语音token进行自回归建模。

  3. Token到语音合成器(Vocoder):将生成的token合成为语音波形。

 

具体来说,SpeechLM在工作时,会先将输入的音频信号通过语音分词器处理成离散的token,再通过语言模型对这些语音token进行自回归建模,生成后续的语音token。最后,这些由语言模型生成出的语音token会经过语音合成器,再恢复成语音。

接下来让我们详细了解这三个组件:

  • 语音分词器:语音分词器的核心目标是如何有效的将语音信号通过离散的token进行表示。这些token需要包含语音里面的多种信息。语音分词器的设计遵循有三类目标 - 语义理解、声学生成和混合目标。

    • 语义理解型分词器,如HuBERT,专注于捕捉语音内容和含义。

    • 声学生成型分词器,如SoundStream,侧重保留生成高质量语音所需的声学特征。

    • 混合型分词器,如SpeechTokenizer,则平衡了语义理解和声学生成。

  • 语言模型大多采用Transformer或Decoder-Only架构,如OPT、LLaMA等。它们以自回归方式生成语音。SpeechLM中的语言模型通常可以将语音和文本的词表进行拼接,从而联合建模文本和语音模态。

  • 语音合成器:主要有GAN-based、Flow-based等多种类型。GAN-based如HiFi-GAN,是在SpeechLM中最为广泛使用的一类vocoder,因为其以快速且高保真的生成而著称。

SpeechLM的训练配方 

在训练方面,SpeechLMs的"配方"包括:

建模特征:这里表示的是SpeechLM的语言模型在训练时选择使用哪一类特征进行建模。一般可分为离散特征和连续特征。

  • 离散特征:这是最主要的SpeechLM所建模的特征,一般以token形式存在。这里一般主要包含语义token,副语言学(paralinguistic)token,和声学token。

    • 语义token:主要包含了语音里面语义信息。

    • 副语言学token:主要包含了语音里面出语义信息以外的信息,如音高,韵律等。

    • 声学token:主要包含语音信号中的声学信息。这些信息有助于将token恢复出高质量高保真语音。

  • 连续特征:当然也有极少部分SpeechLM选择对连续信号进行建模,如梅尔谱(mel-spectrogram)

训练阶段:包括语言模型预训练和指令微调两个主要阶段。

  • 语言模型预训练:此阶段主要关注如何让SpeechLM中的语言模型有效学习到语音token之间的上下文关系,从而让模型能够输出上下文相关的且连贯的语音。此阶段可以选择使用随机初始化的参数开始训练,但研究人员一般会更愿意选择基于文本训练好的LLM checkpoint进行继续预训练。研究人员发现采用文本预训练的checkpoint继续预训练使得SpeechLM效果更好,且能够更快拟合。

  • 语言模型指令微调:此阶段主要关注让SpeechLM中的语音模型能够有效的进行指令跟随,从而更好的与人类对话或回答人类提出的问题。

语音生成范式:除传统生成方式外,还包括实时交互和静默模式等高级语音交互技能。

  • 实时交互:一般的语言模型在交互时遵循回合制(turn-based),即每一轮的输入输出需要等上一轮的输入输出结束后才能进行。然而,这并不符合人类说话(语音交互)的范式。人类语音交互时,通常可以不等待上一个人说话结束后就会说话,或者在他人说话时自己同时开始说。这催生了SpeechLM的实时交互模式的探索。

  • 静默模式:静默模式指的是当模型识别到,当人类没有与其对话的时候(如在和其他人对话时),选择不进行回应的能力。

下游任务与能力 

SpeechLMs能够执行多种下游任务,大致可分为三类:

  1. 语义相关应用:如口语对话、语音翻译、自动语音识别等;

  2. 说话人相关应用:如说话人识别、验证、分离等。此能力可以让SpeechLM分辨出多个说话人,从而可以处理更加复杂的场景,如在参与会议并与多人同时进行讨论;

  3. 语音学应用:如情感识别、语音分离、增强语音学生成等。此能力能使得SpeechLM识别并生成带有特定风格的语音,如使用不同情感说话,甚至是唱歌。

评 估 

在评估方面,SpeechLMs采用自动(客观)评估和人工(主观)评估两种方法。

  • 自动(客观)评估:通过自动化指标来评判SpeechLM的好坏。自动评估通常从多个角度去衡量SpeechLM的性能:

    • 特征评估:衡量SpeechLM所输出的特征;

    • 语言学评估:衡量SpeechLM对于词法,句法,语义的理解与生成;

    • 副语言学评估:衡量SpeechLM对于副语言学特征的理解与生成质量。

  • 人工(主观)评估:通过人工评估来评判SpeechLM的好坏。人工评估主要依赖平均意见得分(MOS)。

未来研究方向 

尽管SpeechLMs展现出令人印象深刻的能力,但这一领域的研究仍处于起步阶段。未来的研究方向包括:

  1. 深入理解不同组件(语音分词器,语言模型,语音合成器)选择的优劣;

  2. 探索端到端训练方法:当前的SpeechLM在训练时通常会选择分开对三个组件训练,而将三个组件合在一起进行端到端训练的策略值得研究;

  3. 继续增强SpeechLM的实时语音生成能力;

  4. 解决SpeechLMs中的安全风险:语音生成模型中同时有与文本生成模型相似的和独立的安全风险。例如,SpeechLM可能会生成有毒性的文本(制作炸弹的教学),不合规的语音(如色情语音),和对说话人的偏见(对不同口音的语音输入产生不同的输出)。因此,解决SpeechLM中的安全风险至关重要;

  5. 提升在稀有语言上的表现:对于稀有语言(小语种)来说,通常在互联网上能够获取到的文本资料很少,但语音数据却相对较多。因此,研究者可以关注如何提升SpeechLM在稀有语言上的表现。

总结 

SpeechLMs作为一种新兴的语音交互技术,展现出了巨大的潜力。它不仅能够克服传统ASR+LLM+TTS方案的局限性,还能实现更自然、更丰富的人机语音交互。随着研究的深入,我们有理由相信SpeechLMs将在未来的AI语音交互中扮演越来越重要的角色。

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

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

相关文章

在银河麒麟系统中Qt连接达梦数据库

解决在银河麒麟系统中使用Qt连接达梦数据库提示:project Error library odbc is not defined问题 一、编译ODBC 下载解压unixODBC(http://www.unixodbc.org/unixODBC-2.3.1.tar.gz) 打开终端,切换到unixODBC-2.3.1目录下&#x…

Python 异步编程:使用 `asyncio.to_thread` 和 `asyncio.Queue` 处理任务队列

Python 异步编程:使用 asyncio.to_thread 和 asyncio.Queue 处理任务队列 1. 什么是 asyncio.to_thread?2. 什么是 asyncio.Queue?3. 示例代码:使用 asyncio.to_thread 和 asyncio.Queue 处理任务队列示例代码代码解释运行结果 4.…

海螺 2.27.1 |AI生成视频 AI音乐 语音通话

嗨!我是小海螺,你的AI智能伙伴,帮助你学习工作效率加倍!我无所不知,又像朋友陪你左右,遇到问题,就问我吧。我所使用的技术,是MiniMax公司自研的万亿参数MoE大模型。我们希望能与用户…

【北京迅为】itop-龙芯2k1000开发指南Linux基础入门vim 编辑器

【北京迅为】itop-龙芯2k1000开发指南Linux基础入门vim 编辑器 龙芯2K1000处理器集成2个64位GS264处理器核,主频1GHz,以及各种系统IO接口,集高性能与高配置于一身。支持4G模块、GPS模块、千兆以太网、16GB固态硬盘、双路UART、四路USB、WIFI蓝…

Ubuntu22.04 更换源

Ubuntu22.04 更换网易163源 1、编辑/etc/apt/sources.list文件 1 sudo nano /etc/apt/sources.list 2、清空文件内容,拷贝下列163源到文本。 1 2 3 4 5 6 7 8 deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse deb http://mirro…

http 请求返回307

错误的原因 发现发生临时重定向的原因是我在具体的 url 后面少加了一个 / /xxx 这个发生了临时重定向请求/xxx/ 这个请求不会 可能是因为我请求的服务器对最终请求是否添加 / 有特殊的处理,在开发中,最好由对接方实际的url请求值 HTTP 状态码 307 Temporary Redirect 是一种临时…

沈阳乐晟睿浩科技有限公司抖音小店领域的强者

在当今数字化浪潮的推动下,电子商务以其便捷性、高效性和广泛的覆盖面,成为了推动经济发展的新引擎。而抖音小店,作为短视频平台上的新兴电商形态,更是凭借其庞大的用户基础、精准的内容推送机制以及独特的购物体验,迅…

使用query-string库出现错误Module parse failed: Unexpected token

环境 node v12query-string 9.1.0 报错信息 Failed to compile../node_modules/query-string/base.js 350:14 Module parse failed: Unexpected token (350:14) File was processed with these loaders:* ./node_modules/babel-loader/lib/index.js You may need an additio…

【Multisim14.0正弦波>方波>三角波】2022-6-8

缘由有没有人会做啊Multisim14.0-其他-CSDN问答参考方波、三角波、正弦波信号产生 - 豆丁网

echarts给Y轴的不同轴线设置不同的颜色的样式

官方文档 option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [150, 230, 224, 218, 135, 147, 260],type: line,}] }; 效果: 需要添加参数markLine option {xAxis: {type: category,data: [M…

React四官方文档总结一UI与交互

代码下载 React官网已经都是函数式组件文档,没有类组件文档,但是还是支持类组件这种写法。 UI 描述 组件 组件 是 React 的核心概念之一,它们是构建用户界面(UI)的基础。React 允许你将标签、CSS 和 JavaScript 组…

一个简单的Http根据规则自动路由

在日常项目中,有时候会根据一些规则/标识进行Http路由匹配,下面我实现一个简单的Http根据systemCode自动路由; ControllerServicePropertiesProperties类Yaml 测试路由到baidu Controller import com.example.demo.service.GatewayRoutingS…

Windows安装PM2 注意事项与错误查改

Windows安装 1. 首先应确保 node 和 npm 已经安装: node -v #查看 node 版本 npm -v #查看 npm 版本注意有时候即使npm安装了,但并没有进行配置环境变量,后面会将如何配置。 2. 尝试安装pm2到全局路径 运行以下命令对 PM2 进行全局安装&a…

Mycat2安装配置

安装配置 安装 目前Mycat2下载地址已经不可访问,安装包可从参考资料[1]获取 下载后解压zip文件,将jar放在lib目录下 编辑配置文件 编辑conf文件夹下的prototypeDs.datasource.json 更改数据库相关信息 启动 windows环境下启动Mycat 以管理员身份运行…

查找算法和排序算法

文章目录 1.基本查找1.1需求一:1.2需求二: 2.二分查找3.分块查找3.1分块查找的扩展 4.冒泡排序5.选择排序6.插入排序7.快速排序(递归算法) 1.基本查找 在数组或集合中挨个元素查找需要的元素 1.1需求一: 需求:定义一个方法利用基本查找,查询某个元素是否存在 数据如下&#…

威胁 Windows 和 Linux 系统的新型跨平台勒索软件:Cicada3301

近年来,网络犯罪世界出现了新的、日益复杂的威胁,能够影响广泛的目标。 这一领域最令人担忧的新功能之一是Cicada3301勒索软件,最近由几位网络安全专家进行了分析。他们有机会采访了这一危险威胁背后的勒索软件团伙的成员。 Cicada3301的崛…

微信小程序中关闭默认的 `navigationBar`,并使用自定义的 `nav-bar` 组件

要在微信小程序中关闭默认的 navigationBar,并使用自定义的 nav-bar 组件,你可以按照以下步骤操作: 1. 关闭默认的 navigationBar 在你的页面的配置文件 *.json 中设置 navigationBar 为 false。你需要在页面的 JSON 配置文件中添加以下代码…

C#从零开始学习(用户界面)(unity Lab4)

这是书本中第四个unity Lab 在这次实验中,将学习如何搭建一个开始界面 分数系统 点击球,会增加分数 public void ClickOnBall(){Score;}在OneBallBehaviour类添加下列方法 void OnMouseDown(){GameController controller Camera.main.GetComponent<GameController>();…

纯血鸿蒙的未来前景

纯血鸿蒙作为华为推出的新一代操作系统&#xff0c;其未来的发展前景可以从多个方面进行分析。 从技术角度来看&#xff0c;纯血鸿蒙实现了全面的自主可控。它去除了传统的AOSP代码&#xff0c;仅支持鸿蒙内核和鸿蒙系统的应用&#xff0c;不再兼容安卓OS。这种技术上的独立性…

js纯操作dom版购物车(实现购物车功能)

代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title>&l…