模型训练: LPCNet 语音合成

模型训练: LPCNet 语音合成

本实验介绍基于MLU370 与寒武纪 TensorFlow2 框架的 LPCNet 语音合成训练方法。
难易程度: 中级|实验人次:1633

一、内容和目标

 

1. 实验内容

本实验主要介绍基于寒武纪 MLU370 (寒武纪处理器,简称 MLU )与寒武纪 TensorFlow2 框架的 LPCNet 语音合成训练方法。在官方源码的基础上,只需要进行简单移植修改便可将 LPCNet 模型运行在 MLU370 加速卡上,实现语音合成的功能。主要的修改点集中在`models/training_tf2/mlu_lpcnet.py`内,如果您对修改点感兴趣,可对比`models/training_tf2/lpcnet.py``models/training_tf2/mlu_lpcnet.py`文件。

 

2. 实验目标

  1. 掌握使用寒武纪 MLU370 和 TensorFlow2 框架进行 AI 模型训练的基本方法。

  2. 理解 LPCNet 模型的整体网络结构及其适配流程。

 

二、前置知识

 

1. 寒武纪软硬件平台介绍

  • 硬件:寒武纪 MLU370 AI 加速卡

  • 框架:TensorFlow2 2.5.2

 

2. 寒武纪 PyTorch 框架

为⽀持寒武纪 MLU 加速卡,寒武纪定制了开源AI编程框架 TensorFlow2(以下简称 Cambricon TensorFlow2)。  

Cambricon TensorFlow2 集成了寒武纪软件栈,扩展了原生 TensorFlow2 对 MLU 设备的支持,同事屏蔽了硬件细节,允许用户使用原生 TensorFlow API 进行开发。用户在使用 Cambricon TensorFlow2 进行开发、部署时,可以获得与使用 CPU、GPU 完全一致的体验。

Cambricon TensorFlow2 借助 TensorFlow2  自身提供的设备扩展接口将 MLU 后端库中所包含的算⼦操作动态注册到 TensorFlow2 中,MLU 的后端库可处理 MLU 上的张量和⽹络算⼦的运算。Cambricon TensorFlow2 会基于 CNNL 库在 MLU 后端实现常⽤⽹络算⼦的计算,并完成数据拷贝。

获取更多有关Cambricon TensorFlow2资料,请参考 寒武纪官网文档 TensorFlow2 相关内容。

 

三、网络结构

LPCNet 是一个 AI 声码器,用于语音合成,属于 TTS 系统的一部分,输入是声学特征向量,输出结果为音频文件。LPCNet 结合了 WaveRNN 和数字信号处理(DSP),不对语音做任何先验假设,而是通过一个采样过程来生成语音。相比于 WaveRNN 需要为所有的采样值建模,LPCNet 的思路则是将采样值内非线性部分交给 WaveRNN 处理,采样值内的线性部分则通过 DSP 的线性预测给出。

原始论文 可知,其网络结构如下图所示:

由上图可知,LPCNet 可以分解为三个子结构: Frame rate network,Sample rate network,计算 LPC 的模块。LPCNet 的核心设计在 Sample rate network 部分,Frame rate network 主要为 Sample rate network 提供一个条件向量的输入,该向量每帧计算一次,并在该帧时间内保持恒定。LPC 计算模块则负责从输入特征中计算线性预测参数 LPC,LPC 同样是每帧计算一次,并在帧内保持恒定。

 

四、模型训练

  1. 【工程准备】:安装依赖环境,编译源代码和数据集准备等。

  2. 【设定超参】:设定相关参数的值,如训练数据集路径、`batch_size``epoch`等。

  3. 【构建模型】:模型构建时需要区分当前是finetune训练还是from_scratch训练,如果是finetune,则直接调用load_model()即可,如果是from_scratch训练,则需调用new_lpcnet_model()。本实验展示了finetune训练时的模型构建过程。

  4. 【加载数据和模型】:创建数据加载器时需先根据原始输入数据处理得到data,features,periods,随后将data,features,periods与其他参数一起送入LPCNetLoader,生成数据加载器,供后续训练遍历。同时加载 finetune 的模型文件。

  5. 【训练】:本实验主要介绍finetune 的训练模型。

  6. 【效果验证】:提供脚本测试训练的精度。

 

五、相关链接

实验代码仓库:https://gitee.com/cambricon/practices

Modelzoo仓库:https://gitee.com/cambricon/modelzoo

 

申 请 试 用