【Datawhale组队学习:Sora原理与技术实战】语音AI

TTS

TTS(Text To Speech)是一种语音AI技术,其全称为“TEXT To 文本转语音”,顾名思义,它能够将书面文字信息智能地转化为可听的、流畅自然的人类语音输出。这项技术融合了语言学、心理学、声学、数字信号处理以及神经网络等多个学科领域的知识和成果。

TTS模型将接收到的文字数据进行解析和转换。这些算法模仿发音,包括对音节、韵律、重音和语调等语音特征的精细模拟,从而生成与真人语音极为相似的声音流。不仅如此,TTS模型还能够根据上下文调整语气和语速,确保合成语音具有丰富的表现力和高自然度,从而提升了人机交互的体验。

魔搭社区上开源了丰富的(72个)语音合成模型,除了中文外,还支持英语、德语、法语、韩语等多语言模型,以及支持上海话,四川话,粤语等方言生成。

TTS应用场景包括:智能客服,朗读,视频配音等多种业务场景,同时支持多情感语音合成,可以满足各种不同类型文案的合成需求。

个性化语音合成PTTS

个性化语音生成是做什么的。我们把个性化语音生成定义为,保持相同语义,变更说话人音色。而过去的声音定制对录音的环境,时长,标注都有比较高的要求。

通义实验室智能语音实验室在魔搭社区上开源了ModelScopeTTS的模型,录制20句话即可定制模型,finetune流程只需要10分钟。

模型链接:

自动标注模型

https://modelscope.cn/models/iic/speech_ptts_autolabel_16k/summary

个性化语音合成模型

https://modelscope.cn/models/iic/speech_personal_sambert-hifigan_nsf_tts_zh-cn_pretrain_16k/summary

TTS-AutoLabel是一个集成进入ModelScope的语音合成自动化标注工具,旨在降低数据标注门槛,

使开发者更便捷的定制个性化语音合成模型。

模型链接:

自动标注模型

https://modelscope.cn/models/iic/speech_ptts_autolabel_16k/summary

个性化语音生成GPT-Sovits

GPT-Sovits技术来源于由语音转换领域最有名的,上了2023年时代周刊前两百大发明的算法So-Vits。So-vits的原理可以很简单的抽象为编码器解码器结构。首先通过编码器去除音色,然后通过Vits解码器重建音频。

so-vits-svc开源地址:https://github.com/svc-develop-team/so-vits-svc

so-vits算法的一些特点:

VITS:文本前端+时长预测器->语义embedding->编解码后端->合成语音波形

SoVITS:波形->自监督语义embedding->编解码后端->合成语音波形

SoVITS:语义特征比文本更soft,不会强制要求输出为某个字,能更精准地表示某个时刻的音素信息

增加音高信息强制绑定,模型不需要预测音调,因此输出音调不会很奇怪

泄露输入源音色

仅需音频即可训练

GPT-SoVITS实践

下载代码仓

git clone https://github.com/RVC-Boss/GPT-SoVITS

准备目录

cd GPT-SoVITS
mkdir -p /root/GPT-SoVITS/GPT_SoVITS/pretrained_models
mkdir -p /root/GPT-SoVITS/tools/damo_asr/models
mkdir -p /root/GPT-SoVITS/tools/uvr5

下载模型

