语音合成

语音合成
简介

语音合成技术的本质是将文本信息转化成语音信息,如果我们要将这句文本信息变成语音信息,首先需要在语音合成数据库里面挑选出这句文本信息所包含的元素,挑选完元素之后将这些元素按照一定的顺序组合排列,最后再输出我们想要合成的那句语音信息。语音合成的原理是将输入文本分析得到的信息,从预先录制和标注好的语音库中挑选合适的单元,进行少量的调整(也可以不进行调整),然后拼接得到最终的合成语音,其中用来进行单元挑选的信息可以是前端分析得到的韵律文本,也可以是生成的声学参数(比如基频、时长和谱参数),或者两者兼有。

​ 语音合成的方法主要分为三类:波形合成法、参数合成法和规则合成法。

​ 波形合成法是对波形进行编码或编辑。 波形合成法是相对简单,通常只能合成有限词汇的语音段。 波形合成法一般有两种形式,一种是波形编码合成,它类似于语音编码中的波形编解码方法,该方法直接把要合成的语音发音波形进行存储,或者进行波形编码压缩后存储,合成重放时再解码组合输出。另一种是波形编辑合成,它把波形编辑技术用于语音合成,通过选取音库中采取自然语言的合成单元的波形,对这些波形进行编辑拼接后输出。

​ 参数合成法是从数字信号处理,统计学等角度,对声码器提取的声学特征参数进行统计建模,然后把模型预测得到的声学特征参数输入声码器完成语音合成。传统参数语音合成方法是基于统计学习和决策树的隐马尔科夫-高斯混合模型 (HMM)。 HMM 对声音特征的适应性和鲁棒性高、需要较小的计算代价和在训练数据较少的时候有更好的表现等诸多优点,使其长期成为语音合成方法的主流技术。

​ 规则合成法通过语音学规则产生语音。 合成的词汇表不是事先确定,系统中存储的是最小的语音单位的声学参数,以及由音素组成音节、由音节组成词、由词组成句子和控制音调、轻重音等韵律的各种规则。 给出待合成的文本数据后,合成系统利用规则自动地将他们转换成连续的语音声波。

​ 本节使用的语音合成算法为VITS,VITS是一种结合变分推理(variational inference)、标准化流(normalizing flows)和对抗训练的高表现力语音合成模型。VITS通过隐变量而非频谱串联起来语音合成中的声学模型和声码器,在隐变量上进行建模,从而消除两个模型之间的不匹配问题,实现真正意义的端到端语音合成。VITS的好处是VAE擅长捕捉句子整体的韵律特征,而Flow擅长重建音频的细节特征;将两者整合,进行多任务训练,实现参数与优势共享。

硬件平台
机器硬件:OriginBot(导航版/视觉版)
PC主机:Windows(>=10)/Ubuntu(>=20.04)
扩展硬件:X3语音版

操作步骤
用VITS算法训练模型

本次VITS的训练教程根据你的电脑的版本选择,本实验以windows训练单人数据集为例。首先是前期准备工作:

​ 1、安装Conda来搭建Python虚拟环境。Conda官网

​ 2、下载音频处理软件(包括Au或者类似软件都可以)

​ 首先准备数据集,选择希尔贝壳语音数据库(也可以自己选择其他数据集)。进入官网下载数据集。AISHELL-3是由北京贝壳科技有限公司发布的大规模高保真多说话人普通话语音语料库。它可用于训练多说话者文本到语音 (TTS) 系统。该语料库包含大约 85 小时的情感中性录音,由 218 位以中文普通话为母语的人所说,总共 88035 条话语。他们的辅助属性,如性别、年龄组和本地口音在语料库中被明确标记和提供。因此,汉字级别和拼音级别的成绩单与录音一起提供。通过专业的语音标注和严格的声调韵律质检,字音转写准确率在98%以上。

​ 通过git项目下载,如果没有git,进入VITS项目网站下载

git clone https://github.com/CjangCjengh/vits.git

​ 进入下载的VITS项目,删除所有文件,新建list.txt,list_val.txt。文件编码必须是UTF-8。
然后需要对音频进行处理,音频要求:无背景音(自行搜索如何去背景音、去噪、去BGM)、吐字清晰、无明显情感波动、语速适中、音量大小均衡。如果不符合要求将会影响训练出的模型质量。 使用Au(或者其他音频处理软件)处理数据集的音频(格式请严格处理为单声道、22050Hz,PCM 16bit)。

