ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

PaddleSpeech ERNIE-SAT 语音-文本联合预训练实战:基于 VCTK 的语音编辑与个性化语音合成全链路解析

PaddleSpeech ERNIE-SAT 语音-文本联合预训练实战:基于 VCTK 的语音编辑与个性化语音合成全链路解析 人工智能语音音频NLP媒体生成【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/paddlepaddle/PaddleSpeech点击查看免费下载本文围绕 PaddleSpeech 仓库中examples/vctk/ernie_sat/目录下的 ERNIE-SAT 示例文档展开系统讲解如何在 VCTK 数据集上完成从数据预处理、模型训练到语音合成与语音编辑的完整闭环。读完本文你将掌握 ERNIE-SAT 语音-文本联合掩码学习joint mask learning框架的核心设计、conf/default.yaml中各关键配置项的含义、run.sh各 stage 的底层脚本调用链以及如何利用预训练模型完成 speech editing 与个性化语音合成的端到端推理。一、ERNIE-SAT语音-文本联合预训练框架ERNIE-SAT 是一个语音-文本联合预训练框架其目标是在同一模型中同时对语音特征和文本音素建模从而支撑跨语言多说话人语音合成、跨语言语音编辑以及个性化语音合成、声音克隆等场景。相对传统 TTS 方案ERNIE-SAT 提出两点关键创新引自 README跨语言、个性化的软音素映射soft phoneme mapping预训练过程中以中文和英文音素作为输入使音素空间在跨语言、跨说话人之间建立对齐语音与文本的联合掩码学习joint mask learning通过在语音帧和音素两个序列上同时做掩码建模实现语音-文本的对齐而无需依赖 CTC 等显式对齐工具。从源码结构看这一设计体现在模型实现 ernie_sat.py 中输入层支持sega_mlm类型即 default.yaml 中的enc_input_layer: sega_mlm配套的MaskInputLayer用一个可学习的mask_feature参数替换被掩码位置的特征MLMEncoder则是基于 Conformer 结构、带相对位置编码legacy_rel_selfattn、legacy_rel_pos的编码器。文本侧与语音侧共享同一套 Encoder-Decoder 框架通过联合掩码实现音素序列到声学特征的对齐预测。本示例在 VCTK英文多说话人数据集上训练--source_lang与--target_lang均设为en即可复现跨语言合成/编辑能力中英→英的部分。二、数据集准备VCTK 与 MFA 强制对齐结果2.1 下载 VCTK-0.92VCTK-0.92 需从其官方数据源下载并解压至~/datasets最终目录结构为~/datasets/VCTK-Corpus-0.92。2.2 获取 MFA 强制对齐durations结果ERNIE-SAT 训练 FastSpeech2 风格的时长信息依赖 MFAMontreal Forced Aligner 的 textgrid 对齐结果官方提供的 mfa 示例 可作为自行训练的参考。仓库提供了预生成的vctk_alignment.tar.gz可直接下载解压后假定路径为./vctk_alignment。需要说明的一个细节VCTK-0.92 中有 3 个说话人被剔除见 mfa 示例中的 reorganize_vctk.pyp315没有对应文本p280和p362缺少质量更好的*_mic2.flac录音仅有*_mic1.flac。因此实际使用的说话人集合比原始 VCTK 少 3 人。三、数据预处理从 textgrid 到归一化特征3.1 run.sh 的 stage 机制run.sh 通过stage/stop-stage参数控制执行区间默认stage0、stop_stage100表示全流程执行共 4 个 stagestage内容调用的脚本0数据预处理./local/preprocess.sh ${conf_path}1模型训练CUDA_VISIBLE_DEVICES${gpus} ./local/train.sh ${conf_path} ${train_output_path}2从metadata.jsonl合成波形HiFiGAN 声码器./local/synthesize.sh3端到端语音合成与语音编辑./local/synthesize_e2e.shrun.sh中的关键默认值conf_pathconf/default.yaml、train_output_pathexp/default、ckpt_namesnapshot_iter_199500.pdzGPU 默认为 0~7 共 8 卡。若只想执行单个 stage例如仅预处理运行./run.sh --stage 0 --stop-stage 03.2 预处理流水线细节preprocess.sh 内部又细分为 4 个子步骤从 MFA 结果生成时长文件调用 gen_duration_from_textgrid.py以--inputdir./vctk_alignment读取 textgrid按配置采样率换算出durations.txt特征抽取调用 ${BIN_DIR}/preprocess.py即 paddlespeech/t2s/exps/ernie_sat/preprocess.py参数--datasetvctk --rootdir~/datasets/VCTK-Corpus-0.92/ --dumpdirdump --dur-filedurations.txt --num-cpu20 --cut-silTrue其中--cut-silTrue表示切分端点静音统计量计算调用 compute_statistics.py对dump/train/raw/metadata.jsonl中speech字段计算均值/标准差保存为dump/train/speech_stats.npy归一化与词表映射调用 normalize.py分别对 train/dev/test 三个分区的 raw 特征用训练集的统计量归一化并生成phone_id_map.txt与speaker_id_map.txt两个映射表。预处理完成后的dump目录结构如下dump ├── dev │ ├── norm │ └── raw ├── phone_id_map.txt ├── speaker_id_map.txt ├── test │ ├── norm │ └── raw └── train ├── norm ├── raw └── speech_stats.npytrain、dev、test三个分区各自包含norm与raw子目录raw存放每条语句的原始声学特征norm存放归一化后的特征归一化统计量统一来自训练集dump/train/*_stats.npy。每个子目录中还有metadata.jsonl这是一个表格式文件记录每条语句的音素序列、text_lengths、speech_lengths、durations、特征路径、说话人与 id。四、配置文件解读conf/default.yamldefault.yaml 是训练的核心配置。注释中明确说明该配置在 8 张 80GB 显存的 A100 上验证约需 2 天完成训练资源受限时可调整batch_size、num_workers以及local/train.sh中的--ngpu。4.1 特征提取参数参数值说明fs24000采样率VCTK 原始为 48kHz配置按 24kHz 处理n_fft2048FFT 大小n_shift300跳帧步长约 12.5mswin_length1200窗长约 50ms窗口函数为hannfmin/fmax80 / 7600Mel 频带上下限n_mels80Mel 维度4.2 ERNIE-SAT 预训练专属参数两个直接体现联合掩码学习思想的参数mean_phn_span: 8音素平均覆盖的语音帧跨度用于音素-语音帧对齐建模mlm_prob: 0.8掩码语言模型Mask LM的掩码概率。4.3 模型结构参数编码器与解码器均为 Conformerencoder_type: conformer、decoder_type: conformer隐藏维度 384、注意力头 2、前馈层 1536、层数 4使用 Macaron 风格前馈、swish 激活、相对位置编码与相对位置注意力输入层enc_input_layer: sega_mlm即语音侧掩码输入。此外postnet_layers: 5 / postnet_filts: 5 / postnet_chans: 256定义了 Tacotron2 风格的 Postnet 结构。4.4 优化与训练参数scheduler_params.d_model: 384、warmup_steps: 4000Noam 式学习率调度的维度与预热步数grad_clip: 1.0梯度裁剪阈值batch_size: 40、num_workers: 8max_epoch: 1500、num_snapshots: 50最多训练 1500 epoch保留 50 个快照seed: 0。4.5 token_list配置末尾内嵌了完整音素词表blank、unk、CMU 音素集、sos/eos及sp等共约 70 个 token与预处理阶段生成的dump/phone_id_map.txt保持一致。五、模型训练训练命令train.shCUDA_VISIBLE_DEVICES0,1,2,3,4,5,6,7 ./local/train.sh conf/default.yaml exp/default其内部调用 train.py关键参数python3 ${BIN_DIR}/train.py \ --train-metadatadump/train/norm/metadata.jsonl \ --dev-metadatadump/dev/norm/metadata.jsonl \ --config${config_path} \ --output-dir${train_output_path} \ --ngpu8 \ --phones-dictdump/phone_id_map.txt所有 checkpoint 保存在train_output_path/checkpoints/目录下。官方预训练模型在 8 卡上训练 199500 步eval/mlm_loss与eval/loss均为 57.622215见 README 中 Pretrained Model 一节的指标表。六、声码器HiFi-GAN声码器采用官方在 VCTK 上训练的 HiFi-GAN 声码器示例需要下载预训练 checkpointhifigan_vctk_ckpt_0.2.0.zip并解压其结构为hifigan_vctk_ckpt_0.2.0 ├── default.yaml # 训练 HiFi-GAN 使用的默认配置 ├── feats_stats.npy # 训练时用于归一化频谱的统计量 └── snapshot_iter_2500000.pdz # HiFi-GAN 生成器参数这三个文件在后续所有合成脚本中分别通过--voc_config、--voc_stat、--voc_ckpt传入注意统计量必须与声码器训练时一致否则频谱归一化不匹配会导致音质劣化。七、两种合成入口7.1 从 metadata.jsonl 批量合成stage 2synthesize.sh 调用 synthesize.py用dump/test/norm/metadata.jsonl中的语音 token 序列恢复声学特征再经 HiFi-GAN 合成波形CUDA_VISIBLE_DEVICES0 ./local/synthesize.sh conf/default.yaml exp/default snapshot_iter_199500.pdz该流程验证的是模型语音帧重建能力输出写入${train_output_path}/test。7.2 端到端语音合成与语音编辑stage 3synthesize_e2e.sh 调用 synthesize_e2e.py支持两种任务speech synthesize个性化语音合成以source/p243_313.wav提供说话人风格输入文本 I love you very much do you love me输出exp/pred_gen.wavspeech edit语音编辑以同一源音频 For that reason cover should not be given 为基底将 cover should not be given 编辑为 cover is not impossible to be given输出exp/pred_edit.wav。两个任务的关键参数参数说明--task_namesynthesize或edit--wav_path源音频路径提供说话人特征--old_str必须与--wav_path音频的文本严格对应--new_str按任务设计的目标文本合成任务中为待合成文本--source_lang/--target_langVCTK 模型下均为en--output_name输出波形路径从源码逻辑看synthesize_e2e.py当task_name edit时直接使用new_str当为synthesize时会将new_str拼接为old_str new_str的形式——即先用源音频文本做风格建模再接上待合成文本这正是以旧音频克隆音色、生成新句子的实现方式。中文文本还会经过 pypinyin 转换为拼音输入。执行命令./run.sh --stage 3 --stop-stage 3 --gpus 07.3 端到端推理的依赖准备官方 README 给出了 stage 3 所需的全部资源准备步骤对齐器MFA在tools/aligner下下载 MFA 二进制v1.0.1、aishell3_model.zip、simple.lexicon、vctk_model.zip与cmudict-0.7b词典并修复libpython3.6m.so软链接预训练 FastSpeech2 模型fastspeech2_conformer_baker_ckpt_0.5.zip与fastspeech2_nosil_ljspeech_ckpt_0.5.zip——ERNIE-SAT 复用 FastSpeech2 作为音素时长预测器合成/编辑时由它预测新音素序列的时长源音频source/目录下 6 条 wav含 VCTK 的p243_313.wav、p299_096.wav、LibriSpeech 的LJ050-0278.wav、Baker 的SSB03540307.wav、SSB03540428.wav及this_was_not_the_show_for_me.wav各音频对应文本记录在source/README.md中。所有资源均托管在 paddlespeech.cdn.bcebos.com 的MFA/ernie_sat/与Parakeet/released_models/ernie_sat/路径下按 README 中的 wget 命令依次下载即可。八、预训练模型与训练指标官方提供的预训练模型为erniesat_vctk_ckpt_1.2.0.zip同样托管于 paddlespeech.cdn.bcebos.com 的Parakeet/released_models/ernie_sat/路径。训练配置与指标如下表引自 READMEModelStepeval/mlm_losseval/lossdefault8(gpu) x 19950057.62221557.622215使用预训练模型时可将run.sh中的ckpt_name指向解压后的快照文件直接执行 stage 2/3 进行合成与编辑无需自行训练。九、小结examples/vctk/ernie_sat/提供了 ERNIE-SAT 在 PaddleSpeech 中的完整可运行示例MFA 时长 静音切分构建dump数据stage 0、8 卡 Conformer Encoder-Decoder 联合掩码训练stage 1、metadata 重建合成stage 2以及基于源音频的个性化合成与语音编辑stage 3。核心源码位于 paddlespeech/t2s/models/ernie_sat/ 与 paddlespeech/t2s/exps/ernie_sat/配置集中在 conf/default.yaml。如需中文场景可参考同框架下的 examples/aishell3/ernie_sat/ 与 examples/aishell3_vctk/ernie_sat/ 示例将--source_lang/--target_lang调整为中英组合即可复现跨语言编辑能力。赞分享人工智能语音音频NLP媒体生成【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/paddlepaddle/PaddleSpeech点击查看免费下载相关推荐PaddleSpeech ERNIE-SAT 模型源码解析语音-文本联合预训练的跨语言语音合成与编辑PaddleSpeech ERNIE SAT 模型源码解析语音 文本联合预训练的跨语言语音合成与编辑 导读 本文围绕 PaddleSpeech 仓库中 pad人工智能语音音频PaddleSpeech 中 ERNIE-SAT 模型源码深度解析跨语言语音合成与语音编辑的联合预训练实现PaddleSpeech 中 ERNIE SAT 模型源码深度解析跨语言语音合成与语音编辑的联合预训练实现 本篇技术指南以 PaddleSpeech 仓库中人工智能语音音频NLP媒体生成PaddleSpeech ERNIE-SAT 语音-文本联合预训练模型实现解析从 MLM 掩码编码器到跨语种语音合成与编辑PaddleSpeech ERNIE SAT 语音 文本联合预训练模型实现解析从 MLM 掩码编码器到跨语种语音合成与编辑 导读 本文以 PaddleSpee人工智能语音音频上一篇VulkanTutorialCN解决传统图形API性能瓶颈的现代渲染解决方案下一篇Moonlight-Switch终极指南如何让Switch畅玩PC 3A大作创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表