- 人工智能
- 语音
- 音频
【免费下载链接】PaddleSpeech
Easy-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.
本指南完整讲解 PaddleSpeech 仓库中 examples/csmsc/tts2 示例:如何用中文标准普通话语音库 CSMSC(BZNSYP)训练 SpeedySpeech 声学模型,并配合 Parallel WaveGAN 等神经声码器完成从文本到波形的端到端合成,以及静态图、ONNX、Paddle-Lite 等多形态模型导出与推理。读完本文,你将掌握数据预处理、模型训练、多声码器合成、静态模型推理与部署导出的完整闭环,并理解 SpeedySpeech 的编码器—时长预测器—解码器架构在仓库源码中的具体实现。
SpeedySpeech 与 CSMSC 示例概览
SpeedySpeech 是一个非自回归(parallel)语音合成声学模型,其核心设计是去掉自回归 Transformer 解码器,改用带扩张卷积的堆叠残差块并行生成梅尔谱。本仓库只实现 SpeedySpeech 的 student 部分(即不包含知识蒸馏中的 teacher 模型),训练时使用的 ground-truth 音素时长对齐来自数据集经 MFA(Montreal Forced Aligner)强制对齐提取的结果。
对应代码位于 paddlespeech/t2s/models/speedyspeech/speedyspeech.py,示例脚本集中在 examples/csmsc/tts2,默认配置见 conf/default.yaml。整个流水线围绕以下几步展开:
- 准备 CSMSC 数据集与 MFA 时长对齐结果;
- 预处理:由 TextGrid 对齐结果生成时长文件,提取 log-mel 频谱,计算归一化统计量并生成音素/声调词典;
- 训练 SpeedySpeech 声学模型;
- 用 Parallel WaveGAN 等声码器从
metadata.jsonl或纯文本合成波形; - 导出静态模型并执行推理,进一步可导出 ONNX / Paddle-Lite 模型并做 PTQ 量化。
数据集准备:CSMSC 下载与目录结构
从官方渠道下载 CSMSC(Chinese Standard Mandarin Speech Corpus,即 BZNSYP)并解压到~/datasets,数据集将位于~/datasets/BZNSYP。解压后目录结构如下:
└─ Wave └─ .wav files (audio speech) └─ PhoneLabeling └─ .interval files (alignment between phoneme and duration) └─ ProsodyLabeling └─ 000001-010000.txt (text with prosodic by pinyin)其中Wave存放语音波形,PhoneLabeling存放音素与时长对齐的 interval 文件,ProsodyLabeling存放带韵律标注(拼音形式)的文本。
获取 MFA 时长对齐结果
SpeedySpeech 训练依赖每个音素的时长信息,仓库采用 MFA 从数据集中提取,两种获取途径:
- 直接下载现成对齐结果
baker_alignment_tone.tar.gz并解压,得到./baker_alignment_tone目录; - 或参考仓库内 examples/other/mfa 示例自行训练 MFA 模型生成对齐。
预处理阶段会通过 utils/gen_duration_from_textgrid.py 把 MFA 的 TextGrid 结果转换成durations.txt。
环境与路径初始化
进入示例目录后先执行source path.sh,该脚本(见 examples/csmsc/tts2/path.sh)完成以下初始化:
export MAIN_ROOT=`realpath ${PWD}/../../../` export PATH=${MAIN_ROOT}:${MAIN_ROOT}/utils:${PATH} export LC_ALL=C export PYTHONDONTWRITEBYTECODE=1 export PYTHONIOENCODING=UTF-8 export PYTHONPATH=${MAIN_ROOT}:${PYTHONPATH} MODEL=speedyspeech export BIN_DIR=${MAIN_ROOT}/paddlespeech/t2s/exps/${MODEL}BIN_DIR指向 paddlespeech/t2s/exps/speedyspeech,其中包含preprocess.py、train.py、normalize.py、synthesize_e2e.py、inference.py等训练与推理入口脚本。
一键流水线:run.sh 与 stage 控制
假设数据集位于~/datasets/BZNSYP、MFA 对齐结果位于./baker_alignment_tone,直接运行:
./run.sh将依次完成 source path、数据预处理、模型训练、波形合成(分别从metadata.jsonl和文本文件)、静态模型推理。你也可以通过--stage与--stop-stage控制执行范围,例如只跑预处理:
./run.sh --stage 0 --stop-stage 0从 run.sh 源码可以看到它定义的完整 stage 映射(脚本通过source ${MAIN_ROOT}/utils/parse_options.sh解析--stage/--stop-stage参数):
| Stage | 动作 | 调用的脚本 |
|---|---|---|
| 0 | 数据预处理 | ./local/preprocess.sh ${conf_path} |
| 1 | 训练模型 | ./local/train.sh ${conf_path} ${train_output_path} |
| 2 | 从 metadata 合成(默认 pwgan,可换 1-4) | ./local/synthesize.sh |
| 3 | 从文本端到端合成(默认 pwgan,可换 1/3/4) | ./local/synthesize_e2e.sh |
| 4 | 静态模型推理 | ./local/inference.sh |
| 5 | 导出 ONNX(先安装 paddle2onnx) | ./local/paddle2onnx.sh |
| 6 | ONNX Runtime 推理 | ./local/ort_predict.sh |
| 7 | 导出 Paddle-Lite 模型 | ./local/export2lite.sh |
| 8 | Paddle-Lite 推理 | ./local/lite_predict.sh |
| 9 | PTQ 静态量化 | ./local/PTQ_static.sh |
脚本头部默认参数:gpus=0,1、conf_path=conf/default.yaml、train_output_path=exp/default、ckpt_name=snapshot_iter_76.pdz。注意 stage 5 会先执行pip install paddle2onnx --upgrade,并在导出时根据声码器类型自动决定是否开启 dev 版本导出(mb_melgan关闭);stage 7 的paddle_lite_opt通过--valid_targets指定优化目标(如x86)。
数据预处理:从对齐到规范化频谱
预处理脚本为 local/preprocess.sh,其内部又分为 4 个子阶段:
./local/preprocess.sh ${conf_path}- 生成时长文件:调用
utils/gen_duration_from_textgrid.py,把./baker_alignment_tone中的 MFA 对齐转成durations.txt; - 提取特征:调用
paddlespeech/t2s/exps/speedyspeech/preprocess.py,以--dataset=baker、--rootdir=~/datasets/BZNSYP/提取特征,--cut-sil=True表示切掉音频边缘的静音,--num-cpu=20控制并行度,--use-relative-path=True让 metadata 中记录相对路径; - 计算统计量:调用
utils/compute_statistics.py基于dump/train/raw/metadata.jsonl的feats字段计算均值与标准差,得到dump/train/feats_stats.npy; - 归一化并建词典:调用
normalize.py对 train/dev/test 三个子集分别归一化,dev 与 test 一律复用 train 的统计量,同时生成phone_id_map.txt、tone_id_map.txt、speaker_id_map.txt三张词典。
从源码看,preprocess.py 的核心逻辑会按句读取 wav 与对应音素时长,在cut_sil=True时裁掉首尾sil音素及其波形区间,随后通过LogMelFBank提取 log-mel 特征(采样率、fft 等参数来自 config),并调用compare_duration_and_mel_length将音素时长按梅尔帧数做对齐校准;同时通过正则^(\w+)([012345])$从韵母标签中拆出音素与声调(无声调记为0),这正是后续音素嵌入与声调嵌入双路输入的数据基础。
dump 目录结构与 metadata
预处理完成后当前目录会生成dump文件夹:
dump ├── dev │ ├── norm │ └── raw ├── test │ ├── norm │ └── raw └── train ├── norm ├── raw └── feats_stats.npy数据集被划分为train、dev、test三部分,每部分包含raw与norm两个子目录:raw存放每句的 log-mel 频谱幅值,norm存放归一化后的频谱;归一化统计量由训练集计算得到,位于dump/train/feats_stats.npy。
每个子目录中还有一张表格式的metadata.jsonl,每一行记录一条 utterance 的音素(phones)、声调(tones)、时长(durations)、频谱文件路径与唯一 id。训练与合成阶段都会消费这份文件。
模型训练:train.py 与默认配置
训练脚本为 local/train.sh,底层调用${BIN_DIR}/train.py:
CUDA_VISIBLE_DEVICES=${gpus} ./local/train.sh ${conf_path} ${train_output_path} || exit -1train.py 的完整帮助信息如下:
usage: train.py [-h] [--config CONFIG] [--train-metadata TRAIN_METADATA] [--dev-metadata DEV_METADATA] [--output-dir OUTPUT_DIR] [--ngpu NGPU] [--use-relative-path USE_RELATIVE_PATH] [--phones-dict PHONES_DICT] [--tones-dict TONES_DICT] Train a Speedyspeech model with a single speaker dataset. optional arguments: -h, --help show this help message and exit --config CONFIG config file. --train-metadata TRAIN_METADATA training data. --dev-metadata DEV_METADATA dev data. --output-dir OUTPUT_DIR output dir. --ngpu NGPU if ngpu == 0, use cpu. --use-relative-path USE_RELATIVE_PATH whether use relative path in metadata --phones-dict PHONES_DICT phone vocabulary file. --tones-dict TONES_DICT tone vocabulary file.各参数说明:
--config:yaml 格式配置文件,用于覆盖默认配置,即 conf/default.yaml;--train-metadata、--dev-metadata:应使用dump目录中train与dev的norm子目录下的 metadata 文件;--output-dir:实验输出目录,checkpoint 保存在该目录下的checkpoints/中;--ngpu:使用的 GPU 数量,ngpu == 0时使用 CPU;--phones-dict:音素词典文件路径;--tones-dict:声调词典文件路径。
train.sh 实际执行的命令即:--train-metadata=dump/train/norm/metadata.jsonl、--dev-metadata=dump/dev/norm/metadata.jsonl、--ngpu=1,并传入dump/phone_id_map.txt与dump/tone_id_map.txt。
default.yaml 配置项解读
conf/default.yaml 按功能区划分配置,完整内容如下:
########################################################### # FEATURE EXTRACTION SETTING # ########################################################### fs: 24000 # Sampling rate. n_fft: 2048 # FFT size (samples). n_shift: 300 # Hop size (samples). 12.5ms win_length: 1200 # Window length (samples). 50ms # If set to null, it will be the same as fft_size. window: "hann" # Window function. n_mels: 80 # Number of mel basis. fmin: 80 # Minimum freq in mel basis calculation. fmax: 7600 # Maximum frequency in mel basis calculation. ########################################################### # DATA SETTING # ########################################################### batch_size: 64 num_workers: 4 ########################################################### # MODEL SETTING # ########################################################### model: encoder_hidden_size: 128 encoder_kernel_size: 3 encoder_dilations: [1, 3, 9, 27, 1, 3, 9, 27, 1, 1] duration_predictor_hidden_size: 128 decoder_hidden_size: 128 decoder_output_size: 80 decoder_kernel_size: 3 decoder_dilations: [1, 3, 9, 27, 1, 3, 9, 27, 1, 3, 9, 27, 1, 3, 9, 27, 1, 1] ########################################################### # OPTIMIZER SETTING # ########################################################### optimizer: optim: adam # optimizer type learning_rate: 0.002 # learning rate max_grad_norm: 1 ########################################################### # TRAINING SETTING # ########################################################### max_epoch: 200 num_snapshots: 5 ########################################################### # OTHER SETTING # ########################################################### seed: 10086关键参数含义与影响:
- 特征提取:采样率 24000 Hz、FFT 2048 点、hop 300 点(12.5 ms)、窗长 1200 点(50 ms,Hann 窗)、80 维梅尔滤波器组,频率范围为 80–7600 Hz。这些参数同时决定预处理时提取的 log-mel 特征维度(80 维,与
decoder_output_size: 80一致)与声码器所需的输入维度; - 模型结构:encoder 与 decoder 均采用
kernel_size=3的卷积残差块,扩张率序列呈指数增长后回落(如1,3,9,27循环),以在不增加参数量的前提下扩大感受野;duration_predictor_hidden_size: 128对应时长预测器隐层维度; - 优化器:Adam,学习率 0.002,梯度裁剪阈值 1;
- 训练:最大 200 epoch,每轮保留 5 个快照(
num_snapshots: 5); - 其他:随机种子 10086,保证可复现。
这些配置与模型源码一一对应:在 speedyspeech.py 中,SpeedySpeechEncoder的默认dilations=[1, 3, 9, 27, 1, 3, 9, 27, 1, 1]、SpeedySpeechDecoder的默认 18 项扩张序列、decoder_output_size默认 80,均与 yaml 中的model段保持一致。
波形合成:声学模型 + 神经声码器
仓库选用 examples/csmsc/voc1 中训练的 Parallel WaveGAN 作为默认神经声码器。下载并解压pwg_baker_ckpt_0.4.zip后,Parallel WaveGAN checkpoint 包含以下文件:
pwg_baker_ckpt_0.4 ├── pwg_default.yaml # default config used to train parallel wavegan ├── pwg_snapshot_iter_400000.pdz # model parameters of parallel wavegan └── pwg_stats.npy # statistics used to normalize spectrogram when training parallel wavegan从 metadata.jsonl 合成
local/synthesize.sh 调用${BIN_DIR}/../synthesize.py,从metadata.jsonl逐句合成:
CUDA_VISIBLE_DEVICES=${gpus} ./local/synthesize.sh ${conf_path} ${train_output_path} ${ckpt_name} 0最后一个数字控制合成使用的声码器,可用0-4在{pwgan, multi band melgan, style melgan, hifigan, wavernn}中切换(对应脚本中 stage 0–4 分支,各自传入对应声码器的 config/ckpt/stats 路径)。
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] [--voice-cloning VOICE_CLONING] [--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] Synthesize with acoustic model & vocoder optional arguments: -h, --help show this help message and exit --am {...} Choose acoustic model type of tts task. --am_config AM_CONFIG Config of acoustic model. --am_ckpt AM_CKPT Checkpoint file of acoustic model. --am_stat AM_STAT mean and standard deviation used to normalize spectrogram when training acoustic model. --phones_dict PHONES_DICT phone vocabulary file. --tones_dict TONES_DICT tone vocabulary file. --speaker_dict SPEAKER_DICT speaker id map file. --voice-cloning VOICE_CLONING whether training voice cloning model. --voc {...} Choose vocoder type of tts task. --voc_config VOC_CONFIG Config of voc. --voc_ckpt VOC_CKPT Checkpoint file of voc. --voc_stat VOC_STAT mean and standard deviation used to normalize spectrogram when training voc. --ngpu NGPU if ngpu == 0, use cpu. --test_metadata TEST_METADATA test metadata. --output_dir OUTPUT_DIR output dir.从纯文本端到端合成
local/synthesize_e2e.sh 调用${BIN_DIR}/../synthesize_e2e.py,从文本文件直接合成:
CUDA_VISIBLE_DEVICES=${gpus} ./local/synthesize_e2e.sh ${conf_path} ${train_output_path} ${ckpt_name} 0最后一个数字可用0,1,3,4在{pwgan, multi band melgan, hifigan, wavernn}中切换(style melgan 的动态图转静态图当时尚未就绪,未列入)。synthesize_e2e.py 在 synthesize.py 基础上增加了--lang(模型语言,zh或en)、--inference_dir(保存推理模型)、--spk_id(多说话人模型的说话人 id)与--text(待合成文本,格式为utt_id sentence每行一对)参数。
两套合成脚本共用的参数约定:
--am为声学模型类型,格式为{model_name}_{dataset};--am_config、--am_ckpt、--am_stat、--phones_dict、--tones_dict为声学模型参数,对应 SpeedySpeech 预训练模型解压后的 5 个文件;--voc为声码器类型,格式为{model_name}_{dataset};--voc_config、--voc_ckpt、--voc_stat为声码器参数,对应 Parallel WaveGAN 预训练模型解压后的 3 个文件;--lang为模型语言,可取zh或en;--test_metadata应为dump目录中test的norm子目录下的 metadata 文件;--text为包含待合成句子的文本文件;--output_dir为合成音频的保存目录;--ngpu为使用的 GPU 数量,ngpu == 0时使用 CPU。
在 synthesize.sh 中,每次合成都会前置FLAGS_allocator_strategy=naive_best_fit与FLAGS_fraction_of_gpu_memory_to_use=0.01,即限制 GPU 显存占用比例(0.01)并采用朴素最佳适配的显存分配策略,便于在显存有限的机器上运行。
静态模型推理
合成阶段结束后,会在${train_output_path}/inference中生成 SpeedySpeech 与 Parallel WaveGAN 的静态模型。local/inference.sh 调用${BIN_DIR}/inference.py,提供 speedyspeech + pwgan 的 Paddle 静态模型推理示例:
CUDA_VISIBLE_DEVICES=${gpus} ./local/inference.sh ${train_output_path}推理脚本从--inference_dir=${train_output_path}/inference加载静态模型,输入文本为assets/sentences.txt(即 paddlespeech/t2s/assets/sentences.txt),输出到${train_output_path}/pd_infer_out,并同样支持切换pwgan、mb_melgan、hifigan三种声码器。
模型导出与多端部署
run.sh 的 stage 5–9 展示了完整的部署链路,从静态模型进一步导出 ONNX、Paddle-Lite 模型并做量化:
- 导出 ONNX:
./local/paddle2onnx.sh ${train_output_path} inference inference_onnx speedyspeech_csmsc,使用paddle2onnx工具、--opset_version 11导出.onnx文件;脚本注释建议在速度与质量之间权衡时优先使用 hifigan 作为声码器; - ONNX Runtime 推理:
./local/ort_predict.sh调用ort_predict_e2e.py,以--device=cpu --cpu_threads=2在 CPU 上从文本端到端推理,也可从dump/test/norm/metadata.jsonl逐句合成; - 导出 Paddle-Lite:
./local/export2lite.sh通过paddle_lite_opt --valid_targets x86将静态模型优化为 Paddle-Lite 格式; - Paddle-Lite 推理:
./local/lite_predict.sh; - PTQ 静态量化:
./local/PTQ_static.sh调用PTQ_static.py,基于dump/dev/norm/metadata.jsonl校准数据、--onnx_format=True对speedyspeech_csmsc做训练后静态量化。
预训练模型与评测结果
仓库提供了训练好的 SpeedySpeech 模型(音频边缘无静音版本):
speedyspeech_nosil_baker_ckpt_0.5.zipspeedyspeech_csmsc_ckpt_0.2.0.zip
以及静态模型、ONNX 模型、Paddle-Lite 模型等发布形态(分别为speedyspeech_nosil_baker_static_0.5.zip、speedyspeech_csmsc_static_0.2.0.zip、speedyspeech_csmsc_onnx_0.2.0.zip、speedyspeech_csmsc_pdlite_1.3.0.zip)。以上模型与 Parallel WaveGAN 声码器pwg_baker_ckpt_0.4.zip均可按 README 中给出的 CDN 地址下载,也可对照 examples/csmsc/voc1 自行训练声码器。
官方示例评测结果(default 配置、单 GPU 训练 11400 步):
| Model | Step | eval/loss | eval/l1_loss | eval/duration_loss | eval/ssim_loss |
|---|---|---|---|---|---|
| default | 1(gpu) x 11400 | 0.79532 | 0.400246 | 0.030259 | 0.36482 |
SpeedySpeech checkpoint 解压后包含以下文件:
speedyspeech_csmsc_ckpt_0.2.0 ├── default.yaml # default config used to train speedyspeech ├── feats_stats.npy # statistics used to normalize spectrogram when training speedyspeech ├── phone_id_map.txt # phone vocabulary file when training speedyspeech ├── snapshot_iter_30600.pdz # model parameters and optimizer states └── tone_id_map.txt # tone vocabulary file when training speedyspeech使用预训练模型一步合成
在示例目录下 source 环境后,可借助预训练 SpeedySpeech 与 Parallel WaveGAN 模型,用synthesize_e2e.py对 paddlespeech/t2s/assets/sentences.txt 中的句子直接合成:
source path.sh FLAGS_allocator_strategy=naive_best_fit \ FLAGS_fraction_of_gpu_memory_to_use=0.01 \ python3 ${BIN_DIR}/../synthesize_e2e.py \ --am=speedyspeech_csmsc \ --am_config=speedyspeech_csmsc_ckpt_0.2.0/default.yaml \ --am_ckpt=speedyspeech_csmsc_ckpt_0.2.0/snapshot_iter_30600.pdz \ --am_stat=speedyspeech_csmsc_ckpt_0.2.0/feats_stats.npy \ --voc=pwgan_csmsc \ --voc_config=pwg_baker_ckpt_0.4/pwg_default.yaml \ --voc_ckpt=pwg_baker_ckpt_0.4/pwg_snapshot_iter_400000.pdz \ --voc_stat=pwg_baker_ckpt_0.4/pwg_stats.npy \ --lang=zh \ --text=${BIN_DIR}/../../assets/sentences.txt \ --output_dir=exp/default/test_e2e \ --inference_dir=exp/default/inference \ --phones_dict=speedyspeech_csmsc_ckpt_0.2.0/phone_id_map.txt \ --tones_dict=speedyspeech_csmsc_ckpt_0.2.0/tone_id_map.txt该命令中--am/--am_config/--am_ckpt/--am_stat/--phones_dict/--tones_dict对应 SpeedySpeech 预训练模型解压后的全部文件,--voc/--voc_config/--voc_ckpt/--voc_stat对应 Parallel WaveGAN 的全部文件,--lang=zh指定中文,合成结果写入exp/default/test_e2e,静态模型同时导出到exp/default/inference。
源码级结构速览:SpeedySpeech 模型实现
从 paddlespeech/t2s/models/speedyspeech/speedyspeech.py 可清晰看到 SpeedySpeech 的模块化组成,与上文 yaml 配置一一对应:
- ResidualBlock:单个残差块,由
Conv1D + ReLU + BatchNorm1D堆叠 n 次构成,采用显式左右非对称 padding((begin, end))保证输出时间长度与输入一致(注释说明 ONNX 不支持 dilation 与'same'padding 组合,故未使用padding='same'),前向计算为x + blocks(x); - TextEmbedding:音素嵌入与可选的声调嵌入双路输入,默认按元素相加融合(
concat=False),也支持拼接模式;这正是训练数据中"由韵母标签拆出音素与声调"这一预处理步骤对应的模型侧输入设计; - SpeedySpeechEncoder:嵌入层 → prenet(Linear+ReLU)→ 按扩张率序列堆叠的残差块 → postnet(Linear / ReLU+BatchNorm)→ Linear,输出
(B, T, hidden_size)的编码序列; - DurationPredictor:三层残差块(kernel size 分别为 4/3/1)+ Linear 输出,预测对数域的每音素时长;
- SpeedySpeechDecoder:与编码器类似的残差块堆叠 + postnet 残差块 + Linear,输出维度为
decoder_output_size(即 80 维梅尔特征); - SpeedySpeech:将上述模块组装,支持
tone_size(声调数)与spk_num(说话人数,非空时加入 speaker 嵌入,可扩展多说话人场景),并统一用xavier_uniform初始化参数。
训练配套的更新器与损失定义位于 speedyspeech_updater.py,评测指标中的l1_loss(梅尔谱 L1)、duration_loss(时长预测)、ssim_loss(结构相似性)即训练与评估阶段的核心损失项。
小结
本文以 examples/csmsc/tts2 为主线,完整梳理了从 CSMSC 数据集与 MFA 对齐准备、四步预处理、SpeedySpeech 训练、多声码器合成、静态模型推理到 ONNX/Paddle-Lite/PTQ 部署的全链路实践,并结合 conf/default.yaml 与 speedyspeech.py 等源码解释了特征参数、模型结构超参与训练损失之间的对应关系。按此流程,你既可以复现 CSMSC 单说话人中文语音合成,也可以将同样的 stage 流水线迁移到其他数据集或扩展多说话人(spk_num)场景,并借助synthesize_e2e.py的--lang参数在中文与英文模型间切换。
- 人工智能
- 语音
- 音频
【免费下载链接】PaddleSpeech
Easy-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.
相关推荐
Solana 集群基准测试实战:从 Multinode 测试网搭建到 TPS 压测与调试
Solana 集群基准测试实战:从 Multinode 测试网搭建到 TPS 压测与调试 本文围绕 Solana 仓库中的集群基准测试文档( docs/src/
人工智能语音音频PaddleSpeech 实战:基于 CSMSC 数据集训练 Style MelGAN 声码器(examples/csmsc/voc4)
PaddleSpeech 实战:基于 CSMSC 数据集训练 Style MelGAN 声码器(examples/csmsc/voc4) 本篇指南围绕 Padd
人工智能语音音频NLP媒体生成PaddleSpeech SpeedySpeech 模型实现与训练实战:基于 PaddlePaddle 的音素级并行 TTS 声学模型源码解析
PaddleSpeech SpeedySpeech 模型实现与训练实战:基于 PaddlePaddle 的音素级并行 TTS 声学模型源码解析 SpeedySp
人工智能语音音频
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考