kantts底膜训练篇-----个性化模型底膜训练

我是kantts群里的老友了,群里有很多热心肠的人安念、马静等很多老哥,还有群主格真、渡航等开源作者的支持。在里面摸爬滚打了3天,现在才能出这个教程。

因为kantts多年没维护了,只有简单的运行教程,很多深入的,比如底膜训练这些,目前没有教程。这些就得靠问。经过我测试,以及问,最终得到了以下完整的教程。


为什么训练底膜?

因为kantts的英文效果不好,是底膜数据量太少导致的。

下面给不懂的网友解释一下几个概念

底膜:是多个人大量数据训练而成的模型,主要是来识别人声和语言的发音

预训练模型:在底膜基础上进行再次少量训练,用于后面推理合成新声音的模型

声码器和声学模型是什么?

在kantts中

声码器是voc---也叫HifiGAN

声学模型是am---也叫Sambert

你在tts里面以及教程里面看到都是这个意思,一定要熟记。

am就是人的发音,voc就是把发音转成梅尔图。

解释:梅尔图就是一张图,里面就是声波的高低,如果和原声生成的图越像则说明声音越像。

基本概念

哪些配置很重要,如何替换?

预训练微调代码里有个model_id,这个指向的就是你训练好的底膜

声码器训练的教程

training_sambert · alibaba-damo-academy/KAN-TTS Wiki · GitHub




 

训练出来的结果就是

你只有ckpt,config.yml这些东西。

预训练weitiao(basemodel_weitiao.py)的逻辑得知道,这样你才能改。

底膜就是model_id,所以只用改model_id就行

执行weitiao后, 代码中的model_id指向目录,里面只有configuration.json和resource.zip有用,他会根据configuration.json去找。

resouce.zip是固定的,假设你选择的配置文件是16k.yml训练,那么就去对应的modelscopoe的模型文件里面下载就行了

configuration.json的修改地方

如果你用他的,那就是F7,用自己的改成voice_name,注意想用他的声码器,他就必须F7

否则就要自己练个声码器,声码器参考HifiGAN模型

config.yml的修改地方

因为你用了别人的声码器,你就必须保持一致也用F7

然后就没啥注意的了。

模型是ckpt

另外没有保存的模型默认是-,如果启动可能报错ckpt,最好不要用没有自动保存的,这种直接删除就行。ckpt没有保存的里面是缺东西的,合成和再次训练都会报错。

正式操作

前提是你环境已经安装好了,环境就拉镜像

克隆音-自用教程-CSDN博客

SambertHifigan个性化语音合成-中文-预训练-16k

底膜训练

我们合成用的是多人预训练个性化模型,他对应的参数是

config要选择含se的

1.上传多人(底膜训练数据)音频,进行切分,切分成8秒以下的

给定输入目录,和输出目录

执行python run.py(这是我自己的改的脚本)

地址:对音频切分成小音频(机器学习用)_我要用代码向我喜欢的女孩表白的博客-CSDN博客

2.对切分好的音频进行标注

给定输入目录(这层的输入目录是上一层的输出目录),给定输入目录

执行python run_auto_label.py (这个是modelsope的脚本,我已经放到容器里了)

3.执行数据处理(这一步用源码执行)

给定输入目录,输出目录

这里要修改源码.否则会报错no import sys,还有一个是没有se.model

改KAN-TTS/kantts/preprocess/data_process.py

加一个import sys

改KAN-TTS/kantts/preprocess/se_processor/se_processor.py

se_processor.py

defalut="speaker_embedding/se.model" ---改成这个

这个文件的地址要自己下载下来,去官网的模型文件里下载,如下图

运行

python kantts/preprocess/data_process.py --voice_input_dir YOUR_DATA_PATH --voice_output_dir OUTPUT_DATA_FEATURE_PATH --audio_config AUDIO_CONFIG_PATH --speaker YOUR_SPEKER_NAME

AUDIO_CONFIG_PATH用目录中的audio_config_se_16k.yaml 代表的是个性化多人底膜,否则后面用多人模型推理的时候会出线宽度不一致的问题。

这个YOUR_SPEAKER_NAME我写的是F7,就不用改,你也可以改成别的,默认modelscopoe里面合成的代码是F7,改完之后,你合成的时候记得也要改成对应的。

4.执行训练(也是用源码)

因为我们这个底膜训练是训练的声学模型,声学模型是am,也就是sambert

配置文件选择sambert_se_nsf_global_16k.yaml(改一下这个)

