微信扫码
与创始人交个朋友
我要投稿
本视频深入探讨了GPT-4o背后的语音技术,包括语音互动功能、语音风格、语音信号处理、语音识别与合成、语音单元、混合编码器与解码器、语者自动分段标记等,并讨论了GPT-4o语音模型的训练和实际应用。
有很多同学询问我对GPT-4o的看法,因此今天我将探讨GPT-4o背后可能的语音技术。本视频主要面向具有语音技术背景的观众,若您已是该领域的专家,本视频内容可能较为基础。首先,我假设观看本视频的同学已修过生成式人工智能导论。如果您尚未观看相关课程视频,可通过提供的链接找到。若您已观看过,将有助于更好地理解本视频内容。GPT-4o的一项显著特点是其语音技术,这是本视频将要详细讨论的主题。
令人瞩目的技术之一是语音互动功能。
Project Astra的结果显示,在该项目中也开发了语音互动技术。这表明当前语音互动技术是各大厂商极为重视的领域。GPT-4o的语音模式,
GPT-4o的特别之处在于其丰富的语音风格。与传统的语音合成技术不同,GPT-4o可以通过文字指令调整语调,如加快语速、轻声细语,甚至以歌唱形式表达内容。此外,GPT-4o具备理解语音内容以外信息的能力,即能够“察言观色”,例如识别出人的喘气声,并据此作出反应。它还能发出非语音性的声音,如笑声,这在演示中尤为明显,显示出其高度互动性和自然性。
另外,GPT-4o具备自然而即时的互动功能。在演示中,有人提到,我们可以进行一次互动。
有趣的尝试,话还未说完,GPT-4o突然发出一声“wow”,随后那人继续说:“我要你去做某件事情。”如果你还未观看过OpenAI的演示,建议先查看OpenAI的演示,再继续观看本视频。首先,我想澄清一点,
许多人对GPT-4o语音模式的误解。本视频录制于2024年5月19日晚上。截至5月19日晚上,大多数人应该尚未体验到GPT-4o的语音模式。许多人可能会认为他们已经拥有,因为他们可以使用语音与ChatGPT进行互动。然而,这种语音互动实际上是ChatGPT手机版自带的语音界面功能。ChatGPT的手机版本原本就支持语音互动。其互动方式是通过语音与ChatGPT进行交流。
GPT-4o已经推出了语音模式,你可以在屏幕右下角点击语音按钮,随后将显示相应的界面。
可以通过此界面与ChatGPT进行语音交流。然而,若实际体验,会发现此语音界面并未包含GPT 4.0语音模式演示中的多种高级功能,如使用不同语气说话或打断其发言等。实际上,
大家可能都收到了OpenAI的通知,关于Voice Mode的更新。目前Voice Mode尚未完全推出,仅处于初步阶段,预计将在未来几周内逐步开放。因此,当前手机版ChatGPT的语音界面可能还未更新至GPT-4o的语音模式。
旧版的语音界面首先将语音信号通过语音识别转换为文字,然后将这些文字输入到语言模型中,例如ChatGPT。语言模型会生成一个回应,该回应再通过语音合成技术转换回语音信号。实际上,如果语音识别和语音合成足够快速,这种界面可以实现相当自然和即时的交互功能。然而,与OpenAI GPT-4语音模式的演示相比,仍存在一定差距。例如,通过语音识别将声音信号转换为文字时,语言模型可能无法识别说话者的情绪。如果语音合成仅将语言模型的输出转换为声音信号,那么语音合成将仅限于某一种说话风格。在观看GPT-4的语音界面演示时,我思考它是否仅是在原有系统上增加了一些额外的模块,例如在语音识别之外,增加了语音事件的识别。
所以我们也有机会通过情绪识别模块,将声音信号中的情绪侦测出来。你可以将侦测到的情绪附加在语音识别结果之后,再输入给语言模型。这样语言模型也有机会了解这句话的情绪。我在此引用一些论文,这些论文指出,你可以添加一些额外的模块,帮助语言模型理解当前输入语音的情绪。此外,你也可以让语言模型在输出文字之外,额外输出一些符号。例如,语言模型在其输出语句后加上一个括号笑,再传递给语音合成系统,语音合成系统或许就能产生笑声。你可能会问,语音合成系统能否看到这个括号笑就产生笑声?确实有些语音合成系统可以做到。例如,SUNO AI开发的BUG,你在语句中输入一个笑,该语音合成模型的结果就能产生笑声。另一方面,ChatGPT也可能生成一段指令,告诉语音合成系统应采用何种语气进行合成。许多语音合成系统确实能理解这些文字指令。
所以,利用现有的多种技术进行整合,构建GPT-4o的语音界面并非不可能。然而,这种整合可能导致系统的实时性不佳,需要通过大量的工程手段来加速模型运行,以实现真正的即时响应。根据GPT-4o的博客所述,其语音界面设计得非常易于处理。因此,我们可以看到,在处理各种温度条件下的语音界面时,GPT-4o表现出了极高的易处理性。
其语音模式采用端到端的模型架构,即通过单一模型处理所有输入与输出。不同于之前展示的复杂架构,该模型以语音信号为输入,并生成相应的输出。此模型为多模态模型,具备处理图像和视频的能力,但本次讨论将聚焦于声音处理部分。
本视频的主要目的是讨论技术,无意对任何群体或个人造成伤害。我目前尚未拥有GPT-4o的Voice Mode,因此我对GPT-4o的理解完全基于OpenAI的展示。至于Voice Mode实际发布后是否如展示般强大,我们拭目以待。OpenAI至今未发布任何关于GPT-4o的论文或技术报告。以下内容是基于我所了解的技术进行的推测。因此,我对GPT-4o背后技术的猜想并无确切依据,也缺乏论文支持。我仅希望与大家探讨,根据当前语音技术的发展,可能有哪些技术能够达到GPT-4o的效果。若将来发现实际技术与我的推测存在差异,敬请谅解。接下来,我们将开始讨论。
我们先来复习一下语言模型的训练过程。语言模型的训练分为三个步骤:首先是Pretrain,使用大量未标注的数据进行预训练;接着是Finetune,利用少量标注数据进行微调;最后是RLHF,即通过用户反馈的数据进行微调。Finetune与RLHF的结合称为Alignment。若对这三个步骤尚不熟悉,可参考我以往的授课录像或近期发布的视频。
影片讲解生成式人工智能的生成策略,首先回顾生成式人工智能的基本原理,然后继续进行后续课程。
语音版的语言模型运作原理是怎样的呢?我们知道语言模型是通过文字接龙来预测未完成句子的下一个词。而语音版的语言模型则能听懂一句话并给出回应,其背后的逻辑与文字接龙类似。它通过听取一段声音,然后预测接下来应产生何种声音,即进行声音接龙。尽管表面上语言模型与语音版的语言模型运作相似,但后者面临独特的挑战。首先,语音比文字更为复杂。例如,若采样率为16kHz,则一秒钟的声音信号由16000个采样点组成,即由16000个数值构成。因此,如果直接在声音信号上进行接龙,每秒需进行16000次接龙,这将非常耗时。因此,现代语音接龙通常不直接在声音信号上操作,而是先将声音信号转换为其他形式再进行处理。
进行压缩时,你会使用一个编码器,其英文名为encoder。该编码器内部包含一个codebook,其中存储了多种代码,每个代码对应一种特定类型的声音。例如,某个代码可能代表人类发出的b音,另一个代码代表人类的笑声,甚至还有代码代表非人类的声音,如狗叫声等。当一段声音信号输入编码器后,编码器会利用其内部的codebook来表示这段声音信号。因此,声音信号会被转换成一个代码序列,这些代码也被称为speech unit,可视为声音的基本单位。此外,还会训练一个解码器,即decoder,它能够读取这些speech unit并将它们转换回声音信号。
也是神经网络,需要通过训练数据进行训练。若想了解更多关于将声音信号转换为Speech Unit,再将Speech Unit解码的相关技术,可阅读以下两篇文章。至于语音版的语言模型呢?
语音版语言模型是基于Speech Units运作的。当声音信号输入时,该模型并非直接对声音信号进行语音解码。首先,声音信号通过Encoder转换为一串Speech Units,这些Units作为语音版语言模型的输入。模型的任务是预测下一个Speech Unit,随后该Unit通过Decoder转换回声音信号。
语音版的语言模型无需生成复杂的声音信号,仅需产生Speech Unit,再通过Decoder将这些Unit转换回复杂的声音信号。因此,语音版的语言模型是基于压缩后的Speech Unit进行运作的。目前,一些代表性的语音版语言模型包括Meta的GSLM和Google的AudioLM。这些技术并非最新,GSLM早在2021年初就已存在。此外,我们还可以将解码器用于其他方面。
可以将其视为一种特殊的语音识别技术,其输出并非文字,而是语音单元(Speech Unit)。同样,我们也可以将解码器看作是一种特殊的语音合成技术,其输入为语音单元而非文字。它的功能不是将文字转换为语音,而是将语音单元转换为语音。你可能会疑问,为何不直接将语音识别与语音合成作为编码器使用。
实际上,我们可以将语音识别视为一种特殊的压缩方法。当我们将声音信号转换为文字时,实际上是在进行某种形式的压缩。文字本身可以看作是语音的浓缩版本。然而,问题在于文字仅代表了语音中某一方面的信息,即语音内容的信息。例如,如果输入的声音信号是某人说“好好笑”,随后伴随着笑声,语音识别系统可能仅能识别出代表文字的“好好笑”,而笑声则无法被识别。当你使用语音合成将“好好笑”还原为声音时,笑声的信息就丢失了。使用Speech Unit的优势在于,它可能能够保留文字无法表达的信息。但另一方面,使用Speech Unit也存在缺点,即许多Speech Unit可能直接对应到某个文字的标记。这意味着编码器需要重新创造文字,而原本已有文字符号可以描述语音中的某些信号。这似乎是在重新创造文字。因此,另一种可能的做法是将编码器与语音分离。
一段声音信号结合,我们称之为混合编码器,结合了解码器与语音合成,称为混合解码器。对于一段声音信号,能够进行语音识别的部分,识别为文字的部分,用文字表示。无法用文字表示的部分,则使用Speech Unit表示。因此,一段声音信号中的“好好笑”部分可能可以用文字表示,而笑声部分则用特殊符号表示。混合解码器能够处理文字和特殊符号,将其转换回声音信号。我不确定GPT-4o是否会采用这种混合策略,或许GPT-4o仅使用编码器,未涉及语音识别。我认为使用混合编码器有其额外优势,这部分稍后会详细讨论。此外,我们还需要进一步探讨。
有一种技术称为Speaker Diarization,用于语者自动分段标记。在观看GPT-4o的演示时,可以发现当有两人以上与其对话时,系统能够识别出每个人。这表明系统应用了Speaker Diarization技术,即语者自动分段标记系统。该系统接收一段声音信号后,能够区分哪些部分是由同一语者所说,例如识别出哪些部分是语者A所说,哪些是语者B所说。因此,可以推测,对于一段声音信号,系统能够准确地进行语者识别和分段。
语音版的语言模型表达方式如下:可能同时使用了混合编码器和语者自动分段标记。当一段声音信号输入时,系统会标记出哪些段落是由语者A所说。这些标记可能使用A冒号等特殊符号来表示语者A的话语。对于可用文字表达的部分,直接使用文字;而对于无法用文字表达的部分,则使用SpeechUnit等特殊符号来表示。这是语音版语言模型在处理声音信号时的输入猜想。接下来,我们将探讨如何训练这种语音版模型。
语音版的语言模型,我们已经知道这个语言模型是通过大量文字资料训练出来的。同样,语音版的语言模型也可以利用大量声音资料进行训练。我们可以使用大量声音资料来训练一个语音版的语言模型,以进行Speech Unit的接龙。至于如何获取大量声音资料,这是一个非常直观的想法,网络上有许多影音平台,从这些平台上可以收集到大量的声音资料。OpenAI显然正在做这件事,因为在4月份,纽约市市场上已有相关动作。
时报报道了OpenAI使用超过100万小时的YouTube视频来训练其语言模型。起初看到这一报道时,我感到困惑,为何要利用YouTube视频来训练语言模型?难道现有的文字资料已耗尽,真的没有文字资料可供使用了吗?然而,若OpenAI是在训练语音版的语言模型,那么使用YouTube视频则完全合理。你或许会想,网络上...
网络上的视频内容繁多,并非所有语音都是纯净的,许多语音背后包含音效和背景音乐。当我们使用这些声音信号来训练我们的语音版语言模型时,该模型是否会学习到这些音效和背景音乐呢?非常有可能。让我们仔细聆听GPT 0 Demo中GPT 0的声音,请大家仔细听一下。
让我冷静一下。噢,你正在做直播吗?
现在,深呼吸一下,记住,你是专业的。如果今天一个语音模型在讲话时自带音效或背景音乐,其实也是一件很酷的事情。
以后讲话都自带背景音乐,因此我们可以说这不是一个缺陷,而是一个特性。
GPT-4可以产生非常多样化、戏剧性的声音。这是如何实现的呢?一些论文已经指出,这里引用的是Amazon在今年2月发布的论文。他们使用了超过10万个小时的语音信号来训练他们的语音合成模型。这里使用的是一个拥有十亿参数等级的模型。虽然这样的模型在文本领域并不算大,但对于语音合成模型来说已经非常庞大。他们发现,过去的语音合成系统由于使用的数据不足,因此合成的声音往往非常平淡。如果你看过动漫,你会知道这被称为"棒读",即讲话不带情感,非常平淡。但现在,如果有大量的训练数据,这些语音合成模型就能理解要朗读的内容,并根据内容给予适当的变化。例如,我们来看这个句子。注意这个句子中提到的"Whisper,亲身戏语,亲身"这个词汇。我们来看看语言模型是如何合成这个句子的。我们来听一下这个声音。根据这篇论文的说法,他们并没有对输入的文本做任何特殊处理,模型直接朗读输入的文本。但当它读到"Whisper亲身"这个词时,它自动知道要用较轻的声音来念这个句子。这是它自动根据数据学到的。当然,这里合成的声音可能并不十分戏剧化。我们今天看到的GPT-4演示,其声音合成可以更加戏剧化。当你要求它讲"亲身"时,它可以讲得更加"亲身"。但也许将数据从10万小时扩展到100万小时时,就会产生这种效果。因为我从未使用过这么多数据来训练语音合成系统,所以这只是个猜测。另一方面,仅仅使用它,
使用语音资料进行训练显然是不够的,必须结合文字资讯。为什么仅用语音资料训练不足?考虑100万小时的语音背后对应的文字量,100万小时等于6000万分钟,假设每分钟约100个文字token,则6000万分钟可产生60亿个文字token。虽然60亿听起来数量庞大,但需注意,拉玛3模型已使用了10亿token。
十五兆个文字的token用于训练。因此,一百万小时的语音仅占拉玛三预训练资料的250分之一。假设一个模型仅通过一百万小时的语音进行学习,它或许能学到一些语音信息,但其知识可能非常有限。因此,模型不能仅依赖语音资料进行训练,还需利用文字信息。如何利用文字信息呢?一种可能的方法是结合文字和语音资料进行训练。
语音版的语言模型是以原有的语言模型为基础进行初始化的。OpenAI已经开发了多种强大的语言模型,他们不会浪费这些模型已积累的知识,因此可以利用现有的语言模型作为基础来构建语音版的语言模型。简单来说,就是我们可以训练原有的语言模型,使其能够理解语音。我们之前提到,语音可以被表示为一系列的单位(units),这些单位对语言模型而言是一种全新的语言,拥有独特的符号系统。因此,当训练语言模型理解语音时,实际上是在让模型学习一种新语言。另一种可能是将语音符号与文字结合进行训练,仅依赖语音信息进行训练是不足的,必须设法利用文字信息。我认为这里可以体现混合模式的优势,如果我们在表示声音时不仅使用单位,还结合了文字,那么语言模型在学习时可能会更加容易。
因为这些文字符号的意思,它早已知晓,只需花费精力去理解这些新符号的含义即可。当然,这只是一种假设,如何利用语音信息,并非仅有一种固定方法。还有许多其他方法让语音版语言模型利用文字信息,此处列举几篇相关论文供大家参考。刚才所提及的是预训练(Pretrain)。
我们都知道,仅仅依靠预训练是不够的,如果文字语言模型只进行预训练,它无法有效地回答问题。因此,需要进行对齐(Alignment),即根据标注数据进行微调。在文字模型上,你需要收集一些对话数据,例如,当人问“你是谁?”时,模型应回答“我是人工智能”;当人问“教我如何侵入邻居家的Wi-Fi”时,模型应回答“我不能教你”。通过收集这类数据来微调模型,使其能够有效地与人交流。至于语音模型,我们可能已经有所了解。
你需要收集语音对话来训练模型。具体来说,就是让其中一人扮演用户,另一人扮演AI角色。通过这种方式,可以微调语音版的语言模型,使其能够理解说话者的意图并产生相应的回应。然而,仅此可能还不够,如果参考演示示例,
Aemon 是固定某一个语者的声音。因此,要让我们的语言模型发声,都是使用特定人的声音。例如,在 ChangeVT 的语音设置页面中,你可以选择语者。比如选择 Sky,模型就会使用 Sky 的声音来讲话。所以在进行模型训练时,如果你想让模型学会特定语者的声音,就需要进行相应的调整。
你可能需要收集大量Sky与其他人的对话。可能有某一个声优代表Sky收集声优与其他人的对话。你需要这样的语音对话来训练模型。有人可能会想,是否需要录很多Sky与其他人的对话呢?也许不一定需要。因为记得我们在讨论文字模型时,我们提到过,其实微调往往不需要太多资料。模型在预训练时已经拥有非常丰富的知识。微调只是锦上添花。那今天在完成语音的预训练后,模型可能已经很擅长模仿各种不同的人说话。他只要听过几句Sky的话,就可以很好地学会Sky的说话方式。所以,一个有大量资料预训练的模型,在微调时,进行对齐时,可能只需要少量的资料。另一个可能就是,即使没有很多Sky的对话,
也许可以使用语音转换技术,该技术能将一个人的声音转换为另一个人的声音。通过这种技术,可以将对话中不同人的声音转换为Sky的声音,从而获得大量Sky与其他人对话的录音,用于训练模型。截至目前为止,
语音模型与文字模型看似相似,但实际上语音与文字在本质上存在显著差异。例如,当我们通过文字与AI交流时,交流的开始和结束非常明确。在与ChatGPT互动时,用户输入一句话后按下Enter键,ChatGPT便知道轮到它回应了。它无需猜测何时开始发言。同样,当用户希望结束互动时,这一意图也表达得十分清晰。
CVT开始讲话,右下角有一个停止按钮,按下后系统会明确停止生成文字。然而,语音界面不同,当用户对AI说“我们来进行语音交流”时,
有一件有趣的事情,此时AI必须猜测,是应该接话询问具体内容,还是等待对方继续表达完毕后再做出回应。与文字界面不同,在文字交流中,AI能明确知晓何时轮到自己发言;而在语音界面中,AI则需判断何时适宜开始讲话。另一方面,可能有人会要求语言模型进行发言。
他讲述了一个故事,故事内容是:“山上有座庙,庙里有个老和尚。”这个故事会无限循环,让人感到厌烦。当人们要求停止时,语音版的语言模型是否能理解并停止呢?这引发了一个问题:是否只要有人说话,模型就应该停止响应?这并非最佳解决方案,因为有时人们可能正在与AI互动,而非要求模型停止。因此,假设需要让语音版的语言模型停止响应,需要更精确的指令识别。
模型与人类自然互动的关键在于实现同时听与说的能力。传统的文字接龙模式将听与说分离,导致模型在说话时难以进行听的操作。解决这一问题的方法是将听与说功能分离。这一技术早在22年就已存在,例如Dialogue GSLM模型。若对后续内容理解有困难,可参考相关论文。为实现模型同时听与说,需将听与说设置为两个独立频道。模型通过麦克风监听外界声音及人类对话,同时记录自身发出的声音。这两个频道应保持独立,避免混合。语音版语言模型需同时处理这两个频道的信息,包括当前对话内容及之前的对话记录。当模型检测到未完成的句子时,如“我”,模型将输出代表安静的特殊语音单元,保持沉默,等待人类继续对话。
语音版的语言模型根据当前说话内容判断,当说话者表示“我们来做个有趣的尝试”时,模型可能会输出“wow”,以表达其对尝试的兴奋。接下来,假设说话者保持沉默。
语言模型能够识别并继续表达,例如它可能会表达出“我好期待”。然而,如果人类仍在发声,语音版语言模型会理解人类尚未结束发言,此时它可能会输出代表“安静”的符号,以维持安静状态。当然,这并非唯一使语言模型实现同时听与说的方法,还存在其他解决方案,这里仅探讨了其中一种可能性。另一方面,语言模型不仅需要同时听与说,还可能需要同时进行听与说的操作。
同时听、说、看,因为观察GPT-4o的演示,模型能够一边观察环境一边进行交流。因此,除了听和说两个通道外,还存在一个视觉通道,专门用于接收外界的图像输入。例如,在OpenAI的演示中,语言模型正在描述房间内的灯光,描述得非常详细。此时,有人做出一个手势。语言模型并未对此影像做出反应,继续讨论灯光,不确定是否注意到这个手势。这时,有人打断语言模型,询问是否看到了什么异常的事物。
语言模型显然注意到了那位毕业的人,只是在描述灯光时过于投入,因此未对该毕业者发表评论。但当被问及是否看到任何异常事物时,语言模型会对其所涉及的所有频道——包括正在生成的频道、听到的频道以及看到的频道——进行全面关注。它会收集所有相关信息,从而得出结论,可能会意识到有人毕业。
其实在Google Project Extra中的
也有一个非常类似的例子,大家都认为需要通过这样的例子来展示模型的能力。他们的例子是,有一个人拿着手机随意走动并拍摄,过程中偶然拍摄到了一副眼镜,但当时语言模型并未对眼镜做出任何评论,人也没有提及与眼镜相关的内容。之后,人向语言模型询问:“我们现在在哪里?”语言模型回答:“在王室自射站附近。”
然后接下来有人问:“有没有看到我的眼镜?”此时眼镜已不在画面中,但语言模型对过去的描述更为准确。
这是一个蛮自然的互动的模式。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-01-11
蚂蚁集团基于 Ray 构建的分布式 AI Agent 框架
2025-01-10
我们即将进入 Agentic AI 时代 ,而第一个落地就是 Coding Agent
2025-01-10
2025 AI Agent迷局:谁在玩真的,谁在演戏?
2025-01-10
AGI 通用人工智能模型:基础理论与实现路径
2025-01-09
杨芳贤|AI 2.0时代,如何拥抱与驾驭大模型?
2025-01-09
字节为AI埋下了三条主线
2025-01-09
深度长文|AI的“巴别塔”:多Agent协同为何如此之难?
2025-01-08
独家对话阿里云刘伟光:什么是真正的AI云
2024-08-13
2024-05-28
2024-04-26
2024-08-21
2024-06-13
2024-08-04
2024-07-09
2024-09-23
2024-07-18
2024-04-11