三点几嚟,饮茶先啦!PaddleSpeech发布全流程粤语语音合成

时间:2023-04-03 21:03:09

PaddleSpeech 是飞桨开源语音模型库,其提供了一套完整的语音识别、语音合成、声音分类和说话人识别等多个任务的解决方案。近日,PaddleSpeech 迎来了重要更新——r1.4.0版本。在这个版本中,PaddleSpeech 带来了中文 wav2vec2.0 fine-tune 流程、升级的中英文语音识别以及全流程粤语语音合成等重要更新。接下来,我们将详细介绍这些更新内容以及亮点。

三点几嚟,饮茶先啦!PaddleSpeech发布全流程粤语语音合成中文 wav2vec2.0 fine-tune

在r1.4.0版本中,我们实现了中文 wav2vec2.0 fine-tune 流程。wav2vec2.0 是一种基于自监督学习的语音特征提取方法,通过训练未标注的语音数据,学习到音频信号的有用表示。

wav2vec2.0 使用一个基于卷积神经网络(CNN)的编码器来提取语音特征,然后使用一个 Transformer 架构的上下文网络来捕捉特征之间的时序关系。在 fine-tune 阶段,通过添加一个线性分类层来适应中文语音识别任务。

wav2vec2.0 的主要组成部分

  • 前处理

原始音频数据首先经过预处理,包括采样率转换、声道数调整等,以满足模型输入的要求。

  • 特征提取器

对预处理后的音频数据进行特征提取,将其转换为适合模型输入的形式。wav2vec2.0 模型使用了一个卷积神经网络(CNN)作为特征提取器,将连续的音频数据转换为一系列的特征向量。

  • 上下文网络

特征向量经过上下文网络进行处理,捕获不同时间步长之间的关联信息,上下文网络使用的是 Transformer 结构。

  • 自监督学习

wav2vec2.0 采用自监督学习的方法进行训练,它使用了一个“掩码”策略,在输入数据中随机选择一些时间步长并将其置为均匀分布的随机 embedding 向量,然后训练模型去预测被掩码量化后的特征。这种方法允许模型在没有文本标注的情况下学习音频数据的内在结构。

  • 线性分类器

在自监督学习的基础上,为了实现音频到文本的转换,模型在最后一层添加了一个线性分类器。这个分类器将上下文网络输出的特征向量映射到对应的 token。

三点几嚟,饮茶先啦!PaddleSpeech发布全流程粤语语音合成

通过这一流程,PaddleSpeech 能够在无需大量标注数据的情况下,提供高效准确的中文语音识别模型。在 PaddleSpeech 给出的 fine-tune 流程示例中,预训练模型基于 WenetSpeech Dataset ,使用 aishell1 数据集进行微调,在两块32G V100 上训练80个 Epoch ,batch size 设置为5,Encoder 使用 wav2vec2.0, Decoder 阶段使用 CTC ,解码阶段使用 Greedy search 。最终在 aishell1 测试数据集上字错误率(CER)为0.051,折算成识别正确率94.9%。

三点几嚟,饮茶先啦!PaddleSpeech发布全流程粤语语音合成

开发者们可以通过 wav2vec2.0 的中文 fine-tuning 流程,在自己的数据集上进行微调,以便获得在特定场景中表现更优秀的模型。

项目体验传送门

https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/examples/aishell/asr3

三点几嚟,饮茶先啦!PaddleSpeech发布全流程粤语语音合成全流程粤语语音合成

PaddleSpeech r1.4.0 版本还提供了全流程粤语语音合成解决方案,包括语音合成前端、声学模型、声码器、动态图转静态图、推理部署全流程工具链。语音合成前端负责将文本转换为音素,实现粤语语言的自然合成。为实现这一目标,声学模型采用了基于深度学习的端到端模型 FastSpeech2 ,声码器则使用基于对抗神经网络的 HiFiGAN 模型。这两个模型都支持动转静,可以将动态图模型转化为静态图模型,从而在不损失精度的情况下,提高运行速度。

  • 训练全流程体验‍‍‍

https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/examples/canton/tts3

三点几嚟,饮茶先啦!PaddleSpeech发布全流程粤语语音合成

三点几嚟,饮茶先啦!PaddleSpeech发布全流程粤语语音合成

通过 AI Studio,可以快速体验粤语语音合成,项目在线体验地址: 

https://aistudio.baidu.com/aistudio/projectdetail/5601925?channelType=0&channel=0

Python 示例

from paddlespeech.cli.tts import TTSExecutor
tts_executor = TTSExecutor()
wav_file = tts_executor(
    text='三点几嚟,饮茶先啦!',
    am='fastspeech2_canton',
    voc='hifigan_csmsc',
    lang='canton',
    spk_id=10,
    use_onnx=True,
    output='api_1.wav',
    cpu_threads=2)

效果示例‍‍‍‍‍‍‍‍‍‍