建议修改一下这个配置文件,因为这个保存的太频繁了,100step就保存一次模型,等训练几百万部磁盘肯定是不够的。我们设置每20000次保存一次模型。弄好之后建议把其他旧的模型给删掉,否则每训练一个人他会复制之前保存过的旧模型,就会指数级增大。


CUDA_VISIBLE_DEVICES=0 python kantts/bin/train_sambert.py --model_config YOUR_MODEL_CONFIG  --root_dir OUTPUT_DATA_FEATURE_PATH --stage_dir TRAINING_STAGE_PATH

然后等待个2天.... 把训练停止

5.修改底膜文件夹

经过我们的训练后,DiMoSe里面的声学模型训练好了,这里面只有声学相关的,此时还不能用,我们要把训练好的声码器模型也放进来,并且把格式变成和从网上下载来的(speech_personal_sambert-hifigan_nsf_tts_zh-cn_pretrain_16k)类似文件夹层级,这样就可以不用改modelscpoe合成的代码,等会可以直接推理。

复制speech_personal_sambert-hifigan_nsf_tts_zh-cn_pretrain_16k的

resource.zip、configuration.json、basemodel_16k到这个目录下。

如果你修改了名称的话,configuration.json中的名称你也要修改。没有修改的话就默认F7

然后将你训练好ckpt替换basemodel_16/sambert目录的ckpt,并且替换config.yml文件

(本质就是替换底膜的am模型)

说明:

resource.zip

configuration.json 是后面以此为底膜而训练的模型的model_id的指向位置

basemodel_16就是底膜相关的模型,要替换的部分。

测试声学模型底膜

1.上传单人要训练的数据,切分成8秒以下的

2.音频标注

和上面一样

3.用modelscope的预训练进行训练

修改微调的代码basemodel_weitiao.py(modelscope)

将pretrained_model_id的地址指向你刚刚合成好的底膜文件夹

改你要训练人的输入目录和输出目录

然后用执行

python basemodel_weitiao.py

然后得到了一个模型,将这个模型文件夹放过去(这里已经在底膜训练中,把底膜格式封装好了,所以不用改代码)

微调后合成就行了,model_dir改成预训练后就行了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/125164.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】Java连接redis进行数据访问及项目的实例应用场景

目录 一、连接 二、数据访问 1. 字符串(String) 2. 哈希(Hash) 3. 列表(List) 4. 集合(Set) 三、项目应用 1. 作用 2. 实例 一、连接 打开开发工具( IDEA ) ,在需要连接Redis的项目中,找到 pom.xml 配置文件导入依赖 在pom.xml 配置文件中导入以…

【LeetCode力扣】42.接雨水(困难)

目录 1、题目介绍 2、解题 2.1、解题思路 2.2、图解说明 2.3、解题代码 1、题目介绍 原题链接:42. 接雨水 - 力扣(LeetCode) 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,…

【Go 编程实践】从零到一:创建、测试并发布自己的 Go 库

为什么需要开发自己的 Go 库 在编程语言中,包(Package)和库(Library)是代码组织和复用的重要工具。在 Go 中,包是代码的基本组织单位,每个 Go 程序都由包构成。包的作用是帮助组织代码&#xf…

学习笔记|构建一元线性回归模型|方差分析|方差齐性|检验残差正态性|规范表达|《小白爱上SPSS》课程:SPSS第二十讲: 一元线性回归分析怎么做?