cd /root/GPT-SoVITS/GPT_SoVITS/pretrained_models
git clone https://www.modelscope.cn/AI-ModelScope/GPT-SoVITS.git
cd /root/GPT-SoVITS/tools/damo_asr/models
git clone https://www.modelscope.cn/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch.git
git clone https://www.modelscope.cn/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch.git
git clone https://www.modelscope.cn/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch.git
cd /root/GPT-SoVITS/tools/uvr5
rm -rf /root/GPT-SoVITS/tools/uvr5/uvr5_weights
git clone https://www.modelscope.cn/AI-ModelScope/uvr5_weights.git
git config core.sparseCheckout true
mv /root/GPT-SoVITS/GPT_SoVITS/pretrained_models/GPT-SoVITS/* /root/GPT-SoVITS/GPT_SoVITS/pretrained_models/

安装

pip install ipykernel
sed -i '10s/False/True/' /root/GPT-SoVITS/config.py
cd /root/GPT-SoVITS/
pip install gradio==3.38.0

启动webui

python  webui.py

运行效果

使用KAN-TTS合成女生沪语音频

Sambert-Hifigan模型介绍

拼接法和参数法是两种Text-To-Speech(TTS)技术路线。近年来参数TTS系统获得了广泛的应用,故此处仅涉及参数法。

参数TTS系统可分为两大模块:前端和后端。 前端包含文本正则、分词、多音字预测、文本转音素和韵律预测等模块,它的功能是把输入文本进行解析,获得音素、音调、停顿和位置等语言学特征。 后端包含时长模型、声学模型和声码器,它的功能是将语言学特征转换为语音。其中,时长模型的功能是给定语言学特征,获得每一个建模单元(例如:音素)的时长信息;声学模型则基于语言学特征和时长信息预测声学特征;声码器则将声学特征转换为对应的语音波形。

系统结构:

声学模型SAM-BERT

后端模块中声学模型采用自研的SAM-BERT,将时长模型和声学模型联合进行建模

1. Backbone采用Self-Attention-Mechanism(SAM),提升模型建模能力。
2. Encoder部分采用BERT进行初始化,引入更多文本信息,提升合成韵律。
3. Variance Adaptor对音素级别的韵律(基频、能量、时长)轮廓进行粗粒度的预测,再通过decoder进行帧级别细粒度的建模;并在时长预测时考虑到其与基频、能量的关联信息,结合自回归结构,进一步提升韵律自然度.
4. Decoder部分采用PNCA AR-Decoder[@li2020robutrans],自然支持流式合成。

声码器模型

后端模块中声码器采用HIFI-GAN, 基于GAN的方式利用判别器(Discriminator)来指导声码器(即生成器Generator)的训练,相较于经典的自回归式逐样本点CE训练, 训练方式更加自然,在生成效率和效果上具有明显的优势。

在HIFI-GAN开源工作[1]的基础上,我们针对16k, 48k采样率下的模型结构进行了调优设计,并提供了基于因果卷积的低时延流式生成和chunk流式生成机制,可与声学模型配合支持CPU、GPU等硬件条件下的实时流式合成。

KAN-TTS代码仓

https://github.com/alibaba-damo-academy/KAN-TTS

使用模型

语音合成-上海话-通用领域-16k-发音人xiaoda 模型地址

https://modelscope.cn/models/speech_tts/speech_sambert-hifigan_tts_xiaoda_WuuShanghai_16k

环境准备

创建conda环境

 cd KAN-TTS
 conda create -n kantts python=3.10

激活环境,前面通过environment.yml文件安装的环境名为maas

conda activate kantts

安装torch

pip install torch torchvision torchaudio

安装依赖

pip install autopep8
pip install pre-commit
pip install modelscope
pip install matplotlib
pip install librosa
pip install ttsfrd --find-links https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
pip install unidecode
pip install inflect
pip install pytorch_wavelets
pip install PyWavelets
pip install tensorboardX

克隆代码仓

git clone https://github.com/alibaba-damo-academy/KAN-TTS

代码脚本(demo.py)

from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

def read_text_file(filename):
    with open(filename, 'r', errors='ignore') as file:
        text = file.read()
        cleaned_text = ''.join(text.split()).strip()
        return cleaned_text

# 使用方法
text = read_text_file('文件名.txt')
model_id = 'speech_tts/speech_sambert-hifigan_tts_xiaoda_WuuShanghai_16k'
sambert_hifigan_tts = pipeline(task=Tasks.text_to_speech, model=model_id)
output = sambert_hifigan_tts(input=text)
wav = output[OutputKeys.OUTPUT_WAV]
with open('output.wav', 'wb') as f:
    f.write(wav)

运行脚本

python demo.py

KAN-TTS训练

目前仅支持Linux使用,暂不支持Windows及Mac使用。 请结合KAN-TTS代码进行finetune。具体使用方法参考:

sambert训练教程

hifigan训练教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值