📍GPT-Talker github:
https://github.com/walker-hyf/GPT-Talker
(或者 https://github.com/AI-S2-Lab/GPT-Talker)
📍NCSSD github: (包含数据处理Pipeline)
https://github.com/walker-hyf/NCSSD
(或者 https://github.com/AI-S2-Lab/NCSSD)
📍NCSSD Hugging Face:
https://huggingface.co/datasets/walkerhyf/NCSSD
📍论文地址:
https://arxiv.org/pdf/2407.21491
📍Demo地址:
https://walker-hyf.github.io/GPT-Talker/
0
Abstract
1
Introduction
对话语音合成(CSS)(或对话式文本转语音(TTS),CTTS)旨在在用户代理对话场景中生成具有适当风格的语音。在这样的场景中,用户通常发起对话,然后代理和用户轮流发言。在交互过程中,代理应该理解用户的需求,并提供帮助和情感支持。目前,随着智能设备的日益普及,在各种应用场景中对人类与机器交互的需求不断增长,例如智能手机助手[47]、智能家居控制[21]、智能车辆系统[15]以及虚拟现实/增强现实交互[13]。
先前的工作从上下文建模的角度出发,为增强合成对话语音的自然性和表现力进行了许多尝试。郭等人[17]提出了一种基于GRU的上下文编码器,用于从对话上下文中为代理提取全局韵律信息。FCTalker [19]进一步结合了单词和句子级别的上下文知识,代表了细粒度和粗粒度的上下文,以增强代理的上下文理解能力。然而,这些工作只考虑了文本信息,忽略了对话中的语音和多模态依赖关系。为此,研究人员为多模态上下文建模的研究做出了贡献[10, 35, 39, 40]。然而,他们越来越倾向于设计复杂的网络架构,并精心优化其中的模块。例如,多尺度多模态 CTTS(M2-CTTS)系统[53]包含一个文本上下文模块和一个声学上下文模块,同时进行粗粒度和细粒度的建模。李等人[28, 29]和刘等人[34]提出了基于图神经网络的上下文学习方案。
随着大型语言模型(LLM)的进步,一些研究旨在构建适用于语音领域的语言模型[23]。我们注意到,生成式预训练Transformer(GPT)具有简洁而强大的上下文建模能力[14],并且在诸如对话生成[58]和理解[32, 33, 56]等任务中,在捕捉细粒度和粗粒度的依赖关系方面表现出色。尽管取得了成功,但上述所有工作都不适用于CSS,因为CSS使用多模态上下文作为输入来生成响应语音。我们注意到,GPT的上下文建模与CSS的要求非常契合,但这一方面在很大程度上之前被忽视了。因此,如何利用GPT为人类与机器的交互构建简洁而强大的上下文理解解决方案,将是本研究的重点。
此外,现有的口语对话数据集在规模和质量方面都难以满足基于GPT的生成式情感 CSS 模型的训练要求。具体而言,M2-CTTS [53]、EmoSit-TTS [35] 和 ECSS [34] 等都使用了小规模的DailyTalk数据集[27],该数据集总共包含约 20 小时内的 2541 段对话语音。更重要的是,它只包含阅读风格的录音,缺乏足够的表现力。一些工作[10, 29]曾尝试使用诸如 IEMO-CAP [4]和ECC [28]等数据集。然而,这些数据集是为诸如对话情感识别[4, 41]和对话教育等目的而设计的,它们可能包含背景噪声问题,这会影响合成结果。因此,有必要构建一个大规模且高质量的情感CSS数据集,以支持基于GPT的CSS模型实现真正的自然对话风格。
在本文中,我们提出了一种新颖的生成式情感CSS系统,称为GPT-Talker。我们将对话历史的多模态信息转换为离散token序列,并将它们无缝集成,以形成一个全面的用户代理对话上下文。利用GPT的力量,我们为代理预测响应Token序列,其中包含语义和风格知识。之后,通过对话增强的VITS合成情感对话语音,向用户提供反馈。此外,我们提出了一个大规模的自然CSS数据集,称为NCSSD,其中包括自然录制的即兴风格对话语音以及从电视节目中提取的对白。它涵盖了中文和英语,总时长为236小时。NCSSD数据集及相关标注将免费公开。我们对NCSSD的可靠性和我们的GPT-Talker的有效性进行了全面的实验。主观和客观评估均表明,我们的模型在自然性和情感表达方面明显优于其他最先进的CSS系统。
总之,我们的主要贡献如下:
1) 据我们所知,我们是最早将GPT引入对话语音合成并为用户代理对话构建简洁而强大的上下文建模方案的团队之一。
2) 我们提出了一种新的大规模自然CSS数据集,称为NCSSD,它能够支持我们的GPT-Talker训练,甚至未来的GPT式CSS模型实现真正的自然对话语音风格。
3) 我们对模型的有效性和数据集的可靠性进行了全面的验证。我们的模型在自然性和表现力方面明显优于基准模型。
2
Related Works
2.1
Conversational Language Model
文本和语音是人类交流的两种重要形式。基于文本的大型语言模型(LLMs)在包括对话聊天机器人[2]、代码生成[6]、创意写作[46]和机器翻译[36]等各个领域都取得了显著的成就。
受上述工作的启发,最近许多研究探索了对话语言建模来解决涉及语音和文本的各种任务[48, 49],如自动语音识别[12]、口语问答[1]和语音到文本翻译[51]等。例如,SpeechGPT[57]通过采用离散单元表示来转换连续语音信号,并将大型语言模型与单元解码器集成,展示了跨模态对话能力。这使得模型能够有效地处理多模态输入并生成相应的输出。dGSLM[38]提出了一种基于离散语音单元的双塔口语大型语言模型,用于对双通道口语对话进行建模,但生成的口语句子缺乏语义信息。USDM[24]提出了一种通用的语音-文本预训练方案,利用大型语言模型的推理能力基于对话语音生成连贯的口语响应。在人类对话中,虽然对话主要依赖词汇方面,但说话风格传递的信息远不止文本,甚至可以改变口语句子的语义[5]。为此,E-Chat [52] 提出了一种新颖的基于LLM的口语对话系统,该系统利用由语音编码器提取的情感嵌入,使其能够根据不同的情感情境做出响应。ParalinGPT [31] 将文本的对话情境、语音嵌入和副语言属性作为输入提示,供LLM改进当前和响应情感预测以及响应文本生成,以实现自然的口语对话。此外,Spoken-LLM [32]提议将LLM与一个自监督的语音情感表示模型相融合,以帮助LLM预测响应说话风格和文本,从而使后续的情感TTS模型能够生成自然和多样化的语音响应。
我们的工作与上述研究有显著的不同。具体来说,我们的工作专注于CSS任务,即把多轮多模态对话上下文整合为一个统一的序列,并预测当前话语的语音的语义和风格表示,然后我们利用这种表示来生成最终的富有表现力的对话语音。然而,上述工作,如dGSLM、SpeechGPT和USDM等,忽略了对多轮对话历史的有效建模机制,而E-chat、ParalinGPT和Spoken-LLM等只根据对话历史生成文本响应,而不是语音表示。尽管MQTTS[7]和Pheme[3]也声称是对话语音生成系统,但它们不建模对话上下文,而只关注合成语音的自然性。我们的GPT-Talker类似于近期的风格迁移TTS模型GPT-SoVITS[16],但一个明显的区别在于 GPT-SoVITS并未关注对话上下文信息。
2.2
Conversational Speech Datasets
表1展示了我们已知的相关现有数据集。第6-11行提供了一些专门为CSS任务设计的对话语音数据集的信息。可以观察到,这些数据集的规模相对较小。例如,ECC[28]从YouTube的英语对话频道收集了66组公共视频,总共24小时的内容。这些对话涉及两个、三个或多个参与者。DailyTalk[27]源自DailyDialog数据集[30],展示了2541个高质量的男女对话,总共20小时。用于情感对话研究的日语语料库STUDIES[44]和CALLS[43]涵盖了两种场景,即学校中师生之间的交流和电话客服,分别包含8.2小时和6.5小时的语音。RyanSpeech[54]是一个高质量的男性TTS语料库,用于对话领域,包含9.84小时的语音样本。请注意,CALLS和RyanSpeech声称是对话数据集,但它们只包含一个说话者,不适合CSS任务。郭等人[17]记录了一个内部数据集(我们在此称为“ASLP-CH”),其中包含了2位中国女性之间的对话,时长3小时,她们分别扮演了客户和客服代表的角色。
总之,这些数据集的规模不足以保证基于GPT模型训练高质量的CSS模型。这需要创建一个大规模、公开可用的CSS数据集。此外,与现有数据集相比,我们的数据集在语言多样性和数据来源多样性方面具有优势。具体来说,它包括中英文双语数据,以及录制数据和收集数据的子集。此外,我们还开发了一个自动化处理流程,大大提高了创建自然CSS数据集的效率。我们希望这一举措能够为社区的发展做出贡献。此外,在表1中,我们列出了一些最新的对话语音数据集,这些数据集是为诸如对话情感理解等任务而设计的。可以看出,与这些数据集相比,我们的数据集在语言多样性、数据来源多样性和数据集规模方面仍然具有显著的优势。
3
GPT-Talker: Methodlogy
3.1
Task Definition
在用户代理的口语对话中,用户和代理轮流发言。用户先发言,代理理解用户的语义并提供口语响应。随着时间的推移,多轮用户代理对话历史不断积累并形成。因此,在我们的 CSS 任务中,任务设定是根据对话情境生成代理响应的口语,其中响应的文本已给出。具体来说,假设N轮对话情境包括多模态对话历史H和当前话语C。CSS的目标是确保合成的语音适合整个对话情境。因此,如何对多轮多模态对话情境进行建模,并为代理提供适当的说话风格是该任务的重点。
为此,我们的GPT-Talker由两个关键组成部分构成,即基于GPT的上下文建模和富有表现力的对话语音合成。具体而言,基于GPT的上下文建模提出了一种新颖的对话GPT(ConGPT),通过将上下文的离散Token序列视为条件提示来对多轮多模态对话上下文进行建模,并为代理预测适当的语义和风格表达。富有表现力的对话语音合成提出了对话VITS(ConVITS),用代理的语义、风格和音色增强VITS,以便根据已知的响应内容生成富有表现力的对话语音。
3.2
Conversational GPT
如图1左侧所示,ConGPT 包括 1) 多轮多模态上下文离散化, 2) 基于ConGPT的语义和风格推理。前面模块将多模态上下文转换为统一的离散化Token,然后构建多轮对话上下文的离散表示。基于此表示,后面模块推断响应话语的语义和风格。
3.2.1Multi-turn Multi-modal Context Tokenization
与采用复杂的图神经网络[29, 34]或级联流水线[35]来理解上下文的传统CSS工作不同,我们的ConGPT试图直接在统一的离散序列中理解多模态上下文。
3.2.2 ConGPT-based Semantic and Style Inference
为了根据序列化的多模态用户代理上下文推断响应话语的语义和风格信息,ConGPT 将整个序列化的对话上下文作为输入,然后预测语义和风格知识。这个过程如下所示:
使用自回归方法对离散Token序列中的子Token进行解码,直到解码到序列结束(EOS)标签。请注意,与[33]类似,我们不会为序列化上下文的Token序列分配明确的说话者身份。
3.3
Conversational VITS
在统一上下文建模之后,我们提出了对话式VITS(ConVITS),为智能体的响应提供适当的富有表现力的语音。请注意,ConVITS采用智能体的三个信息源,包括智能体的话语内容渲染、由ConGPT推断出的用于语义和风格渲染的智能体的语义和风格表示,以及用于音色渲染的额外参考说话人。如图 1 右侧所示,它由四个关键组成部分组成,分别是上下文编码器、Token编码器、音色编码器和VITS合成器。采用交叉注意力机制来整合智能体的内容、语义和风格信息。
3.3.1 Content, Semantic and Style Rendering
首先,我们使用由6层Transformer编码器组成的文本编码器 来处理响应内容,提取其固有的文本信息以确保合成语音的可理解性。之后,使用由3层Transformer编码器组成的Token编码器将预测的上下文感知语义和风格标记转换为高维风格表示。
最后,为了实现富有表现力的CSS在内容、语义和风格渲染方面的统一,将文本信息和高维风格表示通过交叉注意力层集成到最终代理的样式嵌入中。我们在交叉注意力层中使用多头注意力模块,以适应不同的输入长度。
3.3.2 Timbre Rendering
为了实现灵活多样的表现风格,我们不依赖固定的说话者ID来进行说话者控制。相反,我们使用一个音色编码器和一个参考编码器来对任何参考语音进行音色迁移,从而实现基于内容、语义和风格渲染的灵活说话者音色渲染。如图1所示,音色编码器由6个卷积层、一个门控循环单元(GRU)层和一个线性层组成,它针对特定说话者获取参考语音并提取音色嵌入。
在训练期间,选择上一次对话中代理的语音作为参考语音。在推理阶段,我们可以为任何说话者分配一个参考,以实现零样本音色渲染性能。
3.3.3 Speech Generation
语音生成阶段通过利用上述对话表现力渲染将普通的VITS [25]扩展到对话环境中。重要的是,ConVITS架构不包括随机时长预测器,因为由ConGPT预测的语义和风格标记已经包含了时长信息,没有必要单独预测。最终的Agent风格嵌入通过投影层进行处理,以推导出均值和方差。Agent的音色嵌入由后置编码器进行编码,以生成潜在正态后验分布变量,然后由基于流的解码器对其进行解码,以生成标准化流。HiFi-GAN生成器随后将潜在变量上采样为语音波形。
3.4
Training Strategy
我们提出了一种三阶段训练策略,以确保我们的GPT-Talker的性能:
1)在第一阶段,我们专注于ConGPT和ConVITS在单句语音场景中的建模能力。我们使用包括 LibriTTS [55]、LJSpeech [20]、AISHELL-3 [45]等在内的单句语音数据集对ConGPT和ConVITS进行训练,总时长约为2.5千小时。通过这种方式,ConGPT可以根据文本Token序列预测语音Token。ConVITS在输入提供的文本后能够稳定地生成语音。
2)在第二阶段,我们使用 NCSSD的收集子集继续训练ConGPT。这使其能够利用提供的对话上下文和多模态信息准确预测当前句子的语义和风格知识。
3)在第三阶段,我们使用NCSSD的录制子集对ConGPT和ConVITS进行微调,以进一步增强合成语音的自然性和表现力。
关于模型总损失的计算。GPT-Talker 的损失由两部分组成。LConGPT计算预测声学单元与真实单元之间的交叉熵损失。LConVITS包括梅尔重建损失、来自于VAE的KL散度损失、特征匹配损失、对抗训练损失,以及来自向量量化的损失。
4
NCSSD Construction
如前所述,我们还提出了一种大规模的自然对话语料库NCSSD,以支持基于GPT的CSS训练。如表1所示,该数据集包括两个子集,即收集部分和录制部分,总时长超过236小时。我们的数据集遵循CC-BY-SA 4.0许可协议。与传统的数据构建方法不同,传统方法需要人工参与[8, 41, 59],而我们为收集子集提出了一种自动数据构建管道,为录制子集提出了一种ChatGPT辅助的工作Pipeline。我们下面将报告数据收集过程和数据统计结果。
4.1
Automatic Data Construction for CollectionSubset
用于收集子集的自动数据构建流程包括 1)视频选择,2)对话场景提取,3)对话片段提取,4)对话脚本识别。
4.2
ChatGPT-assisted Data Construction forRecording Subset
与收集子集不同,录制子集的构建涉及设计对话脚本并邀请志愿者录制他们的声音和上半身图像信号。脚本作为对话内容的提示,而不是严格要求的,志愿者在录制过程中可以自发地扩充对话。然后,将生成的对话语音、上半身图像和脚本录制下来,以获得最终的录制数据。
4.2.1 Dialogue Script Draft Generation
准备录制语音数据的第一步是创建对话脚本。手动准备脚本可能既耗时又费力,而且在对话主题方面可能缺乏多样性。因此,我们利用ChatGPT强大的文本生成能力,通过使用基于提示的方法来生成符合我们期望的多样化对话脚本。
具体来说,我们使用ChatGPT的GPT-3.5 Turbo版本来生成两个人之间的对话脚本。如附录中图3所示,我们设计了一个两步提示模板,以提示ChatGPT输出大规模的对话脚本,以反映现实世界中自发的对话行为。在第一步中,我们的目标是提示ChatGPT生成人类对话的各种话题词,以确保交流内容的丰富性。在第二步中,我们选择一个特定的对话主题,并设置起始说话者的情绪状态。我们提示ChatGPT生成4到15个回合的多回合对话。此外,我们还要求GPT在生成的脚本中添加情感和意图标签,以增强其可解释性,并为后续的语音录制提供更多的参考信息。详细的提示模板见附录。
4.2.2 Spoken Dialogue Recording
基于之前获得的脚本,我们邀请志愿者录制对话。我们还捕捉了参与者在录制期间的上半身图像。重要的是,在录制过程中,鼓励志愿者根据脚本中提供的情感和意图信息自由添加对话内容,以创造自然随性的对话话语。具体来说,我们雇用了27名以英语为第二语言的年轻志愿者,让他们参与录制过程。他们的报酬是根据录制的对话数量计算的。录制地点包括教室、会议室、研讨会厅等,提供了多样化的环境。我们允许志愿者在提供的脚本、情感标签和意图标签的指导下进行自然对话。这种方法确保了最终录制的声音听起来自然和真实。
4.2.3 Dialogue Script Re-identification
由于在录制过程中存在演员的即兴话语,我们使用语音识别接口重新转录录制的语音,并将识别出的文本作为最终的对话脚本。与录制的语音和上半身图像一起,构成了我们最终的录制子集。
4.3
Data Statistics
表2展示了NCSSD数据集的总体统计数据。它包含了来自113个电视节目的19,456段对话和193,450句话,确保了数据的规模和多样性。该数据集大约持续236小时,其中最长的中文对话为308.21秒,最长的英语对话为177.51秒。每段对话都超过4秒,满足了对话任务所需的最低持续时间。平均而言,每段对话至少包含8轮对话,有助于训练模型处理较长的对话序列。数据集包含超过776名说话者,涵盖了各种说话风格和习惯。关于NCSSD的更多统计数据,请参考附录。
5
Experiments
在实验部分,我们将首先在单句语音合成场景中评估NCSSD的质量。随后,我们将通过与各种CSS任务的先进基准进行比较来验证GPT-Talker。我们将在下一节中介绍基准和评估指标,并在下一节中报告结果。请注意,实验设置可在附录中查看。
5.1
Baseline Models
为了验证NCSSD的可靠性,我们在单句语音合成任务上对其进行了评估,并选择先进的端到端TTS模型 VITS [25] 作为基准。请注意,VITS也被许多CSS模型[9, 11]选为骨干网络,我们认为它作为基准是合适的。
为了评估GPT-Talker在上下文理解和建模方面的有效性,我们开发了三个先进的CSS系统,它们代表了各种上下文学习方法,分为以下三类:
(1)基于GRU的上下文学习:[17]中提出的对话上下文感知 TTS(我们在此称为“CCATTS”)模型采用基于GRU的网络来对对话上下文中的句子级依赖关系进行建模;
(2)多尺度上下文学习:FCTalker [19]是一个具有代表性的工作,它同时考虑对话上下文中的句子级和单词级上下文;
(3)基于异构图的上下文学习:ECSS [34]是一个先进的、富有表现力和情感的 CSS 模型,它采用异构图来对多模态上下文之间的复杂关系进行建模。
5.2
Metrics
6
Results and Discussions
我们报告了以下方面的结果,包括“NCSSD的可靠性验证”、“GPT-Talker的有效性验证”以及“三阶段训练的分析”。更多结果请参考附录。
6.1
Reliability Verification of NCSSD
我们使用我们的NCSSD在单句场景中训练VITS,合成中文和英文语音的ABX偏好测试结果如图2所示。
对于每种语言,我们将收集和录制的子集结合起来训练VITS模型。我们从中文和英文数据集中随机选择50个句子进行合成,并进行了ABX偏好测试,邀请30名志愿者标记出 VITS模型合成的语音和真实语音之间自然度更高的语音。图2的结果表明,VITS的性能非常接近真实语音。中文语音中“无偏好”的比例高达33.35%,而英文语音中约为34.35%。这表明我们的NCSSD能够支持先进的TTS模型合成高质量的语音。
毫无疑问,GT语音的表现更好。然而,由于我们的NCSSD旨在模仿现实世界中的人类对话,有效地纳入上下文建模方法是进一步提高TTS模型性能的有效途径。因此,在下一节中,我们将进一步验证所提出的GPT-Talker在上下文学习中的有效性。
6.2
Validity Verification of GPT-Talker
在本节中,我们将把GPT-Talker与三个先进的CSS基准进行比较。由于这些基准在其各自的研究中使用英语数据集DailyTalk进行了实验,我们将使用NCSSD数据集的英语部分和 DailyTalk数据集对我们的模型进行验证。与上一节类似,英语部分将通过合并收集子集和录制子集进行训练。
对于主观评价,由于预算限制,我们不邀请以英语为母语的人作为志愿者。相反,我们邀请了30名精通英语听、说、读、写的中国学生作为志愿者。我们从测试集中随机选择50句话,为每个待测试的系统合成语音。然后,我们要求志愿者使用N-DMOS对语音进行评分,并且基于这些引导也使用E-DMOS进行了评分。他们的酬劳是根据测试样本的数量计算得出的。此外,针对 50 个测试样本,我们计算了SSIM和DTWD。所有指标的结果都在表3中呈现。
从表中的DTWD结果来看,显然由GPT-Talker合成的语音优于基线,表明GPT-Talker更能够捕捉到与音高相关的表现力,类似于GT。此外,N-DMOS和E-DMOS结果显示,我们的GPT-Talker显著优于所有基线。例如,在DailyTalk数据集中,GPT-Talker的N-DMOS和E-DMOS得分分别为3.890和3.908,而基准得分低于3.6。在NCSSD数据集的结果中也观察到了类似的趋势。此外,与基线相比,GPT-Talker更接近GT。这些结果表明,GPT-Talker利用ConGPT有效地建模了上下文对当前句子语义和风格的影响,而ConVITS成功地将CSS中的语义和风格方面呈现出来,从而产生了高度自然和富有表现力的合成语音。最后,通过观察SSIM指标结果,可以看出GPT-Talker与所有基准相比实现了最高的说话者相似度,证明我们的ConVITS在语调渲染方面优于语义和风格渲染。凭借 ConGPT 的对话情境建模能力,ConVITS 实现了极具表现力的对话语音合成。
6.3
Analysis of Three-Stage Training
本节验证了第3.4节中介绍的三阶段策略,用于训练GPT-Talker。我们设计了以下四种训练策略进行验证:
1)单阶段(w/ CL&RC)表示我们直接使用NCSSD的收集和录制子集来训练GPT-Talker;
2)两阶段(w/ CL&RC)表示我们采用与第3.4节相同的方法进行预训练。之后,我们将两个子集合并在一起进行微调;
3)两阶段(w/ CL):这种方法与第二种方法类似,不同之处在于微调时只选择收集子集;
4)两阶段(w/ RC):这种方法与第二种方法类似,不同之处在于微调时只选择记录子集。我们使用与上一节相同的配置进行主观和客观实验,并将所有结果报告在表4中。
我们观察到,多阶段方法在所有指标上都优于单阶段方法,这表明使用预训练策略使模型能够学习基本的语音生成能力,而对对话数据进行微调有助于提高对话上下文理解和表达能力。此外,“两阶段()”和我们的三阶段方法优于以往的两阶段方法,这表明在整个对话数据集上进行微调使模型能够在大量数据的支持下学习对话表达能力。将“两阶段()”方法与我们的三阶段方法进行比较,尽管在中文和英文数据集中有一个指标略有滞后,但我们的三阶段方法在剩余的六个指标上显示出显著的优势。这证实我们的三阶段方法逐渐引导模型学习更丰富的对话表达信息,从而提高对话语音生成能力。
7
Conclusion
在这项工作中,我们提出了一种新颖的基于GPT的对话式语音合成(CSS)模型,称为 GPT-Talker,用于用户代理交互。它由ConGPT和ConVITS组成,用于在统一的用户代理离散对话上下文序列中对语义和风格表达进行建模,并为代理推断富有表现力的语音。我们还提出了迄今为止最大规模的对话式语音合成数据集,称为NCSSD,它在语言和数据源多样性方面表现出色。该数据集能够支持GPT-Talker甚至未来GPT风格的CSS模型的训练,为推进CSS 技术提供了宝贵的资源。我们对NCSSD的可靠性以及我们的GPT-Talker的有效性进行了全面的实验。我们鼓励研究界使用NCSSD进行口语对话建模。