闲社服务运行正常AI智能体自动化平台
中文
语言 / Language简体中文SelectedEnglish

选择显示语言

speech_personal_sambert-hifigan_nsf_tts_zh-cn_pretrain_16k

iic/speech_personal_sambert-hifigan_nsf_tts_zh-cn_pretrain_16k

发布机构iic

下载访问条件魔搭来源

SAMBERT个性化语音合成模型介绍 本文将介绍SAMBERT个性化语音合成模型, 包括其模型结构, 如何在ModelScope上体验模型效果, 以及如何使用开源代码训练SAMBERT个性化语音合成模型. 语音合成(Text-to-Speech, TTS) 是指将输入文字合成为对应语音信号的功能,即赋予计算机“说”的能力,是人机交互中重要的一环。现代语音合成最早可以追溯到1939年贝尔实验室制造的第一个电子语音合成器,后来历经共振峰合成、PSOLA合成、Unit Select

语音音频
模型详情

模型介绍

中文整理

SAMBERT个性化语音合成模型介绍

本文将介绍SAMBERT个性化语音合成模型, 包括其模型结构, 如何在ModelScope上体验模型效果, 以及如何使用开源代码训练SAMBERT个性化语音合成模型.

个性化语音合成

语音合成(Text-to-Speech, TTS) 是指将输入文字合成为对应语音信号的功能,即赋予计算机“说”的能力,是人机交互中重要的一环。现代语音合成最早可以追溯到1939年贝尔实验室制造的第一个电子语音合成器,后来历经共振峰合成、PSOLA合成、Unit Selection波形拼接、统计参数合成几代的发展,在2016年随着WaveNet的出现步入了深度学习合成时代,此时语音合成的效果已经表现出了比拟真人的水准。

提到个性化定制语音,大家并不陌生,许多平台会选择一些大家耳熟能详的明星,进行声音定制,并普遍应用在语音导航,文字播报,小说阅读等场景中。这项技术来自文本到语音的服务,一般来说,语音合成数据需要专业播音员在录音棚录制,且数据量都是以500-1000句话起步,这种标准定制的流程,无论是对播音员、录制条件、录制数量和成本都提出了较高的要求。

Personal TTS,即个性化语音合成,是通过身边的一些常见录音设备(手机、电脑、录音笔等),录取目标说话人的少量语音片段后,构建出这个人的语音合成系统。相比于标准定制,个性化定制的技术难点在于,数据量有限(20句话)、数据质量不佳和流程全自动化。而它的意义在于进一步降低语音合成的定制门槛,能够将语音合成定制推广到普通用户。

学术界有很多关于声音克隆的工作,论文陈述效果很好。考虑到落地应用场景的效果,达摩院以自研语音合成系统KAN-TTS的迁移学习能力为基础,设计了一套较为完善的个性化语音合成方案。用户只需要录制20句话,经过几分钟的训练,就能够获得一个较好的个性化声音。

定制方案比较

模型框架

模型框架主要由三个部分组成:

  • 数据自动化处理和标注
  • 韵律建模SAMBERT声学模型
  • 基于说话人特征信息的个性化语音合成

个性化定制流程

数据自动化处理和标注

在用户录制完音频之后,我们只有,而语音合成是需要一些额外的标注信息:韵律标注、音素时长标注。为了获得较好的标注信息,我们采用了一种融合了多种原子能力的全自动化处理和标注流程,包括,韵律预测、ASR、VAD和语音增强等。通过测试集测试,该自动化流程产生的标注信息,在准确度能够满足个性化的需求。

此外,我们也在modelscope上发布了**TTS-Autolabel自动化数据标注工具**,旨在降低TTS数据标注门槛,使开发者更便捷的定制个性化语音合成模型,具体使用方式及相关教程请进入TTS-AutoLabel工具主页获取。

韵律建模SAMBERT声学模型

在整个链路中,和效果最相关的模块就是声学模型。在语音合成领域,类似FastSpeech的Parallel模型是目前的主流,它针对基频(pitch)、能量(energy)和时长(duration)三种韵律表征分别建模。但是,该类模型普遍存在一些效果和性能上的问题,例如,独立建模时长、基频、能量,忽视了其内在联系;完全非自回归的网络结构,无法满足工业级实时合成需求;帧级别基频和能量预测不稳定。 因此达摩院语音实验室设计了SAMBERT,一种基于Parallel结构的改良版TTS模型,它具有以下优点:

SAMBERT模型结构

基于说话人特征信息的个性化语音合成

如果需要进行迁移学习,那么需要先构建多说话人的声学模型,不同说话人是通过可训练的说话人编码(speaker embedding)进行区分的。给定新的一个说话人,一般通过随机初始化一个speaker embedding,然后再基于这个说话人的数据进行更新(见下图说话人空间1)。对于个性化语音合成来说,发音人的数据量比较少,学习难度很大,最终合成声音的相似度就无法保证。因此,我们采用说话人特征信息来表示每个说话人,此时,以少量说话人数据初始化的 speaker embedding 距离实际的目标说话人更近得多(见下图说话人空间2),学习难度小,此时合成声音的相似度就比较高。采用基于说话人特征信息的个性化语音合成,使得在20句条件下,依旧能够有较好的相似度。

说话人特征空间

Notebook最佳实践

首先我们从sample test female或者sample test male获得示例音频文件, 这里以 sample test male 为例。

解压完成后得到如下文件结构:

上传音频至Notebook

接着选择这些wav文件上传至Notebook

前置工作

安装最新版 tts-autolabel , 在Notebook中新建一个代码块,输入如下代码并运行

如果由于网络问题安装失败,可以尝试使用国内镜像源, 在Notebook中新建一个代码块,输入如下代码并运行

运行TTS-AutoLabel自动标注