目录 学习目的软件版本原始文档一元线性回归分析一、实战案例二、统计策略三、SPSS操作四、结果解读第一个表格为模型摘要第二表格为方差分析表第三个表格为模型系数第四张散点图(主要检验方差齐性) 第五张直方图和P-P图(检验残差正态性&…

计算机毕设 基于大数据的股票量化分析与股价预测系统

文章目录 0 前言1 课题背景2 实现效果3 设计原理QTChartsarma模型预测K-means聚类算法算法实现关键问题说明 4 部分核心代码5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕…

单通道低压 H 桥电机驱动芯片AT9110H 兼容L9110 马达驱动芯片

H桥直流电机驱动电路是一种用于控制直流电机运转的电路,其主要特点是可以实现正反转控制,控制电机转速和方向,同时也具有过流保护功能。 H桥电路由四个功率晶体管和一些辅助电路组成,其中两个晶体管用于控制电机正转,…

【Mysql】去重(distinct)

目录 distinct 单字段 多字段 统计( count ) distinct name为张三的有5条数据并且重复 单字段 语法: select distnct 字段名 from 表 这里的去重并不是删掉重复 多字段 select distinct 字段名1,字段名2 from 表 统计( coun…

java通过FTP跨服务器动态监听读取指定目录下文件数据

背景: 1、文件数据在A服务器(windows)(不定期在指定目录下生成),项目应用部署在B服务器(Linux); 2、项目应用在B服务器,监听A服务器指定目录,有新…

【vue会员管理系统】篇五之系统首页布局和导航跳转

一、效果图 1.首页 2.会员管理&#xff0c;跳转&#xff0c;跳其他页面也是如此&#xff0c;该页的详细设计会在后面的章节完善 二、代码 新增文件 components下新增文件 view下新增文件&#xff1a; 1.componets下新建layout.vue 放入以下代码&#xff1a; <template…

学术论文的实证数据来源

一、引言 在当今的学术研究中&#xff0c;数据是至关重要的。无论是自然科学、社会科学还是人文科学&#xff0c;都需要借助数据来支撑和证明其研究假设和理论。然而&#xff0c;数据的来源却是多种多样的&#xff0c;而且不同的学科领域也有其特定的数据来源。本文旨在探讨论文…

30道高频Vue面试题快问快答

※其他的快问快答&#xff0c;看这里&#xff01; 10道高频Qiankun微前端面试题快问快答 10道高频webpack面试题快问快答 20道高频CSS面试题快问快答 20道高频JavaScript面试题快问快答 30道高频Vue面试题快问快答 面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过…

linux 操作系统

先讲一下叭&#xff0c;自己学这的原因&#xff0c;是因为我在做项目的时候使用到啦Redis&#xff0c;其实在windows系统上我其实也装啦Redis上&#xff0c;但是我觉得后期在做其他的项目的时候可能也会用到这个然后就想着要不先学学redis&#xff0c;然后在后面也不至于什么都…

国标28181-2022检测内容GB28181-2022检测内容

目前国标28181-2022平台全项检测一共181项&#xff0c;总的检测相对2016版本要复杂很多&#xff0c;增加了一些比较重要的功能,下面列举下检测项(qq 123011785):

求臻医学MRD产品喜获北京市新技术新产品(服务)证书

近日&#xff0c;北京市科学技术委员会、中关村科技园区管理委员会、北京市发展和改革委员会等五大部门联合公示了2023年度第一批&#xff08;总第十八批&#xff09;北京市新技术新产品&#xff08;服务&#xff09;名单。凭借领先的技术能力、产品创新能力及质量可靠性等优势…

2023最新版本 FreeRTOS教程 -9-互斥量(基本使用和解决优先级反转)

互斥量是一种特殊的二进制信号量 使用场景1 &#xff08;互斥访问&#xff09; 外设的独立访问 如打印 协议操作 使用场景2 解决优先级反转 外设的独立访问 如打印 协议操作 使用场景2 解决优先级反转 我们以较为复杂的场景2来分析 -1- 创建三个任务 优先级从低到高&…

【教学类-40-03】A4骰子纸模制作3.0(6.5CM嵌套+记录表)

作品展示 背景需求 骰子2.0&#xff08;7字形&#xff09;存在幼儿不会“包边”的问题&#xff0c;求助老师帮忙示范&#xff0c;最后累的还是老师 1.0版本&#xff0c;边缘折线多&#xff0c;幼儿剪起来费力。 2.0版本&#xff0c;边缘折线多&#xff0c;幼儿剪起来费力。&a…

【ChatGLM2-6B】小白入门及Docker下部署

【ChatGLM2-6B】小白入门及Docker下部署 一、简介1、ChatGLM2是什么2、组成部分3、相关地址 二、基于Docker安装部署1、前提2、CentOS7安装NVIDIA显卡驱动1&#xff09;查看服务器版本及显卡信息2&#xff09;相关依赖安装3&#xff09;显卡驱动安装 2、 CentOS7安装NVIDIA-Doc…

“产业大数据”助推园区实现可持续发展!

​产业园区在现代经济体系中扮演着重要角色&#xff0c;不仅是地方经济的重要支柱&#xff0c;更是企业发展的舞台。产业园区要想实现可持续的长远发展&#xff0c;不仅需要不断的招引优质企业入驻&#xff0c;更要时刻关注园内的企业&#xff0c;培育有潜力的企业&#xff0c;…

华为OD机试 - 最优策略组合下的总的系统消耗资源数(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明4、思路 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷…

FPGA时序分析与约束(10)——生成时钟

一、概述 最复杂的设计往往需要多个时钟来完成相应的功能。当设计中存在多个时钟的时候&#xff0c;它们需要相互协作或各司其职。异步时钟是不能共享确定相位关系的时钟信号&#xff0c;当多个时钟域交互时&#xff0c;设计中只有异步时钟很难满足建立和保持要求。我们将在后面…