news 2026/9/14 16:31:39

如何用 NeMo Magpie-TTS 合成语音并用参考音频克隆音色

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 NeMo Magpie-TTS 合成语音并用参考音频克隆音色

如何用 NeMo Magpie-TTS 合成语音并用参考音频克隆音色

【免费下载链接】SpeechA scalable generative AI framework built for researchers and developers working on Large Language Models, Multimodal, and Speech AI (Automatic Speech Recognition and Text-to-Speech)项目地址: https://gitcode.com/GitHub_Trending/nem/Speech

如果你需要用 NeMo Speech 中的 Magpie-TTS 完成两件事——把文本合成为语音,并用几秒参考音频让合成结果模仿指定说话人的音色——这篇文章给出仓库中两条可执行路径:单句快速合成用MagpieTTSModel.do_tts,带参考音频的音色克隆用推理脚本examples/tts/magpietts_inference.py配合 manifest。适用前提是已经安装 NeMo(见 安装指南 的前置说明),并已准备好 TTS checkpoint 和音频 codec 模型;公开的多语言 357M checkpoint 与 codec 均托管在 Hugging Face 的nvidia/magpie_tts_multilingual_357mnvidia/nemo-nano-codec-22khz-1.89kbps-21.5fps(模型名来自 Magpie-TTS 文档 与 微调文档)。

单句合成:do_tts 快速路径

NeMo 入门指南 展示了最小合成示例:

from nemo.collections.tts.models import MagpieTTSModel import soundfile as sf # Load model (multilingual 357M, from Hugging Face) model = MagpieTTSModel.from_pretrained("nvidia/magpie_tts_multilingual_357m") model.eval() # Generate speech audio, audio_len = model.do_tts( transcript="Hello! Welcome to NeMo Speech AI.", language="en", ) # Save to file sf.write("output.wav", audio[0].cpu().numpy(), 22050) print("Speech saved to output.wav")

保存后用任意播放器听output.wav即可确认合成成功。

需要注意do_tts的适用范围:源码 magpietts.py 中该方法只支持 baked context embedding 的上下文注入,不支持音频条件(即不支持用参考音频克隆音色);在没有 baked context embedding 的 checkpoint 上调用会抛出ValueError: Model does not have a baked context embedding。因此do_tts适合验证环境和做单说话人合成;要按参考音频克隆音色,必须走下一节的 manifest + 推理脚本路径。参数含义(依据源码 docstring):

  • language:语言代码,支持的值取决于模型的 tokenizer 配置,如"en""de""es"
  • apply_TN:是否用nemo_text_processing做文本规范化,True时需要该包已安装;
  • speaker_index:仅适用于带 baked context embeddings 的多说话人模型,取值范围[0, num_baked_speakers - 1]

准备参考音频与数据集配置

带参考音频的推理按数据集(manifest)批量执行,每条记录自带一段参考音频。准备分三步:

1. 参考音频文件。把克隆目标说话人的参考音频放入音频目录。微调文档 对参考音频给出了建议:时长约 3 秒以上、与目标音频来自同一说话人,且说话人相似度较高(文档以 TitaNet 相似度 ≥ 0.6 为例)效果更佳。

2. manifest 文件。每行一个 JSON,最小字段如下(字段定义与示例格式来自 magpietts-finetuning.rst;路径相对于audio_dir,也可用绝对路径):

{ "audio_filepath": "relative/path/to/audio.wav", "text": "transcript of the utterance", "duration": 5.2, "context_audio_filepath": "relative/path/to/context.wav" }

其中context_audio_filepath就是音色克隆所用的参考音频。

3. 数据集配置 JSON。推理脚本通过--datasets_json_path加载数据集配置(格式见仓库自带示例 evalset_config.json):

{ "my_clone_set": { "manifest_path": "/path/to/my_clone_manifest.json", "audio_dir": "/path/to/my_audio_dir", "feature_dir": null } }

数据集名(如my_clone_set)之后会出现在输出目录名里,也可用--datasets参数挑选要处理的子集。脚本启动时会校验 manifest 与音频目录是否存在,路径缺失会直接报错,可尽早发现配置问题。

运行推理并克隆音色

执行推理脚本(参数与命令形式来自 Magpie-TTS 文档 及 magpietts_inference.py 的参数定义;/path/to/...处替换为你自己的模型与数据路径):

python examples/tts/magpietts_inference.py \ --nemo_files /path/to/magpietts_model.nemo \ --codecmodel_path /path/to/audio_codec.nemo \ --datasets_json_path /path/to/my_evalset_config.json \ --datasets my_clone_set \ --out_dir /path/to/output \ --batch_size 1 \ --temperature 0.6 \ --topk 80 \ --use_cfg \ --cfg_scale 2.5