​ 接下来进行音频的分割处理,下载audio-slicer项目,使用Conda虚拟环境进行处理:
conda create -n slicer python=3.7
conda activate slicer

#进入audio-slicer安装相关依赖,如果出现依赖冲突,可以自行选择版本命令安装或者按需修改pip install -r requirements.txt#将Au处理过的音频移动到当前目录python slicer.py 这里填你命名的文件

然后将分割后的文件(不包括原文件)移动到前面的wavs目录,然后进行文本整理,打开filelists目录中的list.txt(训练集)和list_val.txt(验证集)。

关于数据量,个人建议训练集五百条十秒长的语音起步,越多更好;验证集大概为训练集十分之一左右,另外,两个txt文件都必须不带任何空行,末尾也不可以,否则后面预处理会报错out of range。

​ 文件的处理可以参考一下简单的python脚本来处理,这里以希尔贝壳语音数据集的处理为例:

点击语音合成 - 古月居可查看全文

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣992.K个不同整数的子数组

力扣992.K个不同整数的子数组 atmostK()函数求最多K个不同字符的子串数量 则本题 恰好K个 可以转化成 最多K个 – 最多K–1个 class Solution {public:int atMostK(vector<int> nums,int k){int n nums.size();unordered_map<int,int> cnt;int res0;for(int i0…

张大哥笔记:经济下行,这5大行业反而越来越好

现在人们由于生活压力大&#xff0c;于是就干脆降低自己的欲望&#xff0c;只要不是必需品就不买了&#xff0c;自然而然消费也就降低了&#xff0c;消费降级未必是不好的现象&#xff01; 人的生物本能是趋利避害&#xff0c;追求更好的生存和发展空间&#xff0c;回避对自己有…

在线渲染3d怎么用?3d快速渲染步骤设置

在线渲染3D模型是一种高效的技术&#xff0c;它允许艺术家和设计师通过互联网访问远程服务器的强大计算能力&#xff0c;从而加速渲染过程。无论是复杂的场景还是高质量的视觉效果&#xff0c;在线渲染服务都能帮助您节省宝贵的时间。 在线渲染3D一般选择的是&#xff1a;云渲染…

生成式人工智能 - 本地windows 11 + PyCharm运行stable diffusion流程简述

一、环境说明 硬件:本地电脑windows11、32.0 GB内存、2060的6G的卡。 软件:本地有一个python环境,主要是torch 2.2.2+cu118 二、准备工作 1、下载模型 https://huggingface.co/CompVishttps://huggingface.co/CompVis 进入上面的网址,我这里下载的是这个里面的 …

Laravel 获取富文本中的所有图片

Laravel 获取富文本的纯文本内容-CSDN博客 Laravel 富文本内容里面的图片添加前缀URL-CSDN博客 Laravel 富文本图片的style样式删除-CSDN博客. preg_match_all(/<img[^>]src"([^">])"/, $data->analysis, $matches); $images $matches[1]; retu…

雷电模拟器中控实现,直通源码

目录 前言 开发 需求 初始环境 UI搭建 功能实现 前言 本篇为易语言雷电模拟器中控项目实现操作&#xff0c;一般用于&#xff1a;脚本开发多线程模拟操作等起始模板框架&#xff0c;使用易语言原因为其前后端一体化&#xff0c;对于脚本开发而言更为方便。 开发 需求 以…

C语言详解(联合和枚举)

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习笔记&#xff0c;在这里撰写…

C++ 标准库string

常用函数 函数名说明at 、[]获取单个字符append追加字符串insert插入字符串length、size字符长度empty返回布尔值&#xff0c;判断是否字符串为空capacity字符串容量reserve预分配内存&#xff0c;至少保证能容纳n个字符而不必重新分配find字符串查找replace字符串替换resize改…

论文阅读KAN: Kolmogorov–Arnold Networks

学习了最近大热的KAN网络 论文地址&#xff1a;https://arxiv.org/pdf/2404.19756 按我个人读论文的习惯总结了如下几点&#xff1a; 1&#xff0c;背景&#xff1a; 1&#xff09;灵感来源&#xff1a;于Kolmogorov-Arnold表示定理&#xff0c;也就是多变量连续函数可以表…

【html】网页设计语言制作竟然是文科?

网页设计与制作可能偏文科&#xff0c;并认为它相对于其他编程语言来说更容易理解&#xff0c;这是一个很有意思的观点。实际上&#xff0c;HTML&#xff08;超文本标记语言&#xff09;作为网页设计与制作的基础&#xff0c;确实具有一些特点&#xff0c;使其在某种程度上更易…

【JavaScript脚本宇宙】创造声音的魔法:深入了解Web音频处理库

聆听创意可能性&#xff1a;解锁Web音频库的神奇功能 前言 在Web开发中&#xff0c;处理音频是一个重要且常见的需求。许多JavaScript库和框架旨在简化音频处理和交互式音乐的创建过程。本文将探讨几个流行的Web音频库&#xff0c;介绍它们的概述、主要特性、使用示例以及适用…

【人工智能】第七部分:ChatGPT的未来展望

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

Java基础 - 异常处理

异常处理 异常处理用于处理程序执行过程中可能出现的错误或异常情况。 检查性异常&#xff1a; 这类异常通常使用 try-catch 块来捕获并处理异常&#xff0c;或者在方法声明中使用 throws 子句声明方法可能抛出的异常。 运行时异常&#xff1a; 这些异常在编译时不强制要求…

LeetCode | 1624.两个相同字符之间的最长子字符串

这道题拿到手想法就是去双重遍历暴力解&#xff0c;对于每个字符&#xff0c;从后往前遍历字符串&#xff0c;找到从后往前一直到本次遍历的这个字符串这段子串中和这个字符串相同的字符位置&#xff0c;然后得到子字符串的长度&#xff0c;和ans存储的值做一个比较&#xff0c…

副业赚钱:10个简单创意,轻松实现财务自由

嗨&#xff0c;我是兰若姐姐&#xff0c;我是从4月26号开始日更博客的&#xff0c;之前一直分享的是技术文档&#xff0c;但是在这个过程中&#xff0c;我发现这些文档只是解决了某一个人当下遇到的某个具体问题&#xff0c;但是对于他升值加薪没有任何帮助&#xff0c;所以我中…

GameDriver XR测试自动化工具概述

GameDriver XR是一个测试自动化工具&#xff0c;它主要用于扩展和自动化跨现实&#xff08;Extended Reality&#xff0c;简称XR&#xff09;应用的测试。XR是一个总括性术语&#xff0c;包括增强现实&#xff08;AR&#xff09;、虚拟现实&#xff08;VR&#xff09;和混合现实…

Linux入门学习(2)

1.相关复习新的指令学习 &#xff08;1&#xff09;我们需要自己创建一个用户&#xff0c;这个用户前期可以是一个root用户&#xff0c;后期使用创建的普通用户 &#xff08;2&#xff09;文件等于文件内容加上文件属性,对于文件的操作就包括对于文件内容的操作和文件属性&…

论文Compiler Technologies in Deep Learning Co-Design: A Survey分享

目录 标题摘要引言背景深度学习软件和硬件的发展不同时期的协同设计深度学习协同设计系统神经网络架构设计和优化协同设计技术 用于协同设计的深度学习系统中的编译技术深度学习编译器TVM 生态系统和MLIR生态系统IR转换和优化代码生成运行时和执行模式 Buddy-Compiler: 一个针对…

如何在 iPhone 上恢复已删除的短信

本文介绍如何检索已删除的短信和 iMessage 以及恢复丢失的消息。说明适用于 iOS 17 及更高版本。 如何在 iOS 17及更高版本中恢复文本 恢复已删除短信的最简单方法是使用 iOS 17。从删除短信到恢复它有 30 到 40 天的时间。 在“信息”的对话屏幕中&#xff0c;选择“过滤器”…

梯度提升决策树(GBDT)

GBDT&#xff08;Gradient Boosting Decision Tree&#xff09;&#xff0c;全名叫梯度提升决策树&#xff0c;是一种迭代的决策树算法&#xff0c;又叫 MART&#xff08;Multiple Additive Regression Tree&#xff09;&#xff0c;它通过构造一组弱的学习器&#xff08;树&am…