ARTICLE DETAIL

资讯详情

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

PaddleSpeech SpeedySpeech 链路测试脚本详解:从 lite 快速训练到 Paddle Inference 推理验证

PaddleSpeech SpeedySpeech 链路测试脚本详解:从 lite 快速训练到 Paddle Inference 推理验证 人工智能语音音频【免费下载链接】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点击查看免费下载本文以 tests/chains/speedyspeech/README.md 为主线完整拆解 PaddleSpeech 中 SpeedySpeech并行 WaveNet 类 TTS 声学模型的链路测试chains test体系三个入口脚本lite_train_infer.sh、whole_train_infer.sh、infer.sh各自做什么、依赖的参数文件如何组织、test.sh如何编排“训练 → 评估 → 导出 → 推理”全链路以及底层训练与推理入口脚本的关键参数。读完本文你可以完整理解并复现该目录下的每一次命令执行过程也能将其作为编写其他模型链路测试脚本的参考范式。链路测试目录结构与三个入口tests/chains/speedyspeech/ 目录包含以下文件文件作用README.md入口说明告知用户运行三个入口脚本lite_train_infer.sh小数据集快速训练 推理验证单卡、多卡各跑一遍whole_train_infer.sh完整数据集训练 推理验证infer.sh纯推理验证使用官方推理模型包 Paddle Inferenceprepare.sh按 MODE 下载预训练模型与训练数据test.sh真正的编排引擎解析参数文件并驱动训练/评估/导出/推理speedyspeech_params_lite_single_gpu.txt 等 4 个参数文件定义训练、评估、推理的具体命令与执行维度README 给出的用法就是三条命令在tests/chains/speedyspeech目录下执行# lite小数据集快速链路 bash lite_train_infer.sh # whole完整数据集链路 bash whole_train_infer.sh # infer纯推理验证 bash infer.sh下面结合每个脚本的实际内容逐一说清“这一条命令背后到底发生了什么”。lite_train_infer.sh小数据集快速训练 推理验证lite_train_infer.sh 全文只有 7 行流程非常直白rm exp -rf rm e2e -rf bash prepare.sh lite_train_infer bash test.sh speedyspeech_params_lite_single_gpu.txt lite_train_infer rm exp -rf rm e2e -rf bash test.sh speedyspeech_params_lite_multi_gpu.txt lite_train_infer它分两轮执行同一条训练链路第一轮使用speedyspeech_params_lite_single_gpu.txt单卡gpu_list:0第二轮清理exp/与e2e/输出目录后使用speedyspeech_params_lite_multi_gpu.txt多卡gpu_list:0,1。两轮都会走完“训练 → 评估 → 导出 → 推理”全流程因此可以分别验证单卡与多卡--ngpu两种并行方式下的链路正确性。从参数文件看lite 模式的训练命令基于mini_BZNSYP小型数据集python3.7 ../../../paddlespeech/t2s/exps/speedyspeech/train.py \ --train-metadatatrain_data/mini_BZNSYP/train/norm/metadata.jsonl \ --dev-metadatatrain_data/mini_BZNSYP/dev/norm/metadata.jsonl \ --config../../../examples/csmsc/tts2/conf/default.yaml \ --batch_size32 --max_epoch10 --num_snapshots10 \ --output-direxp/default \ --phones-dicttrain_data/mini_BZNSYP/phone_id_map.txt \ --tones-dicttrain_data/mini_BZNSYP/tone_id_map.txt \ --use-relative-pathTrue注意这些路径是相对于tests/chains/speedyspeech目录的../../../指回仓库根目录。单卡文件使用--max_epoch10多卡文件将--max_epoch调整为 20评估阶段对应的 checkpoint 分别为snapshot_iter_30.pdz与snapshot_iter_20.pdz。whole_train_infer.sh完整数据集训练链路whole_train_infer.sh 结构与 lite 版完全对称区别仅在数据与参数文件rm exp -rf rm e2e -rf bash prepare.sh whole_train_infer bash test.sh speedyspeech_params_whole_single_gpu.txt whole_train_infer rm exp -rf rm e2e -rf bash test.sh speedyspeech_params_whole_multi_gpu.txt whole_train_infer它使用完整处理后的processed_BZNSYP数据集训练--output-direxp/whole且不再显式覆盖--batch_size/--max_epoch沿用 examples/csmsc/tts2/conf/default.yaml 配置中的默认值。其评估命令与 lite 版不同它直接加载官方发布的预训练权重pretrain_models/speedyspeech_nosil_baker_ckpt_0.5/snapshot_iter_11400.pdz做端到端合成验证相当于在完整数据训练的同时用发布 checkpoint 校验评估链路本身可用。prepare.sh按 MODE 准备数据与预训练模型prepare.sh 根据传入的 MODE 决定下载什么是三个入口脚本能“开箱即跑”的关键MODE lite_train_infer下载 PWGParallel WaveGAN 声码器预训练包pwg_baker_ckpt_0.4.zip到./pretrain_models/并解压同时下载并解压小型训练集mini_BZNSYP.tar.gz到./train_data/下载前会先删除旧目录避免脏数据。MODE whole_train_infer额外下载 SpeedySpeech 预训练包speedyspeech_nosil_baker_ckpt_0.5.zip并下载完整数据集processed_BZNSYP.tar.gz。MODE 为其他即 infer只下载官方推理模型包speedyspeech_pwg_inference_0.5.zip并解压供 Paddle Inference 直接加载。所有下载均使用wget -nc已存在则跳过重复执行脚本不会产生重复下载。infer.sh纯推理验证infer.sh 只有一行实质逻辑bash prepare.sh infer bash test.sh speedyspeech_params_lite_single_gpu.txt infer它复用 lite 参数文件的inference段跳过训练与评估只对pretrain_models/speedyspeech_pwg_inference_0.5目录中已导出的推理模型执行 paddlespeech/t2s/exps/speedyspeech/inference.py后文详述。lite 参数文件第 41 行显式声明了--use_gpu:True即推理验证在 GPU 上执行。参数文件组织方式speedyspeech_params_*.txt四个参数文件是test.sh的“配置源”采用固定的按行号定位 key:value分隔的格式全文用key:value描述未使用的行写null:null占位并用##与...分隔三个功能段train_params # 第 1 行起 model_name:speedyspeech # 第 2 行 python:python3.7 # 第 3 行 gpu_list:0 # 第 4 行 ... trainer:norm_train # 第 15 行 norm_train:../../../paddlespeech/t2s/exps/speedyspeech/train.py ... # 第 16 行 ... eval_params # 第 23 行 eval:../../../paddlespeech/t2s/exps/speedyspeech/synthesize_e2e.py ... # 第 24 行 infer_params # 第 27 行 inference:../../../paddlespeech/t2s/exps/speedyspeech/inference.py ... # 第 40 行 --use_gpu:True # 第 41 行GPU 推理开关test.sh 按行下标取值例如第 3 行是python解释器、第 4 行是gpu_list、第 16 行是训练命令、第 24 行是评估命令、第 40 行是推理命令、第 41 行是--use_gpu列表等。这种“行号即协议”的约定意味着修改参数文件时必须保持行号语义不变空位用null:null占位否则编排逻辑会取错值。各行的典型语义以 lite 单卡文件为例行号key含义2model_name链路标识本目录固定为speedyspeech3python使用的 Python 解释器python3.74gpu_list依次尝试的 GPU 规格0单卡、0,1多卡等-1表示 CPU15trainer训练器列表本链路只有norm_train普通训练16norm_train训练入口命令train.py 全部训练参数24eval评估/端到端合成命令synthesize_e2e.py 全部参数40inferencePaddle Inference 推理命令inference.py 全部参数41--use_gpu推理的 GPU 开关列表test.sh训练 → 评估 → 导出 → 推理的编排引擎test.sh 是整个链路的核心用法为bash test.sh ***.txt MODE其中 MODE 取lite_train_infer、whole_infer、whole_train_infer或infer之一见文件头注释。它先解析参数文件再根据 MODE 走两条完全不同的分支。infer 分支导出 多推理维度组合MODE 为infer时脚本会根据第三个参数设置CUDA_VISIBLE_DEVICES未指定则为空对每个待推理模型目录若参数文件中声明了导出命令则先执行导出本链路中 infer 模式的导出位为null因为模型包已预导出调用func_inference逐模型执行推理。func_inference是推理维度组合的核心CPU 路径use_gpuFalse/cpu对use_mkldnn、cpu_threads、batch_size三个维度做三重循环逐一生成推理命令并记录日志量化模型会跳过mkldnnFalse的组合GPU 路径use_gpuTrue/gpu对use_trt、precision、batch_size三重循环并内置约束——fp16/int8精度必须搭配use_trtTrue非量化模型跳过int8等组合每个组合的 stdout 都落盘到./tests/output/infer_*.log并由status_check函数将“Run successfully / Run failed”状态追加写入./tests/output/results.log。训练分支gpu × autocast × trainer 三重循环MODE 为训练类lite_train_infer/whole_train_infer时脚本按gpu_list→autocast→trainer三重循环执行。GPU 字段的长度还隐含并行方式长度 ≤ 2如0、-1单卡或 CPU 直接运行训练命令长度 ≤ 15如0,1多机同卡场景以--ngpuN追加并行参数更长ips;gpus形式多机多卡改用python -m paddle.distributed.launch --ips... --gpus...启动。trainer 支持pact量化感知训练、fpgm、distill等扩展位若命中会自动加载普通训练的 checkpoint 作为预训练set_pretrain${load_norm_train_model}本链路只启用norm_train。每个训练任务完成后脚本自动串联后续步骤eval把刚产出的 checkpoint--pretrain-model指向save_log/模型名传入评估命令export若声明了导出命令则导出推理模型到save_infer_pathinference用func_inference对新导出模型跑一遍推理验证“训练出的模型真的可用”。所有步骤的成败都会追加到./tests/output/results.log训练日志目录命名为${trainer}_gpus_${gpu}_autocast_${autocast}便于对照定位问题。底层链路入口脚本源码级说明参数文件中指向的三条命令对应三个可独立运行的入口脚本理解它们是读懂整条链路的关键。训练入口 train.pypaddlespeech/t2s/exps/speedyspeech/train.py 是 SpeedySpeech 的分布式训练入口。从源码结构看设备选择优先ngpuCUDA、其次 XPU/NPU/MLU最后回退 CPUtrain.py数据字段固定为phones、tones、num_phones、num_frames、feats、durations若提供--speaker-dict则切换为多说话人batch_fn并追加spk_id字段否则走单说话人模式train.py数据集通过jsonlines读取 metadata--use-relative-pathTrue时会在 metadata 所在目录还原feats的相对路径train.py这正是链路脚本中该参数必须为True的原因模型与训练器来自 paddlespeech/t2s/models/speedyspeech训练循环使用TrainerSnapshot扩展每num_snapshots个 epoch 保存一次snapshot_iter_*.pdz——评估命令中引用的snapshot_iter_30.pdz即来源于此。评估入口 synthesize_e2e.pypaddlespeech/t2s/exps/speedyspeech/synthesize_e2e.py 在训练后或加载发布 checkpoint做端到端合成验证参数文件中它的典型参数为python3.7 ../../../paddlespeech/t2s/exps/speedyspeech/synthesize_e2e.py \ --speedyspeech-configSpeedySpeech 的 yaml 配置 \ --speedyspeech-checkpoint训练产出的 snapshot_iter_*.pdz \ --speedyspeech-statfeats_stats.npy \ --pwg-configpretrain_models/pwg_baker_ckpt_0.4/pwg_default.yaml \ --pwg-checkpointpretrain_models/pwg_baker_ckpt_0.4/pwg_snapshot_iter_400000.pdz \ --pwg-statpretrain_models/pwg_baker_ckpt_0.4/pwg_stats.npy \ --text测试句文件 --output-dire2e --inference-dirinference --ngpu1 \ --phones-dictphone_id_map.txt --tones-dicttone_id_map.txt它同时加载 SpeedySpeech 声学模型与 PWG 声码器--speedyspeech-stat传入的 mel 均值/方差统计feats_stats.npy用于声学特征归一化是合成效果的一部分来源。推理入口 inference.pypaddlespeech/t2s/exps/speedyspeech/inference.py 是“已导出模型”的 C 后端推理脚本注释标明remain for chains即为链路测试保留。其关键实现inference.py参数为--inference-dir已导出的模型目录、--textutt_id sentence格式文本、--output-dir、--phones-dict、--tones-dict兼容 PaddlePaddle 3.0 前后两套推理接口3.0 起用inference.Config(dir, speedyspeech)按子图名加载旧版本用speedyspeech.pdmodel/speedyspeech.pdiparams文件路径加载PWG 同理两个 predictor 均开启enable_use_gpu(100, 0)与enable_memory_optim()推理时先用 paddlespeech/t2s/frontend/zh_frontend.py 的Frontend把文本转成 phone/tone id喂给 SpeedySpeech 得到 mel再串联喂给 PWG 得到波形逐句写出音频。运行前提与注意事项执行目录三个入口脚本与test.sh内部命令均使用相对路径../../../回到仓库根、train_data/、pretrain_models/等必须在 tests/chains/speedyspeech/ 目录下执行否则路径全部失效。Python 环境参数文件指定python:python3.7链路按 Python 3.7 PaddlePaddle含 GPU 支持环境编写若本机解释器名不同需要相应调整参数文件第 3 行。网络下载prepare.sh会从 Baidu Bos 公网地址下载数据集与预训练包lite 约含mini_BZNSYP.tar.gzwhole 含processed_BZNSYP.tar.gz等需要可用的网络环境下载失败或包结构变化都会导致后续metadata.jsonl缺失。GPU 依赖lite/whole 链路的多卡轮次要求至少 2 张可见 GPUgpu_list:0,1多卡轮次通过--ngpu参数走单机多卡。无 GPU 环境可参考参数文件中gpu_list:-1的 CPU 分支约定自行调整。产物与日志训练产物写入exp/output-dir/checkpoints/端到端合成音频写入e2e/各组合的推理日志与状态汇总在./tests/output/lite_train_infer.sh/whole_train_infer.sh在每轮之间会rm exp -rf、rm e2e -rf清理现场因此同一时刻只应运行一个链路。参数文件行号协议如前所述test.sh按行下标解析扩展该链路例如增加 pact 量化训练时应参照 tests/chains/ds2/ 等其他链路的参数文件保持同样的行号布局而不是随意增删行。小结这套 SpeedySpeech 链路测试是 PaddleSpeech 中 TTS 模型“可复现验证”的样板README 只给出三条命令而真正的工作量藏在prepare.sh的资源准备、*.txt参数文件的行号协议以及test.sh对 gpu/autocast/trainer/mkldnn/trt/precision 等多维组合的遍历与状态记录中。理解这一套机制后不仅能在本仓库中独立复现 SpeedySpeech 的训练与推理链路也能将同一套“参数文件 编排脚本”的模式迁移到其他模型的链路验证场景。赞分享人工智能语音音频【免费下载链接】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 SpeedySpeech 训练模块详解从 train.py 入口到多卡训练实战PaddleSpeech SpeedySpeech 训练模块详解从 train.py 入口到多卡训练实战 导读 本文以 PaddleSpeech 仓库中 pa人工智能语音音频InsightFace ArcFace Paddle 飞桨训推一体认证TIPC测试指南从训练、推理到 Serving 部署的一键验证InsightFace ArcFace Paddle 飞桨训推一体认证TIPC测试指南从训练、推理到 Serving 部署的一键验证 飞桨PaddleP人工智能计算机视觉深度学习PaddleSpeech SpeedySpeech 端到端语音合成synthesize_e2e实战指南从文本到波形的完整推理链路PaddleSpeech SpeedySpeech 端到端语音合成synthesize_e2e实战指南从文本到波形的完整推理链路 导读 本文围绕 Padd人工智能语音音频NLP媒体生成上一篇探索跨平台新纪元Kotlin Multiplatform Mobile 样例项目下一篇在 Android 上使用 Rust 与 BinderBirthday Service 完整实战教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表