首先在Notebook左侧新建TTS-AutoLabel工作文件夹 output training data , 然后在Notebook code block中输入如下代码并运行, 由于Notebook运行环境已经安装了 modelscope 和 tts-autolabel 此处可以直接导入。

Notebook运行TTS—AutoLabel自动标注数据

二十条音频标注时间大约30秒。标注完成后在 output training data 中可以获取音频对应的TTS训练数据。

基于PTTS-basemodel微调

获得标注好的训练数据后,我们进行模型微调,新建一个Notebook代码块,并输入如下代码运行

在Notebook中使用trainer微调模型

微调过程大概需要5分钟的时间,请耐心等待。

体验模型合成效果

使用上一步微调得到的模型合成音频,新建一个Notebook代码块, 输入以下代码

在Notebook中使用微调好的模型合成音频

点击播放控件即可体验合成音频。

KAN-TTS最佳实践

环境搭建

获取KAN-TTS源码, 后续操作默认在代码库根目录下执行

我们推荐使用Anaconda来搭建Python虚拟环境,使用以下命令创建(目前只兼容Linux x86系统):

拉取预训练模型

ModelScope中文个性化语音合成模型是达摩院语音实验室在1000多小时4000多人数据集上训练产出的预训练模型,我们以此为basemodel做后续微调。

使用git命令拉取模型,在拉取前,首先你需要安装git-lfs, 具体的安装教程见Git Large File Storage,安装完成后执行以下命令:

数据获取与自动标注

目前KAN-TTS个性化语音合成支持达摩院TTS标准数据格式和普通音频格式。

其中达摩院TTS标准数据格式,wav文件夹下存放了音频文件,prosody文件夹下的.txt文件对应的是音频文件的文本标注,interval文件夹下存放的是音素级别的时间戳标注,如下:

普通音频数据,不携带时间戳标注和prosody标注,如下:

快速开始**:你可以从ModelScope下载经过阿里标准格式处理的AISHELL-3开源语音合成数据集,用来进行后续操作。如果你只有普通音频格式的数据,那么可以采用PTTS Autolabel自动化标注工具进行格式转换,下面介绍使用Notebook 进行PTTS Autolable自动化标注的方式。

PTTS Autolable自动化标注

打开右上角的Notebook,上传sample test male的20条音频文件到目录如/mnt/workspace/Data/ptts spk0 wav下面

在Notebook的Jupyter中安装tts-autolabel

完成数据标注后,下载对应文件夹 /mnt/workspace/Data/ptts spk0 autolabel , 使用 KAN-TTS 的数据前处理脚本做训练前数据准备。

我们选择个性化语音合成配置文件进行特征提取操作,这里我们以提供的16k采样率为例kantts/configs/audio config se 16k.yaml

运行以下命令来进行特征提取,其中--speaker代表该数据集对应发音人的名称,用户可以随意命名。

个性化语音合成只需要20句目标说话人的语音,特征提取只需要运行一小段时间,提取完毕后你会在training stage/test male ptts feats目录下得到如下结构的文件:

至此数据准备工作就算完成了。

微调声学模型

KAN-TTS的训练脚本是配置驱动的,我们使用预训练模型中的speech personal sambert-hifigan nsf tts zh-cn pretrain 16k/basemodel 16k/sambert/config.yaml作为训练配置文件。

我们提供默认的PTTS 默认使用的finetune参数值,希望在basemodel的基础上继续微调一定步数并保存,即train max steps配置项。

完成上述必要的配置项修改后,我们就可以使用以下命令训练声学模型了:

体验微调模型效果

在声学模型微调完毕后,我们就可以使用产出的模型文件和预训练的声码器来合成语音了,在此之前需要做一些准备工作。

将我们想要合成的文本写入一个文件test.txt,每句话按行分隔,如下所示

运行以下命令进行合成,其中se file为特征提取环节抽取的speaker embedding,voc ckpt为basemodel 16k中的预训练模型:

完成后在res/test male ptts syn/res wavs文件夹下就可以获得合成结果

合成样音

原始录音

模型局限性以及可能的偏差

该发音人支持中文及英文混合,TN规则为中文

训练数据介绍

使用约4000个不同发音人,共计约1000小时数据训练, 主要为中文语料, 包含少量英文语料。

模型训练流程

模型所需训练数据格式为:音频(.wav), 文本标注(.txt), 音素时长标注(.interval), 个性化语音合成模型微调训练时间需要2~5分钟。

预处理

模型训练需对音频文件提取声学特征(梅尔频谱);音素时长根据配置项中的帧长将时间单位转换成帧数;文本标注,根据配置项中的音素集、音调分类、边界分类转换成对应的one-hot编号;

引用

如果你觉得这个该模型对有所帮助,请考虑引用下面的相关的论文:

本模型参考了以下实现

[1] ming024's FastSpeech2 Implementation

[2] jik876/hifi-gan

[3] kan-bayashi/ParallelWaveGAN

[4] mozilla/TTS

[5] espnet/espnet

优先采用原作者提供的中文模型卡片;仅有英文说明时由闲社AI翻译整理。重要参数、许可证和商用范围请以原文为准。

你将获得什么

完整仓库方式包含该固定版本中的权重、配置、分词器及说明文件;指定版本方式只下载所选文件或整组分片。多模态模型的投影文件、配置等依赖,请按作者说明配齐。

完整仓库可能包含多个权重格式,因此需要的磁盘空间可能大于单一格式的模型大小。下载文件不等于完成模型部署。

使用前须知

运行环境

运行模型需要的设备、工具与依赖,以原作者说明为准。

授权范围

是否允许商用、修改和分发,请查看模型许可证。

闲社提供资料与镜像下载方法,不代表已运行模型或完成安全审计。下载的代码应先检查,再执行。

返回顶部