【论文学习】《Tacotron: Towards End-to-End Speech Synthesis》

介绍了Tacotron模型,这是一种端到端的文本到语音合成系统,能够直接从字符序列生成对应的语音谱图。该模型在美式英语上获得3.82的MOS平均意见得分,超过了生产级参数系统。

《Tacotron: Towards End-to-End Speech Synthesis》论文学习

  摘要

       文本到语音合成系统通常包括多个阶段,如文本分析前端、声学模型和音频合成模块。构建这些组件通常需要广泛的领域专业知识,可能包含脆弱的设计选择。在本文中,我们提出了Tacotron,一个端到端生成文本到语音的模型,它可以直接从字符合成语音。给定<文本,语音>数据对,模型可以使用随机初始化完全从头开始训练。我们提出了几个关键技术,以使序列到序列框架执行这一具有挑战性的任务。Tacotron在美式英语上获得了3.82的主观MOS平均意见得分,在自然度方面超过了生产级参数系统。此外,由于Tacotron在帧级生成语音,它比样本级自回归方法快得多。
       

  1 介绍

       现代文本-语音(TTS)管道是复杂的(《Text-to-speech synthesis》)。例如,统计参数TTS通常有提取各种语言特征的文本前端、持续时间模型、声学特征预测模型和基于复杂信号处理的声码器(《Statistical parametric speech synthesis》,《Vocaine the vocoder and applications in speech synthesis》)。这些组件基于广泛的领域专业知识,并且设计起来很费力。它们也是独立训练的,所以每个组成部分的错误可能会叠加。现代TTS设计的复杂性导致在构建新系统时需要大量的工程工作。
       
       因此,集成的端到端TTS系统有许多优点,可以在文本、音频上进行训练。与最少的人类注释配对。首先,这样的系统减轻了费力的特征工程的需要,这可能涉及启发式和脆弱的设计选择。其次,它更容易对各种属性(如说话人或语言)或高级特征(如情感)进行丰富的条件反射。这是因为条件作用可能发生在模型的最开始,而不是只发生在特定的组件上。同样,适应新数据可能也更容易。最后,单个模型可能比每个组件的错误可能复合的多阶段模型更健壮。这些优势意味着端到端模型可以让我们在现实世界中大量丰富的、有表现力的、但常常是嘈杂的数据上进行训练。
       
       TTS是一个大规模的反问题:高度压缩的源(文本)被解压缩成音频。由于同一文本可以对应不同的发音或说话风格,这对于端到端模型来说是一项特别困难的学习任务:它必须处理给定输入信号水平上的巨大变化。此外,与端到端语音识别(《Listen, attend and spell: A neural network for large vocabulary conversational speech recognition》)或机器翻译(《Google s neural machine translation system: Bridging the gap between human and machine translation》)不同,TTS输出是连续的,输出序列通常比输入序列长得多。这些属性导致预测错误迅速累积。在本文中,我们提出了Tacotron,一种基于序列到序列(seq2seq)的端到端生成TTS模型(《Sequence to sequence learning with neural networks》)和注意范式(《Neural machine translation by jointly learning to align and translate》)。我们的模型以字符作为输入,原始谱图作为输出,采用多种技术来提高普通seq2seq模型的性能。给定<文本,语音>数据对,Tacotron可以通过随机初始化完全从零开始训练。它不需要音素水平的对齐,所以它可以很容易地扩展到使用大量的录音数据。通过一种简单的波形合成技术,Tacotron在美国英语评估集上产生了3.82的平均意见得分(MOS),在自然度方面超过了生产级参数系统。
       

  2 相关工作

       WaveNet (《WaveNet: A generative model for raw audio》)是一个强大的音频生成模型。它适用于TTS,但由于其样本级自回归的性质,运行速度较慢。它还需要对现有TTS前端的语言特征进行调节,因此不是端到端:它只是取代了声码器和声学模型。另一个最近开发的神经模型是DeepVoice (《Deep voice: Real-time neural text-to-speech》),它用相应的神经网络替代典型的TTS管道中的每个组件。但是,每个组件都是独立训练的,以端到端方式改变系统以训练是非常重要的。
       
       据我们所知,《First step towards end-to-end parametric TTS synthesis: Generating spectral parameters with neural attention》是最早使用seq2seq关注端到端TTS的工作。然而,它需要一个预先训练的隐马尔可夫模型(HMM)对准器来帮助seq2seq模型学习对准。很难说seq2seq本身学习了多少对齐。其次,我们使用了一些技巧来训练这个模型,作者指出,这样做会损害韵律。第三,它预测声码器参数,因此需要一个声码器。此外,该模型是基于音素输入进行训练的,实验结果似乎有一定的局限性。
       
       Char2Wav (《Char2Wav: End-to-end speech synthesis》)是一个独立开发的端到端模型,可以对角色进行训练。然而,Char2Wav仍然在使用SampleRNN神经声码器之前预测声码器参数(《SampleRNN: An unconditional end-to-end neural audio generation model》),而Tacotron直接预测原始谱图。另外,它们的seq2seqSampleRNN模型需要分别进行预训练,但我们的模型可以从头开始训练。最后,我们对普通的seq2seq范例做了几个关键的修改。如后面所示,普通的seq2seq模型不能很好地用于字符级输入。
       

  3 模型架构

       Tacotron的主干是一个具有注意力的seq2seq模型(《Neural machine translation by jointly learning to align and translate》,《Grammar as a foreign language》)。图1描述了该模型,该模型包括编码器、基于注意的解码器和后处理网络。在高层次上,我们的模型以字符为输入,产生谱图帧,然后转换为波形。我们将在下面描述这些组件。