推理全流程则实现了从输入文本到语音合成的完整过程,包括文本处理、声学模型预测以及声码器合成。在文本处理阶段,我们采用了自然语言处理技术,将文本转换为音素序列。在声学模型预测阶段,利用预训练的 FastSpeech2 模型生成声学特征。最后,通过声码器 HiFiGAN 将声学特征转换为可听见的语音信号。通过这一全流程粤语语音合成解决方案,PaddleSpeech 能够为用户提供更加自然、真实的粤语语音合成体验。 

你也可以参考 PaddleSpeech 的语音合成部署示例,将粤语语音合成模型部署到手机或者其它边缘设备中,你可以参考以下流程:

https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/demos/TTSAndroid

三点几嚟,饮茶先啦!PaddleSpeech发布全流程粤语语音合成

三点几嚟,饮茶先啦!PaddleSpeech发布全流程粤语语音合成中英文语音识别模型

在这次更新中,PaddleSpeech 发布了中英文语音识别预训练模型 conformer_talcs ,通过命令行工具 CLI 或者 Python 接口可以快速使用。开发者们可以基于这部分工作搭建自己的智能语音应用,也可以参考示例 examples/tal_cs/asr1 训练自己的中英文语音识别模型。该模型采用 Conformer 架构和 CTC 损失函数,实现对中英文混合语音的识别。Conformer 架构使用自注意力机制捕获输入序列中的长距离依赖关系,从而提高语音识别的准确性。同时,CTC 损失函数允许模型在不需要对齐输入和输出的情况下进行训练,简化了训练过程。针对中英文混合场景,我们在训练数据上引入了 code-switch 标签,使模型能够在单一语言和混合语言之间灵活切换。这一技术为用户带来了更优质的中英文混合语音识别体验。

Python 接口快速体验

import paddle
from paddlespeech.cli.asr import ASRExecutor
asr_executor = ASRExecutor()
text = asr_executor(
    model='conformer_talcs',
    lang='zh_en',
    sample_rate=16000,
    config=None, 
    ckpt_path=None,
    audio_file='./ch_zh_mix.wav',
    codeswitch=True,
    force_yes=False,
    device=paddle.get_device())
print('ASR Result: \n{}'.format(text))

三点几嚟,饮茶先啦!PaddleSpeech发布全流程粤语语音合成应用场景展望

基于上述详细的技术原理,PaddleSpeech r1.4.0 所带来的中文 wav2vec2.0 finetune 、中英文语音识别及全流程粤语语音合成等重要更新将在以下应用场景发挥重要作用:

智能客服

PaddleSpeech 的语音识别和语音合成技术可以为智能客服提供强大支持,实现更为流畅、自然的多语言语音互动,提升客户体验。

教育领域‍‍

中英文混合语音识别技术将有助于跨国教育的发展,提高双语教学质量,同时全流程粤语语音合成技术也可应用于方言地区的教育场景。

语音助手‍‍

PaddleSpeech 的升级将为智能语音助手带来更加准确的语音识别和更为自然的语音合成能力,进一步提升用户体验。

会议记录与翻译

PaddleSpeech 的中英文语音识别技术可广泛应用于跨国会议的记录与翻译,帮助与会者更好地沟通交流。

此外,PaddleSpeech r1.4.0 的技术更新还可在多种场景中发挥作用,如医疗、法律、广播等领域。我们期待广大开发者在实际应用中发掘 PaddleSpeech 的更多潜力,共同推进语音技术的发展。

感谢开源社区贡献者

在此,我们特别感谢 PaddleSpeech 的开源社区贡献者们。正是有了大家的共同努力,才使得 PaddleSpeech 能够持续发展、不断优化。未来,我们将继续致力于为开发者提供更加优秀的语音技术解决方案。

三点几嚟,饮茶先啦!PaddleSpeech发布全流程粤语语音合成

欢迎广大开发者关注 PaddleSpeech,体验 r1.4.0的强大功能,一起探索语音技术的无限可能!如果想了解更多有关 PaddleSpeech 的内容,欢迎前往 PaddleSpeech 主页。

https://github.com/PaddlePaddle/PaddleSpeech

想要学习 PaddleSpeech 的更多用法,欢迎大家点击 Star 支持我们的工作,了解 PaddleSpeech 最新资讯。

三点几嚟,饮茶先啦!PaddleSpeech发布全流程粤语语音合成

参考文献

[1] Alexei Baevski, Henry Zhou, Abdelrahman Mohamed, Michael Auli: “wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations”, 2020

[2] Yi Ren, Chenxu Hu, Xu Tan, Tao Qin, Sheng Zhao, Zhou Zhao, Tie-Yan Liu: “FastSpeech 2: Fast and High-Quality End-to-End Text to Speech”, 2020

[3] Jungil Kong, Jaehyeon Kim, Jaekyoung Bae: “HiFi-GAN: Generative Adversarial Networks for Efficient and High Fidelity Speech Synthesis”, 2020