各参数说明:

  • --nemo_files:TTS checkpoint 的.nemo文件(也可改用--hparams_files+--checkpoint_files加载.ckpt,二选一);
  • --codecmodel_path(必填):音频 codec 模型路径,本地文件或用nvidia/nemo-nano-codec-22khz-1.89kbps-21.5fps下载的模型;
  • --datasets_json_path(必填):上面第 3 步的数据集配置 JSON;--out_dir(必填)为输出目录;
  • --temperature:采样温度,值越低输出越确定、越高变化越多;--topk:采样只从概率最高的 k 个候选 token 中选取;
  • --use_cfg/--cfg_scale:启用 classifier-free guidance 并设置其强度,用于增强对条件信息(含音色条件)的遵循度;
  • --tokenizer_name默认english_phoneme,当数据集配置未指定语言专属 tokenizer 时生效;--language默认en

文档同时指出:生产部署中可在推理时保留 attention prior(ModelInferenceParameters默认apply_attention_prior=True),把 cross-attention 向单调对齐方向轻微约束,降低训练分布外文本出现对齐漂移的风险;若使用带 frame stacking 训练的模型,加--use_local_transformer启用 Local Transformer,MaskGit 解码模式用--maskgit_n_steps控制迭代次数(以少量质量换取更快的推理)。

验证结果

推理完成后,生成结果写入--out_dir下按 checkpoint、语言和数据集名命名的目录。核心产物:

  • predicted_audio_<idx>.wav:按 manifest 顺序生成、与text字段对应的合成语音;
  • context_audio_<idx>.wav:脚本从audio_dir复制过来的参考音频,方便与生成结果并排试听核对音色。

听感之外,脚本提供量化评估:追加--run_evaluation后,会对生成音频计算 CER(用默认 ASR 模型nvidia/parakeet-tdt-1.1b转写后对比文本)、说话人相似度 SSIM(默认--sv_model titanet)等指标,写出{dataset}_metrics_*.json、逐条filewise指标和all_experiment_metrics.csv到输出目录。若想在验收时硬性把关,可以传入质量目标:

--run_evaluation \ --sv_model titanet \ --ssim_target 0.6 \ --cer_target 0.05

其中--ssim_target的取值参考 微调文档 对参考音频"说话人相似度 ≥ 0.6"的建议。脚本在结束时对不达标会直接报错,例如SSIM 0.4821 below target 0.6000CER 0.0812 exceeds target 0.0500(报错文案见 magpietts_inference.py);全部达标则打印Inference and evaluation completed successfully.

限制与说明

  • do_tts路径不适用于参考音频克隆音色(源码 docstring 明确 "NO audio conditioning",仅支持 baked context embedding),本文两条路径的适用边界务必分清;
  • 长文本生成为 beta 特性且目前仅支持英文,输入需要带标点、尤其是句子边界,详见 Longform 推理指南;
  • 输出采样率固定为 22050(与sf.write示例一致);manifest 中未提供context_audio_filepath的记录只做普通文本合成,不做音色克隆。

【免费下载链接】SpeechA scalable generative AI framework built for researchers and developers working on Large Language Models, Multimodal, and Speech AI (Automatic Speech Recognition and Text-to-Speech)项目地址: https://gitcode.com/GitHub_Trending/nem/Speech

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 16:28:33

低配置电脑如何流畅跑 AI 绘画:4 个简单优化方法缩短生成时间

低配置电脑如何流畅跑 AI 绘画&#xff1a;4 个简单优化方法缩短生成时间 【免费下载链接】awesome-ai-painting AI绘画资料合集&#xff08;包含国内外可使用平台、使用教程、参数教程、部署教程、业界新闻等等&#xff09; Stable diffusion、AnimateDiff、Stable Cascade 、…

作者头像 李华
网站建设 2026/9/14 16:26:17

AI系统可度量可治理:企业级智能体效能管理实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/14 16:22:55

NineData与阿里云DMS数据库权限管理工具对比分析

1. 数据库权限管理工具选型背景在数据驱动的企业环境中&#xff0c;数据库权限管理是数据安全的核心防线。根据行业调研数据显示&#xff0c;超过60%的数据泄露事件源于权限管理不当。NineData和阿里云DMS作为当前市场上主流的数据库管理工具&#xff0c;在权限申请、审批与回收…

作者头像 李华
网站建设 2026/9/14 16:20:54

腾讯云AIGC全栈方案:漫剧工业化生产实战路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/14 16:17:00

马自达i-ACTIVSENSE vs 新势力智驾:辅助驾驶的“认真”该由谁定义?

聊到智驾辅助&#xff0c;大家的第一反应几乎都是华为ADS、小鹏XNGP、蔚来NOP这一串名字&#xff0c;很少有人会把马自达放进同一张榜单里。这很正常&#xff0c;论算力、论激光雷达、论城市领航开城数量&#xff0c;马自达连新势力的尾灯都看不见&#xff0c;甚至到今天它还在…

作者头像 李华