图1

       

    3.1 CBHG模块

图2

       我们首先描述一个名为CBHG的构建块,如图2所示。CBHG由一组一维卷积滤波器、高速网络(《Highway networks》)和双向门控循环单元(GRU) (《Empirical evaluation of gated recurrent neural networks on sequence modeling

### 如何复现 InstructBLIP 通用视觉-语言模型及其指令微调方法 #### 准备工作环境 为了成功复现 InstructBLIP 模型,首先需要准备适当的工作环境。这通常涉及安装必要的软件包和依赖项。建议使用 Python 和 PyTorch 来构建此项目。 ```bash conda create -n instructblip python=3.8 conda activate instructblip pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113 ``` #### 获取数据集 InstructBLIP 的训练依赖于大规模的数据集来学习丰富的特征表示。这些数据集应包含配对的图像和文本描述。常用的数据集包括 COCO Captions, Visual Genome 等[^2]。 #### 下载预训练模型权重 由于从头开始训练这样的大型模型非常耗时且计算资源密集,因此推荐下载官方发布的预训练模型权重作为起点。可以从 GitHub 或其他公开平台获取最新的预训练版本。 #### 实施指令微调流程 按照论文中的指导,在已有的基础之上实施特定任务导向的指令微调过程。具体来说: - **定义目标任务**:明确希望模型执行的任务类型,比如生成图片说明、问答等。 - **调整输入格式**:确保输入遵循预期结构,即每条记录由一对或多张图像以及相应的自然语言命令组成。 - **修改损失函数**:根据所选任务定制化设计适合的优化目标。 ```python from transformers import BlipForConditionalGeneration, BlipProcessor processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base") model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base") def fine_tune_model(training_data): optimizer = AdamW(model.parameters(), lr=5e-5) for epoch in range(num_epochs): model.train() for batch in training_data: inputs = processor(images=batch['image'], text=batch['instruction'], return_tensors="pt", padding=True) outputs = model(**inputs) loss = outputs.loss optimizer.zero_grad() loss.backward() optimizer.step() fine_tune_model(prepared_dataset) ``` 通过上述步骤可以有效地实现 InstructBLIP 模型的本地部署与进一步开发应用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值