ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

PaddleSpeech VCTK 多说话人语音合成与语音转换实战指南:TTS、声码器、ERNIE-SAT 与 StarGANv2-VC 全流程

PaddleSpeech VCTK 多说话人语音合成与语音转换实战指南:TTS、声码器、ERNIE-SAT 与 StarGANv2-VC 全流程 人工智能语音音频【免费下载链接】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/gh_mirrors/pa/PaddleSpeech点击查看免费下载导读VCTK 是 PaddleSpeech 中最常用的多说话人英文语音数据集之一它同时支撑了从端到端 TTS声学模型 神经声码器、跨语言多说话人语音合成/编辑到语音转换Voice Conversion的完整实验矩阵。本文以 examples/vctk/README.md 为骨架结合仓库内 tts3、voc1、voc5、ernie_sat、vc3 各子目录的实操文档与脚本系统讲解如何在 VCTK-0.92 上完成数据准备、MFA 时长对齐、特征预处理、模型训练、波形合成以及语音编辑与转换并深入解读 FastSpeech2、Parallel WaveGAN、HiFiGAN、ERNIE-SAT、StarGANv2-VC 各自的配置文件与命令行参数。读完本文你将能够按图索骥地在本地复现 PaddleSpeech 的多说话人 TTS 与 VC 实验。VCTK 实验总览examples/vctk 目录能做什么examples/vctk是 PaddleSpeech 中以 VCTK 数据集为核心的示例集合其顶层 README.md 用一个清单概括了全部实验tts0 – Tacotron2经典的 encoder-decoder 自回归声学模型tts1 – TransformerTTS基于 Transformer 的非自回归/自回归混合声学模型tts2 – SpeedySpeech轻量级并行声学模型tts3 – FastSpeech2本项目 VCTK 上最完整的 TTS 示例本文重点展开voc0 – WaveFlow基于流的神经声码器voc1 – Parallel WaveGAN非自回归 GAN 声码器TTS 默认配套voc2 – MelGAN轻量 GAN 声码器voc3 – MultiBand MelGAN多频带 MelGANernie_sat – ERNIE-SAT语音-文本联合预训练框架支持跨语言多说话人合成与语音编辑、个性化合成、声音克隆vc3 – StarGANv2-VC基于 StarGANv2 的多对多语音转换。从目录结构看当前仓库实际保留了 tts3、voc1、voc5、ernie_sat、vc3 五个子示例每个子目录都遵循统一骨架conf/default.yaml默认配置、local/preprocess、train、synthesize 等脚本、path.sh环境路径、run.sh阶段化入口。这意味着你可以复用同一套运行框架在不同任务之间切换。数据准备VCTK-0.92 与 MFA 对齐结果下载并解压数据集所有 VCTK 子示例tts3、voc1、voc5、ernie_sat都要求先获取 VCTK-0.92并将其解压到~/datasets得到目录~/datasets/VCTK-Corpus-0.92# 从官方渠道下载 VCTK-0.92 并解压 # 解压后数据集位于 ~/datasets/VCTK-Corpus-0.92获取 MFA 强制对齐结果FastSpeech2 类模型需要音素级时长信息PaddleSpeech 使用 Montreal Forced AlignerMFA生成对齐结果直接下载官方提供的对齐包vctk_alignment.tar.gz来自 paddlespeech.cdn.bcebos.com 的MFA/VCTK-Corpus-0.92/vctk_alignment.tar.gz解压到当前实验目录如./vctk_alignment或参考 examples/other/mfa 自行训练 MFA 模型。需要特别注意的是VCTK-0.92 中有三个说话人被移除移除逻辑见 reorganize_vctk.pyp315没有对应的文本标注p280与p362缺少质量更好的*_mic2.flac音频VCTK 每个说话人通常同时提供 mic1/mic2 两路录音mic2 质量更优。对齐结果除了为声学模型提供时长还被声码器示例用来切掉音频边缘的静音见 voc1/README.md 与 voc5/README.md因此它是整个流水线的公共前置依赖。阶段化运行框架run.sh 与 parse_options每个子示例的 run.sh 都遵循相同的设计通过source ${MAIN_ROOT}/utils/parse_options.sh解析--stage/--stop-stage等参数从而支持只跑流水线中的某一段。以 tts3 为例./run.sh # 跑完整流水线默认 gpus0,1stage0, stop_stage100 ./run.sh --stage 0 --stop-stage 0 # 只做数据预处理tts3 的run.sh还展示了完整的阶段划分比 README 更丰富stage 0预处理preprocess.shstage 1训练train.shstage 2从metadata.jsonl合成波形synthesize.shvocoder 默认 0pwgan1hifiganstage 3从文本文件端到端合成synthesize_e2e.shstage 4静态模型推理inference.shstage 5导出 ONNXpaddle2onnx.shstage 6ONNX Runtime 推理ort_predict.shstage 7导出 Paddle-Lite 模型export2lite.shstage 8Lite 推理lite_predict.sh。path.sh负责环境初始化它将MAIN_ROOT仓库根目录及其utils加入PATH把仓库根目录加入PYTHONPATH并设置BIN_DIR${MAIN_ROOT}/paddlespeech/t2s/exps/fastspeech2。这解释了为什么脚本中能直接调用python3 ${BIN_DIR}/preprocess.py、${BIN_DIR}/train.py等入口。FastSpeech2 多说话人 TTStts3数据预处理与 dump 目录结构预处理由 preprocess.sh 驱动内部实际调用utils/gen_duration_from_textgrid.py与paddlespeech/t2s/exps/fastspeech2/preprocess.py./local/preprocess.sh ${conf_path}核心步骤依次为从 MFA 的 TextGrid 结果生成durations.txt抽取特征preprocess.py --datasetvctk --rootdir~/datasets/VCTK-Corpus-0.92/ --dumpdirdump --dur-filedurations.txt --config${config_path} --num-cpu20 --cut-silTrue其中--cut-silTrue会依据 MFA 对齐信息切除边缘静音用utils/compute_statistics.py分别对speech、pitch、energy三个字段统计训练集上的均值与方差用normalize.py对 train/dev/test 三份数据做归一化dev/test 一律复用 train 的统计量避免数据泄漏。完成后当前目录出现dump文件夹结构如下dump ├── dev │ ├── norm │ └── raw ├── phone_id_map.txt ├── speaker_id_map.txt ├── test │ ├── norm │ └── raw └── train ├── energy_stats.npy ├── norm ├── pitch_stats.npy ├── raw └── speech_stats.npyraw存放每条语句的 speech频谱、pitch基频、energy能量特征norm存放归一化后的版本dump/train/*_stats.npy是归一化所需的统计量。每个子文件夹内的metadata.jsonl是一张表记录了 phones、text_lengths、speech_lengths、durations、各类特征路径、speaker 及 id 等字段是训练与合成阶段的数据索引。训练train.py 与 conf/default.yamlCUDA_VISIBLE_DEVICES${gpus} ./local/train.sh ${conf_path} ${train_output_path}train.sh调用paddlespeech/t2s/exps/fastspeech2/train.py其完整参数如下usage: train.py [-h] [--config CONFIG] [--train-metadata TRAIN_METADATA] [--dev-metadata DEV_METADATA] [--output-dir OUTPUT_DIR] [--ngpu NGPU] [--phones-dict PHONES_DICT] [--speaker-dict SPEAKER_DICT] [--voice-cloning VOICE_CLONING]参数说明--configyaml 格式的配置文件覆盖默认配置 conf/default.yaml--train-metadata/--dev-metadatadump中train/dev的norm子目录下的metadata.jsonl--output-dir实验输出目录checkpoint 保存在其中的checkpoints/--phones-dict音素词表文件dump/phone_id_map.txt--speaker-dict多说话人模型的说话人 id 映射文件--voice-cloning是否训练声音克隆模型--ngpuGPU 数量ngpu0时使用 CPU。conf/default.yaml将配置分为五块理解它就能读懂 FastSpeech2 的完整超参FEATURE EXTRACTIONfs: 24000采样率 24kHz、n_fft: 2048、n_shift: 300帧移 12.5ms、win_length: 1200窗长 50ms、window: hannfmin: 80、fmax: 7600、n_mels: 8080 维 mel 频谱f0min: 80、f0max: 400基频提取范围DATAbatch_size: 64、num_workers: 2MODELTransformer 编码器adim: 384、aheads: 2、elayers: 4、eunits: 1536解码器dlayers: 4、dunits: 1536时长预测器 2 层 × 256 通道、kernel 3postnet 5 层pitch 预测器 5 层 × 256 通道、pitch_predictor_dropout: 0.5energy 预测器 2 层说话人嵌入spk_embed_dim: 256融合方式concat——这正是 VCTK 多说话人能力的关键UPDATER / OPTIMIZERuse_masking: True计算损失时屏蔽 padding 部分、Adam 优化器、学习率 0.001TRAININGmax_epoch: 200、num_snapshots: 5。从 train.py 的存在可以推断训练主循环会按 epoch 保存快照num_snapshots: 5控制保留的最近快照数量实验中可通过ckpt_name如 tts3 默认的snapshot_iter_331.pdz指定要恢复的 checkpoint。合成synthesize.py 与 synthesize_e2e.pyPaddleSpeech 的 TTS 推理把声学模型 声码器解耦成两个可独立替换的组件VCTK 上默认搭配Parallel WaveGANvoc1作为声码器也支持切换 HiFiGANvoc5。先下载预训练的 Parallel WaveGAN 模型并解压unzip pwg_vctk_ckpt_0.1.1.zip其 checkpoint 包含三个文件default.yaml训练配置、snapshot_iter_1500000.pdz生成器参数、feats_stats.npy频谱归一化统计量。从 metadata.jsonl 合成由synthesize.sh调用paddlespeech/t2s/exps/synthesize.pyCUDA_VISIBLE_DEVICES${gpus} ./local/synthesize.sh ${conf_path} ${train_output_path} ${ckpt_name} 0从文本文件端到端合成由synthesize_e2e.sh调用paddlespeech/t2s/exps/synthesize_e2e.pyCUDA_VISIBLE_DEVICES${gpus} ./local/synthesize_e2e.sh ${conf_path} ${train_output_path} ${ckpt_name} 0两处最后一个数字0/1控制声码器0用 pwgan1用 hifigan。synthesize.py的核心参数usage: synthesize.py [-h] [--am {speedyspeech_csmsc,fastspeech2_csmsc,fastspeech2_ljspeech,fastspeech2_aishell3,fastspeech2_vctk,tacotron2_csmsc,tacotron2_ljspeech,tacotron2_aishell3}] [--am_config AM_CONFIG] [--am_ckpt AM_CKPT] [--am_stat AM_STAT] [--phones_dict PHONES_DICT] [--tones_dict TONES_DICT] [--speaker_dict SPEAKER_DICT] [--voc {pwgan_csmsc,pwgan_ljspeech,pwgan_aishell3,pwgan_vctk,mb_melgan_csmsc,wavernn_csmsc,hifigan_csmsc,hifigan_ljspeech,hifigan_aishell3,hifigan_vctk,style_melgan_csmsc}] [--voc_config VOC_CONFIG] [--voc_ckpt VOC_CKPT] [--voc_stat VOC_STAT] [--ngpu NGPU] [--test_metadata TEST_METADATA] [--output_dir OUTPUT_DIR]要点--am命名规范为{模型名}_{数据集}VCTK 对应fastspeech2_vctk--am_config、--am_ckpt、--am_stat、--phones_dict、--speaker_dict与预训练 FastSpeech2 包内的 5 个文件一一对应--voc同理--voc_config、--voc_ckpt、--voc_stat对应声码器包内的 3 个文件--test_metadata指向dump/test/norm/metadata.jsonl--ngpu为 0 时使用 CPU。synthesize_e2e.py相比多了--spk_id多说话人模型指定说话人 id、--langzh或en、--text每行utt_id sentence的文本文件、--inference_dir推理模型保存目录。用预训练模型一键合成tts3/README.md 提供了可直接运行的预训练模型合成命令这里给出整理后的版本假设已下载并解压 fastspeech2_vctk_ckpt_1.2.0.zip 与 pwg_vctk_ckpt_0.1.1.zipsource path.sh FLAGS_allocator_strategynaive_best_fit \ FLAGS_fraction_of_gpu_memory_to_use0.01 \ python3 ${BIN_DIR}/../synthesize_e2e.py \ --amfastspeech2_vctk \ --am_configfastspeech2_vctk_ckpt_1.2.0/default.yaml \ --am_ckptfastspeech2_vctk_ckpt_1.2.0/snapshot_iter_66200.pdz \ --am_statfastspeech2_vctk_ckpt_1.2.0/speech_stats.npy \ --vocpwgan_vctk \ --voc_configpwg_vctk_ckpt_0.1.1/default.yaml \ --voc_ckptpwg_vctk_ckpt_0.1.1/snapshot_iter_1500000.pdz \ --voc_statpwg_vctk_ckpt_0.1.1/feats_stats.npy \ --langen \ --text${BIN_DIR}/../../assets/sentences_en.txt \ --output_direxp/default/test_e2e \ --phones_dictfastspeech2_vctk_ckpt_1.2.0/phone_id_map.txt \ --speaker_dictfastspeech2_vctk_ckpt_1.2.0/speaker_id_map.txt \ --spk_id0 \ --inference_direxp/default/inference两个FLAGS_环境变量来自 Paddle 框架FLAGS_allocator_strategynaive_best_fit选择显存分配策略FLAGS_fraction_of_gpu_memory_to_use0.01限制显存占用比例TTS 推理显存需求很小。预训练 FastSpeech2 checkpoint 解压后包含fastspeech2_vctk_ckpt_1.2.0 ├── default.yaml # 训练时使用的默认配置 ├── energy_stats.npy # energy 归一化统计量 ├── phone_id_map.txt # 音素词表 ├── pitch_stats.npy # pitch 归一化统计量 ├── snapshot_iter_66200.pdz # 模型参数与优化器状态 ├── speaker_id_map.txt # 多说话人 id 映射 └── speech_stats.npy # 频谱归一化统计量除动态图 checkpoint 外官方还发布了多种部署格式静态模型static、PIR 静态模型需要设置FLAGS_enable_pir_api1且仅支持 paddlepaddle3.0.0b2、ONNX 模型与 Paddle-Lite 模型分别对应run.sh中 stage 4~8 的导出与推理流程。神经声码器Parallel WaveGANvoc1与 HiFiGANvoc5通用流水线voc1/voc5 的训练与合成流程几乎一致区别仅在模型结构与默认配置./run.sh --stage 0 --stop-stage 0 # 仅预处理 CUDA_VISIBLE_DEVICES${gpus} ./local/train.sh ${conf_path} ${train_output_path} CUDA_VISIBLE_DEVICES${gpus} ./local/synthesize.sh ${conf_path} ${train_output_path} ${ckpt_name}两者的 dump 结构比 TTS 更简单——声码器只消费频谱dump ├── dev │ ├── norm │ └── raw ├── test │ ├── norm │ └── raw └── train ├── norm ├── raw └── feats_stats.npyraw存放每条语句的 mel 频谱对数幅度norm存放归一化频谱dump/train/feats_stats.npy是归一化统计量metadata.jsonl记录 id 与频谱路径。训练参数Parallel WaveGAN 的train.py额外支持 benchmark 相关参数usage: train.py [-h] [--config CONFIG] [--train-metadata TRAIN_METADATA] [--dev-metadata DEV_METADATA] [--output-dir OUTPUT_DIR] [--ngpu NGPU] [--batch-size BATCH_SIZE] [--max-iter MAX_ITER] [--run-benchmark RUN_BENCHMARK] [--profiler_options PROFILER_OPTIONS]其中--run-benchmark True时会强制使用--batch-size与--max-iter进行基准测试--profiler_options形如key1value1;key2value2。HiFiGAN 的train.py则保持--config/--train-metadata/--dev-metadata/--output-dir/--ngpu五件套。合成脚本调用synthesize.py --generator-type {pwgan, mb_melgan, style_melgan}当前支持这三种 GAN 声码器--checkpoint从训练输出目录checkpoints/中挑选若使用预训练模型则用pwg_snapshot_iter_400000.pdz。预训练声码器与评价指标Parallel WaveGANpwg_vctk_ckpt_0.1.1.zip迭代 1,500,000 步另有 static/ONNX/Paddle-Lite 版本HiFiGANhifigan_vctk_ckpt_0.2.0.zip迭代 2,500,000 步解压后为default.yamlfeats_stats.npysnapshot_iter_2500000.pdz。HiFiGAN README 给出的评测结果为 eval/generator_loss 58.092、eval/mel_loss 0.1234、eval/feature_matching_loss 24.3841 GPU × 2,500,000 步ERNIE-SAT 则给出 eval/mlm_loss 与 eval/loss 均为 57.6222158 GPU × 199,500 步。这些是仓库文档自报的实验数据可作为复现时的参考基线。ERNIE-SAT跨语言多说话人合成与语音编辑ernie_sat模型亮点ernie_sat/README.md 说明 ERNIE-SAT 是语音-文本联合预训练框架在跨语言多说话人语音合成与跨语言语音编辑任务上取得了当时领先的结果可应用于语音编辑、个性化语音合成、声音克隆等场景。两大创新点预训练时将中英文对应的音素作为输入实现跨语言与个性化的软音素映射对语音与文本做联合掩码学习实现语音与文本的对齐。训练流程ERNIE-SAT 的数据准备与 FastSpeech2 完全一致同样的 VCTK-0.92 MFA 对齐 移除 p315/p280/p362 三个说话人dump中多出一个speech_stats.npy其metadata.jsonl记录 phones、text_lengths、speech_lengths、durations、speech 特征路径、speaker 与 id。训练同样走./run.sh与./local/train.sh但合成阶段使用的声码器是HiFiGAN下载hifigan_vctk_ckpt_0.2.0.zip。语音合成与语音编辑实战ERNIE-SAT 的编辑/合成功能需要四类前置资源README 给出了完整准备脚本MFA aligner下载 montreal-forced-aligner v1.0.1 并解压到tools/同时修复其.so软链接再下载aishell3_model.zip、simple.lexicon、vctk_model.zip、cmudict-0.7b等对齐模型与词典到tools/aligner/时长预测器ERNIE-SAT 使用 FastSpeech2 作为音素时长预测器需要下载fastspeech2_conformer_baker_ckpt_0.5.zip中文与fastspeech2_nosil_ljspeech_ckpt_0.5.zip英文并解压到download/源音频下载SSB03540307.wav、SSB03540428.wav中文、LJ050-0278.wav、p243_313.wav、p299_096.wav、this_was_not_the_show_for_me.wav英文等示例 wav 到source/各音频对应的文本可在source/README.md中查看预训练 ERNIE-SAT 模型erniesat_vctk_ckpt_1.2.0.zip。随后运行./run.sh --stage 3 --stop-stage 3 --gpus 0关键自定义参数--wav_path源音频路径--old_str该音频对应的原始文本必须与音频内容一致--new_str目标文本需根据--task_name设计替换词或整句改写--source_lang与--target_lang使用 VCTK 训练的模型时均设为en。StarGANv2-VC多对多语音转换vc3vc3/README.md 提供了最精简的语音转换上手路径下载测试源音频test_wav.zip并解压然后直接运行转换推理wget https://paddlespeech.cdn.bcebos.com/Parakeet/released_models/starganv2vc/test_wav.zip unzip test_wav.zip ./run.sh --stage 2 --stop-stage 2 --gpus 0从 vc3/run.sh 可见其阶段划分stage 0 预处理、stage 1 训练两处均标注 not ready now即当前仓库中尚未开放完整训练流水线、stage 2 执行./local/voice_conversion.sh ${conf_path} ${source_path} ${output_dir}其中source_path默认test_wav/goat_01.wav输出目录默认vc_output。底层推理由paddlespeech/t2s/exps/starganv2_vc/vc.py承载训练/预处理对应preprocess.py、normalize.py、train.py说明该示例的推理路径已经就绪可用来验证 StarGANv2-VC 的跨说话人音色迁移效果。小结VCTK 实验的统一方法论纵观examples/vctk全部子示例可以提炼出一套可复用的方法论数据层VCTK-0.92 MFA 对齐是所有 TTS 类任务含 ERNIE-SAT的公共前置静音切除与时长抽取都依赖对齐结果特征层预处理统一产出dump/{train,dev,test}/{raw,norm}与metadata.jsonl统计量一律来自训练集模型层声学模型FastSpeech2与声码器Parallel WaveGAN/HiFiGAN解耦合成时可自由组合通过--am/--voc参数按{模型}_{数据集}命名切换工程层run.sh --stage X --stop-stage Y的解析机制贯穿所有示例配合path.sh的环境变量注入使每个实验既可整链运行又可单步调试部署层动态图 checkpoint 之外每个模型均提供 static / PIR / ONNX / Paddle-Lite 多格式导出对应 tts3run.sh的 stage 4~8。掌握这套方法论后你可以快速把 VCTK 上的经验迁移到 examples/aishell3、examples/csmsc 等其它多说话人数据集并在 TTS、VC、语音编辑之间自由组合复用。赞分享人工智能语音音频【免费下载链接】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/gh_mirrors/pa/PaddleSpeech点击查看免费下载相关推荐PaddleSpeech ERNIE-SAT 中英跨语言多说话人语音合成AISHELL-3 VCTK 训练与推理完整实践PaddleSpeech ERNIE SAT 中英跨语言多说话人语音合成AISHELL 3 VCTK 训练与推理完整实践 本文围绕 PaddleSpeec人工智能语音音频NLP媒体生成PaddleSpeech ERNIE-SAT 全流程实战跨语言多说话人语音合成与语音编辑工具链深度解析PaddleSpeech ERNIE SAT 全流程实战跨语言多说话人语音合成与语音编辑工具链深度解析 本文围绕 PaddleSpeech 中 paddles人工智能语音音频VCTK 多说话人语音合成实战基于 fairseq S² 工具包的 Transformer TTS 全流程指南VCTK 多说话人语音合成实战基于 fairseq S² 工具包的 Transformer TTS 全流程指南 VCTK 是 open 的多说话人英语语音语料人工智能大模型预训练深度学习NLP计算机视觉多模态语音音频微调上一篇PDF解除限制不用换阅读器免费工具PDFPatcher改一处权限复制打印立刻恢复下一篇Initialization创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表