PaddleSpeech 中的 AISHELL-3 多说话人中文语音语料库数据规格、多说话人 TTS 应用与完整训练实践【免费下载链接】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/PaddleSpeechAISHELL-3 是当前开源社区中规模最大、保真度最高的中文多说话人语音语料库之一专为多说话人文本转语音TTS系统设计。本文基于 PaddleSpeech 仓库中对该语料库的官方说明dataset/aishell3/README.md系统梳理其数据规格、许可边界并结合仓库内examples/aishell3下的完整 recipe讲解如何用它训练 FastSpeech2、VITS、ERNIE-SAT 等多说话人模型以及配套的声码器与语音克隆方案。读完本文你将掌握从语料下载、MFA 时长对齐、特征预处理到模型训练与合成的完整实战路径。一、AISHELL-3 语料库核心规格AISHELL-3 是一个大规模、高保真的多说话人中文普通话语料库其设计目标就是支撑多说话人 TTS 系统的训练。根据仓库文档 dataset/aishell3/README.md 的官方说明其核心规格如下维度规格语种中文普通话Mandarin总时长约85 小时情感中性的录音说话人数218 位母语为中文普通话的说话人总句数88,035条话语utterance说话人属性性别gender、年龄段age group、母语口音native accents均有显式标注文本标注同时提供**字级character-level与拼音级pinyin-level**两种转写转写质量字与声调tone转写准确率超过98%经由专业语音标注与严格的声调、韵律质检上述说话人辅助属性性别、年龄段、口音和拼音转写是训练高质量多说话人 TTS 的关键素材多说话人模型依赖说话人 ID 与说话人嵌入来区分音色而带声调的拼音/音素序列则帮助模型在中文场景下准确建模声调与韵律。使用许可边界文档同时明确给出 AISHELL-3 的许可限制该数据库免费用于学术研究未经许可不得用于商业用途This database is free for academic research, not in the commerce, if without permission。在将基于该语料库训练的模型用于生产或商业场景前必须向版权方申请授权。二、AISHELL-3 在 PaddleSpeech 中的配套示例全景PaddleSpeech 在 examples/aishell3/README.md 中围绕 AISHELL-3 提供了整套可运行的 recipe覆盖声学模型、声码器、语音克隆三大类声学模型TTStts0— Tacotron2tts1— TransformerTTStts2— SpeedySpeechtts3— FastSpeech2声码器Vocodervoc0— WaveFlowvoc1— Parallel WaveGANvoc3— MultiBand MelGAN语音克隆 / 端到端vc0— Tacotron2 Voice Cloning with GE2Evc1— FastSpeech2 Voice Cloning with GE2Evc2— FastSpeech2 Voice Cloning with ECAPA-TDNNvits— VITS端到端 TTSvits-vc— VITS 语音转换ernie_sat— ERNIE-SAT语音-文本联合预训练支持语音编辑、个性化语音合成与语音克隆其中tts3FastSpeech2是最具代表性、文档最完整的多说话人 TTS 示例下文以其为主线展开实战流程其余 recipe 共享同一套 AISHELL-3 数据准备逻辑。三、实战一数据下载与 MFA 时长对齐AISHELL-3 的官方发布站点为 OpenSLR 93 号资源对应 dataset/aishell3/README.md 中给出的链接原始压缩包解压后得到数据集目录data_aishell3。在 PaddleSpeech 各 recipe 中默认将数据解压到~/datasets即最终数据目录为~/datasets/data_aishell3。由于 FastSpeech2 这类基于时长预测的非自回归模型需要每个音素/音节对应的时长标注PaddleSpeech 采用MFAMontreal Forced Aligner生成对齐结果可直接下载官方提供的带声调对齐结果aishell3_alignment_tone.tar.gz含 218 位说话人、带声调的音素级对齐也可以参考仓库中的 examples/other/mfa 示例自行训练 MFA 模型当前使用 MFA1.x下载后解压到 recipe 目录下并命名为aishell3_alignment_tone。VITS见 examples/aishell3/vits/README.md只需 MFA 提供音素序列即可不需要时长而 FastSpeech2tts3必须使用时长对齐结果。四、实战二FastSpeech2 多说话人 TTS 完整流程进入 examples/aishell3/tts3该目录包含conf/default.yaml模型配置、path.sh环境初始化、local/分阶段脚本与run.sh一键入口。4.1 环境与一键执行# 进入 examples/aishell3/tts3 后 ./run.shrun.sh内部先执行source path.sh后者见 examples/aishell3/tts3/path.sh负责设置MAIN_ROOT仓库根目录、PYTHONPATH以及BIN_DIRpaddlespeech/t2s/exps/fastspeech2从而让后续脚本可以直接调用 PaddleSpeech 的训练/预处理工具。run.sh通过parse_options.sh支持按阶段运行# 只做数据预处理stage 0 ./run.sh --stage 0 --stop-stage 0run.sh见 examples/aishell3/tts3/run.sh定义的阶段划分如下stage内容0数据预处理MFA 时长提取、特征抽取、统计量计算、归一化1训练 FastSpeech2 模型2基于metadata.jsonl合成波形默认 pwgan 声码器参数 1 切换 hifigan3基于文本文件端到端合成4静态图inference推理5导出 ONNX 模型fastspeech2 pwgan/hifigan6ONNXRuntime 推理7导出 Paddle-Lite 模型8Paddle-Lite 推理4.2 数据预处理与 dump 目录结构预处理由 examples/aishell3/tts3/local/preprocess.sh 分 4 个子阶段完成用utils/gen_duration_from_textgrid.py从 MFA 的 TextGrid 结果生成durations.txt调用paddlespeech/t2s/exps/fastspeech2/preprocess.py以--datasetaishell3 --rootdir~/datasets/data_aishell3/ --dumpdirdump --dur-filedurations.txt --configconf/default.yaml --num-cpu20 --cut-silTrue抽取 speech频谱、pitch、energy 特征用utils/compute_statistics.py分别对 train 集的speech、pitch、energy三个字段计算均值/方差统计量调用normalize.py对 train/dev/test 三部分做归一化并把 phone、speaker 映射为 ID注意 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.npytrain/dev/test三个子集各自包含raw原始特征与norm归一化特征两个子目录dump/train/*_stats.npy是从训练集计算出的归一化统计量供 dev/test 归一化复用每个子目录内还有一个metadata.jsonl以 JSON Lines 形式记录每条话语的 phones、text_lengths、speech_lengths、durations、speech/pitch/energy 特征路径、speaker 和 id 等字段phone_id_map.txt与speaker_id_map.txt是音素和说话人的 ID 映射表多说话人训练时必须使用后者。4.3 模型训练训练入口为paddlespeech/t2s/exps/fastspeech2/train.py通过 examples/aishell3/tts3/local/train.sh 调用CUDA_VISIBLE_DEVICES${gpus} ./local/train.sh ${conf_path} ${train_output_path}其完整参数如下摘自 examples/aishell3/tts3/README.mdusage: 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-metadata分别指向dump/train/norm、dump/dev/norm下的metadata.jsonl使用归一化后的特征--output-dir实验输出目录checkpoint 保存在其中的checkpoints/子目录--ngpu使用的 GPU 数量ngpu 0时使用 CPU--phones-dict音素词表文件dump/phone_id_map.txt--speaker-dict说话人 ID 映射文件dump/speaker_id_map.txt多说话人 FastSpeech2 必须提供--voice-cloning是否训练语音克隆模型。4.4 配置参数详解conf/default.yamlexamples/aishell3/tts3/conf/default.yaml 是多说话人 FastSpeech2 在 AISHELL-3 上的默认配置分为 6 大块逐块说明特征提取设置采样率fs: 24000、FFT 大小n_fft: 2048、帧移n_shift: 30012.5ms、窗长win_length: 120050ms、窗函数hannMel 滤波器组最低/最高频率fmin: 80/fmax: 7600、Mel 通道数n_mels: 80基频提取范围f0min: 80/f0max: 400FastSpeech2 需要 pitch 特征。数据设置batch_size: 64、num_workers: 2。模型设置model 块编码器/解码器均为 4 层elayers/dlayers: 4、注意力维度adim: 384、FFN 隐单元eunits/dunits: 1536、注意力头aheads: 2position-wise 层采用卷积conv1d核大小 3时长预测器 2 层、256 通道pitch 预测器 5 层、256 通道energy 预测器 2 层postnet 5 层、256 通道dropout 普遍为 0.2pitch/energy 预测器 dropout 为 0.5多说话人关键配置spk_embed_dim: 256说话人嵌入维度与spk_embed_integration_type: concat说话人嵌入以拼接方式注入。优化器与训练设置Adam 优化器、学习率0.001、max_epoch: 200、num_snapshots: 5use_masking: True表示损失计算时对 padding 部分做掩码随机种子seed: 10086。4.5 合成与声码器声学模型输出的频谱需经声码器还原为波形。tts3默认使用 Parallel WaveGANpwgan_aishell3预训练权重为pwg_aishell3_ckpt_0.5.zip解压后包含 3 个文件pwg_aishell3_ckpt_0.5 ├── default.yaml # 训练 Parallel WaveGAN 时的默认配置 ├── feats_stats.npy # 频谱归一化统计量 └── snapshot_iter_1000000.pdz # 生成器参数从 metadata 合成./local/synthesize.sh调用paddlespeech/t2s/exps/synthesize.py最后一个数字参数0/1分别选择 pwgan/hifigan 声码器。其核心参数为--am形如{模型名}_{数据集}如fastspeech2_aishell3、--am_config/--am_ckpt/--am_stat声学模型的配置、checkpoint、频谱归一化统计量、--phones_dict/--tones_dict/--speaker_dict、--voc/--voc_config/--voc_ckpt/--voc_stat声码器对应 3 个文件、--test_metadatadump/test/norm下的 metadata.jsonl、--output_dir与--ngpu。从文本端到端合成./local/synthesize_e2e.sh调用paddlespeech/t2s/exps/synthesize_e2e.py相比前者增加了--spk_id多说话人模型指定说话人 ID、--langzh或en、--text每行一个utt_id sentence的文本文件、--inference_dir推理模型保存目录等参数。4.6 使用预训练模型快速合成若不想从头训练可直接下载官方发布的预训练权重详见 examples/aishell3/tts3/README.md动态图权重fastspeech2_aishell3_ckpt_1.1.0.zip含default.yaml、speech/pitch/energy_stats.npy、phone_id_map.txt、speaker_id_map.txt、snapshot_iter_96400.pdz另有静态图、PIR 静态图需FLAGS_enable_pir_api1且 paddlepaddle≥3.0.0b2、ONNX、Paddle-Lite 等多个版本。示例合成命令source path.sh FLAGS_allocator_strategynaive_best_fit \ FLAGS_fraction_of_gpu_memory_to_use0.01 \ python3 ${BIN_DIR}/../synthesize_e2e.py \ --amfastspeech2_aishell3 \ --am_configfastspeech2_aishell3_ckpt_1.1.0/default.yaml \ --am_ckptfastspeech2_aishell3_ckpt_1.1.0/snapshot_iter_96400.pdz \ --am_statfastspeech2_aishell3_ckpt_1.1.0/speech_stats.npy \ --vocpwgan_aishell3 \ --voc_configpwg_aishell3_ckpt_0.5/default.yaml \ --voc_ckptpwg_aishell3_ckpt_0.5/snapshot_iter_1000000.pdz \ --voc_statpwg_aishell3_ckpt_0.5/feats_stats.npy \ --langzh \ --text${BIN_DIR}/../../assets/sentences.txt \ --output_direxp/default/test_e2e \ --phones_dictfastspeech2_aishell3_ckpt_1.1.0/phone_id_map.txt \ --speaker_dictfastspeech2_aishell3_ckpt_1.1.0/speaker_id_map.txt \ --spk_id0 \ --inference_direxp/default/inference该命令使用预训练 FastSpeech2--spk_id0指定说话人与 Parallel WaveGAN对paddlespeech/t2s/assets/sentences.txt中的文本批量合成语音。五、AISHELL-3 支撑的更多多说话人方案AISHELL-3 的 218 说话人、带声调拼音与说话人属性标注使其成为多说话人建模的绝佳数据源仓库中对应了多种玩法5.1 VITS 端到端模型examples/aishell3/vitsexamples/aishell3/vits 使用 AISHELL-3 训练多说话人 VITS。VITS 是端到端 TTS无需单独声码器其预处理只需 MFA 提供音素序列不需要时长流程同样遵循下载数据 → MFA 对齐 →./run.sh分阶段预处理/训练/合成的套路。5.2 ERNIE-SAT 语音-文本联合预训练examples/aishell3/ernie_satexamples/aishell3/ernie_sat 基于 ERNIE-SAT 语音-文本联合预训练框架其两大创新是以中英音素作为输入实现跨语言与个性化软音素映射通过语音与文本的联合掩码学习实现语音-文本对齐。可应用于语音编辑、个性化语音合成与语音克隆等场景。AISHELL-3 的多说话人与带声调标注是其跨语言/个性化建模的理想训练数据。5.3 语音克隆examples/aishell3/vc0、vc1、vc2vc0Tacotron2 GE2E 说话人编码器实现语音克隆vc1FastSpeech2 GE2E 语音克隆vc2FastSpeech2 ECAPA-TDNN 说话人编码器语音克隆。语音克隆模型在训练时把说话人编码器如 GE2E、ECAPA-TDNN提取的说话人嵌入作为条件输入推理阶段只需要目标说话人的少量参考音频即可克隆其音色这与 AISHELL-3 标注的 218 位说话人数据规模高度契合。六、总结一条数据驱动多说话人 TTS 的完整链路从 dataset/aishell3/README.md 的语料规格出发AISHELL-3 在 PaddleSpeech 中形成了完整的多说话人 TTS 技术闭环数据层约 85 小时、218 说话人、88,035 句带字级/拼音级转写与说话人属性标注转写准确率超 98%学术免费、商用需授权对齐层MFA 生成带声调的时长/音素对齐结果aishell3_alignment_tone预处理层dump目录规范raw/norm 特征、统计量、ID 映射表、metadata.jsonl由 examples/aishell3/tts3/local/preprocess.sh 一键完成建模层FastSpeech2、Tacotron2、VITS、ERNIE-SAT 等声学/端到端模型 Parallel WaveGAN、HiFiGAN、MultiBand MelGAN 等声码器应用层tts3的完整run.sh流水线覆盖训练、合成、静态图/ONNX/Paddle-Lite 导出与推理多说话人、个性化、语音克隆等应用均可直接落地。无论是要复现多说话人 TTS 基线、做个性化声音克隆还是研究语音-文本联合预训练AISHELL-3 与 PaddleSpeech 的这套 recipe 都是可以直接跑通的参考实现。【免费下载链接】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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考