重要提示
您正在查看 NeMo 2.0 文档。此版本对 API 和新库 NeMo Run 进行了重大更改。我们目前正在将 NeMo 1.0 中的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档。
NeMo TTS API#
模型类#
Mel 频谱图生成器#
- class nemo.collections.tts.models.FastPitchModel(*args: Any, **kwargs: Any)#
基类:
SpectrogramGenerator
,Exportable
,FastPitchAdapterModelMixin
FastPitch 模型 (https://arxiv.org/abs/2006.06873),用于从文本生成 mel 频谱图。
- property disabled_deployment_input_names#
实现此方法以返回一组禁用于导出的输入名称
- generate_spectrogram(
- tokens: torch.tensor,
- speaker: int | None = None,
- pace: float = 1.0,
- reference_spec: torch.tensor | None = None,
- reference_spec_lens: torch.tensor | None = None,
接受一批文本或 text_tokens 并返回一批频谱图
- 参数:
tokens – 表示要生成的文本的 torch 张量
- 返回:
频谱图
- input_example(max_batch=1, max_dim=44)#
生成用于跟踪等的输入示例。 :returns: 输入示例的元组。
- property input_types#
定义这些以启用输入神经类型检查
- interpolate_speaker(
- original_speaker_1,
- original_speaker_2,
- weight_speaker_1,
- weight_speaker_2,
- new_speaker_id,
此方法在模型训练的两个原始说话人之间执行说话人插值。
- 输入
original_speaker_1:模型中第一个现有说话人的整数说话人 ID original_speaker_2:模型中第二个现有说话人的整数说话人 ID weight_speaker_1:权重组合期间与第一个说话人关联的浮点权重 weight_speaker_2:权重组合期间与第二个说话人关联的浮点权重 new_speaker_id:模型中新的插值说话人的整数说话人 ID
- classmethod list_available_models() List[PretrainedModelInfo] #
此方法返回一个预训练模型列表,该列表可以直接从 NVIDIA 的 NGC 云实例化。 :returns: 可用的预训练模型列表。
- property output_types#
定义这些以启用输出神经类型检查
- parse(str_input: str, normalize=True) torch.tensor #
一个辅助函数,它接受原始 python 字符串并将它们转换为张量。张量应具有 2 个维度。第一个是批次,其大小应为 1。第二个应表示时间。张量应表示标记化或嵌入的文本,具体取决于模型。
请注意,某些模型在此函数中具有 normalize 参数,如果可用,该参数将应用规范化器。
- class nemo.collections.tts.models.MixerTTSModel(*args: Any, **kwargs: Any)#
基类:
SpectrogramGenerator
,Exportable
Mixer-TTS 和 Mixer-TTS-X 模型 (https://arxiv.org/abs/2110.03584),用于从文本生成 mel 频谱图。
- generate_spectrogram(
- tokens: torch.Tensor | None = None,
- tokens_len: torch.Tensor | None = None,
- lm_tokens: torch.Tensor | None = None,
- raw_texts: List[str] | None = None,
- norm_text_for_lm_model: bool = True,
- lm_model: str = 'albert',
接受一批文本或 text_tokens 并返回一批频谱图
- 参数:
tokens – 表示要生成的文本的 torch 张量
- 返回:
频谱图
- property input_types#
定义这些以启用输入神经类型检查
- classmethod list_available_models() List[PretrainedModelInfo] #
此方法返回一个预训练模型列表,该列表可以直接从 NVIDIA 的 NGC 云实例化。 :returns: 可用的预训练模型列表。
- property output_types#
定义这些以启用输出神经类型检查
- parse(text: str, normalize=True) torch.Tensor #
一个辅助函数,它接受原始 python 字符串并将它们转换为张量。张量应具有 2 个维度。第一个是批次,其大小应为 1。第二个应表示时间。张量应表示标记化或嵌入的文本,具体取决于模型。
请注意,某些模型在此函数中具有 normalize 参数,如果可用,该参数将应用规范化器。
- class nemo.collections.tts.models.RadTTSModel(*args: Any, **kwargs: Any)#
基类:
SpectrogramGenerator
,Exportable
- generate_spectrogram()#
- parse()#
- class nemo.collections.tts.models.Tacotron2Model(*args: Any, **kwargs: Any)#
-
Tacotron 2 模型,用于从文本生成 mel 频谱图
- generate_spectrogram(*, tokens)#
接受一批文本或 text_tokens 并返回一批频谱图
- 参数:
tokens – 表示要生成的文本的 torch 张量
- 返回:
频谱图
- property input_types#
定义这些以启用输入神经类型检查
- classmethod list_available_models() List[PretrainedModelInfo] #
此方法返回一个预训练模型列表,该列表可以直接从 NVIDIA 的 NGC 云实例化。 :returns: 可用的预训练模型列表。
- property output_types#
定义这些以启用输出神经类型检查
- parse(text: str, normalize=True) torch.Tensor #
一个辅助函数,它接受原始 python 字符串并将它们转换为张量。张量应具有 2 个维度。第一个是批次,其大小应为 1。第二个应表示时间。张量应表示标记化或嵌入的文本,具体取决于模型。
请注意,某些模型在此函数中具有 normalize 参数,如果可用,该参数将应用规范化器。
- class nemo.collections.tts.models.SpectrogramEnhancerModel(*args: Any, **kwargs: Any)#
基类:
ModelPT
,Exportable
基于 GAN 的模型,用于为来自 TTS 模型(如 Tacotron 或 FastPitch)的模糊频谱图添加细节。基于 StyleGAN 2 [1] [1] Karras 等人。 - 分析和改进 StyleGAN 的图像质量 (https://arxiv.org/abs/1912.04958)
- forward(
- *,
- input_spectrograms: torch.Tensor,
- lengths: torch.Tensor,
- mixing: bool = False,
- normalize: bool = True,
生成器前向传递。将生成噪声输入。
input_spectrograms:批量频谱图,通常是合成的 lengths:批次中每个频谱图的长度 mixing:样式混合,训练期间通常为 True normalize:将频谱图范围标准化为〜[0, 1],正常使用时为 True
returns:批量增强频谱图
有关样式混合的说明,请参阅 [1] [1] Karras 等人。 - 用于生成对抗网络的基于样式的生成器架构,2018 (https://arxiv.org/abs/1812.04948)
- forward_with_custom_noise(
- input_spectrograms: torch.Tensor,
- lengths: torch.Tensor,
- zs: List[torch.Tensor] | None = None,
- ws: List[torch.Tensor] | None = None,
- noise: torch.Tensor | None = None,
- mixing: bool = False,
- normalize: bool = True,
生成器前向传递。如果为 None,将生成噪声输入。
input_spectrograms:批量频谱图,通常是合成的 lenghts:批次中每个频谱图的长度 zs:单位球上的潜在噪声输入(此项或 ws 或两者都不是) ws:样式空间中的潜在噪声输入(此项或 zs 或两者都不是) noise:逐像素独立高斯噪声 mixing:样式混合,训练期间通常为 True normalize:将频谱图范围标准化为〜[0, 1],正常使用时为 True
returns:批量增强频谱图
有关样式混合的说明,请参阅 [1] 有关 z、w [2] 的定义 [1] Karras 等人。 - 用于生成对抗网络的基于样式的生成器架构,2018 (https://arxiv.org/abs/1812.04948) [2] Karras 等人。 - 分析和改进 StyleGAN 的图像质量,2019 (https://arxiv.org/abs/1912.04958)
- classmethod list_available_models()#
应列出通过 NVIDIA NGC 云提供的所有预训练模型。注意:不检查模型名称和别名是否唯一。如果发生冲突,则将实例化此返回列表中首先列出的任何模型(或别名)。
- 返回:
PretrainedModelInfo 条目的列表
语音到文本对齐器模型#
- class nemo.collections.tts.models.AlignerModel(*args: Any, **kwargs: Any)#
基类:
NeedsNormalizer
,ModelPT
语音到文本对齐模型 (https://arxiv.org/pdf/2108.10447.pdf),用于学习 mel 频谱图和文本之间的对齐。
- classmethod list_available_models() List[PretrainedModelInfo] #
此方法返回一个预训练模型列表,该列表可以直接从 NVIDIA 的 NGC 云实例化。 :returns: 可用的预训练模型列表。
两阶段模型#
- class nemo.collections.tts.models.TwoStagesModel(*args: Any, **kwargs: Any)#
基类:
Vocoder
用于将梅尔频谱图转换为线性频谱图,然后再转换为音频的两阶段模型
- convert_spectrogram_to_audio(
- spec: torch.Tensor,
- **kwargs,
接受一批频谱图并返回一批音频。
- 参数:
spec – [‘B’, ‘n_freqs’, ‘T’],一个表示要进行声码器处理的频谱图的 torch 张量。
- 返回:
audio
- cuda(*args, **kwargs)#
- PTL 正在覆盖此方法并更改模块的 pytorch 行为。
如果设备为 None,PTL LightingModule 覆盖将把模块移动到设备 0。请参阅此处的 PTL 方法: Lightning-AI/lightning
这里我们覆盖此方法是为了保持默认的 Pytorch nn.module 行为: pytorch/pytorch
将所有模型参数和缓冲区移动到 GPU。
这也使得关联的参数和缓冲区成为不同的对象。因此,如果模块在被优化时将驻留在 GPU 上,则应在构造优化器之前调用它。
注意
此方法就地修改模块。
- 参数:
device (int, optional) – 如果指定,所有参数将被复制到该设备
- 返回:
self
- 返回类型:
Module
- property input_types#
定义这些以启用输入神经类型检查
- classmethod list_available_models() List[PretrainedModelInfo] #
此方法返回一个预训练模型列表,该列表可以直接从 NVIDIA 的 NGC 云实例化。 :returns: 可用的预训练模型列表。
- property output_types#
定义这些以启用输出神经类型检查
声码器#
- class nemo.collections.tts.models.GriffinLimModel(*args: Any, **kwargs: Any)#
基类:
Vocoder
- convert_spectrogram_to_audio(spec, Ts=None)#
接受一批频谱图并返回一批音频。
- 参数:
spec – [‘B’, ‘n_freqs’, ‘T’],一个表示要进行声码器处理的频谱图的 torch 张量。
- 返回:
audio
- cuda(*args, **kwargs)#
- PTL 正在覆盖此方法并更改模块的 pytorch 行为。
如果设备为 None,PTL LightingModule 覆盖将把模块移动到设备 0。请参阅此处的 PTL 方法: Lightning-AI/lightning
这里我们覆盖此方法是为了保持默认的 Pytorch nn.module 行为: pytorch/pytorch
将所有模型参数和缓冲区移动到 GPU。
这也使得关联的参数和缓冲区成为不同的对象。因此,如果模块在被优化时将驻留在 GPU 上,则应在构造优化器之前调用它。
注意
此方法就地修改模块。
- 参数:
device (int, optional) – 如果指定,所有参数将被复制到该设备
- 返回:
self
- 返回类型:
Module
- class nemo.collections.tts.models.HifiGanModel(*args: Any, **kwargs: Any)#
基类:
Vocoder
,Exportable
HiFi-GAN 模型 (https://arxiv.org/abs/2010.05646),用于从梅尔频谱图生成音频。
- convert_spectrogram_to_audio(
- spec: torch.tensor,
接受一批频谱图并返回一批音频。
- 参数:
spec – [‘B’, ‘n_freqs’, ‘T’],一个表示要进行声码器处理的频谱图的 torch 张量。
- 返回:
audio
- forward(*, spec)#
运行生成器,有关输入和输出,请参阅 input_types 和 output_types
- forward_for_export(spec)#
运行生成器,有关输入和输出,请参阅 input_types 和 output_types
- input_example(max_batch=1, max_dim=256)#
生成用于跟踪等的输入示例。 :returns: 输入示例的元组。
- property input_types#
定义这些以启用输入神经类型检查
- classmethod list_available_models() Dict[str, str] | None #
此方法返回一个预训练模型列表,该列表可以直接从 NVIDIA 的 NGC 云实例化。 :returns: 可用的预训练模型列表。
- property output_types#
定义这些以启用输出神经类型检查
- class nemo.collections.tts.models.UnivNetModel(*args: Any, **kwargs: Any)#
基类:
Vocoder
,Exportable
UnivNet 模型 (https://arxiv.org/abs/2106.07889),用于从梅尔频谱图生成音频。
- convert_spectrogram_to_audio(
- spec: torch.tensor,
接受一批频谱图并返回一批音频。
- 参数:
spec – [‘B’, ‘n_freqs’, ‘T’],一个表示要进行声码器处理的频谱图的 torch 张量。
- 返回:
audio
- forward(*, spec)#
运行生成器,有关输入和输出,请参阅 input_types 和 output_types
- forward_for_export(spec)#
运行生成器,有关输入和输出,请参阅 input_types 和 output_types
- input_example(max_batch=1, max_dim=256)#
生成用于跟踪等的输入示例。 :returns: 输入示例的元组。
- property input_types#
定义这些以启用输入神经类型检查
- classmethod list_available_models() Dict[str, str] | None #
此方法返回一个预训练模型列表,该列表可以直接从 NVIDIA 的 NGC 云实例化。 :returns: 可用的预训练模型列表。
- property output_types#
定义这些以启用输出神经类型检查
- class nemo.collections.tts.models.WaveGlowModel(*args: Any, **kwargs: Any)#
基类:
GlowVocoder
,Exportable
WaveGlow 模型 (https://arxiv.org/abs/1811.00002),用于从梅尔频谱图生成音频。
- convert_spectrogram_to_audio(
- spec: torch.Tensor,
- sigma: float = 1.0,
- denoise: bool = True,
- denoiser_strength: float = 0.01,
接受一批频谱图并返回一批音频。
- 参数:
spec – [‘B’, ‘n_freqs’, ‘T’],一个表示要进行声码器处理的频谱图的 torch 张量。
- 返回:
audio
- property input_types#
定义这些以启用输入神经类型检查
- classmethod list_available_models() List[PretrainedModelInfo] #
此方法返回一个预训练模型列表,该列表可以直接从 NVIDIA 的 NGC 云实例化。 :returns: 可用的预训练模型列表。
- property output_types#
定义这些以启用输出神经类型检查
编解码器#
基类#
以下类是 TTS 管道的基础。要了解有关它们的更多信息,请参阅介绍页面的 基类 部分。
- class nemo.collections.tts.models.base.MelToSpec(*args: Any, **kwargs: Any)#
基类:
ModelPT
,ABC
用于将梅尔频谱图转换为线性(幅度)频谱图的模型的基类
- abstract convert_mel_spectrogram_to_linear(
- mel: torch.tensor,
- **kwargs,
接受一批频谱图并返回一批线性频谱图
- 参数:
mel – 表示梅尔频谱图的 torch 张量 [‘B’, ‘mel_freqs’, ‘T’]
- 返回:
表示线性频谱图的 torch 张量 [‘B’, ‘n_freqs’, ‘T’]
- 返回类型:
spec
- classmethod list_available_models() List[PretrainedModelInfo] #
此方法返回一个预训练模型列表,该列表可以直接从 NVIDIA 的 NGC 云实例化。 :returns: 可用的预训练模型列表。
- class nemo.collections.tts.models.base.SpectrogramGenerator(*args: Any, **kwargs: Any)#
基类:
NeedsNormalizer
,ModelPT
,ABC
所有将文本转换为频谱图的 TTS 模型的基类
- abstract generate_spectrogram(
- tokens: torch.tensor,
- **kwargs,
接受一批文本或 text_tokens 并返回一批频谱图
- 参数:
tokens – 表示要生成的文本的 torch 张量
- 返回:
频谱图
- classmethod list_available_models() List[PretrainedModelInfo] #
此方法返回一个预训练模型列表,该列表可以直接从 NVIDIA 的 NGC 云实例化。 :returns: 可用的预训练模型列表。
- abstract parse(str_input: str, **kwargs) torch.tensor #
一个辅助函数,它接受原始 python 字符串并将它们转换为张量。张量应具有 2 个维度。第一个是批次,其大小应为 1。第二个应表示时间。张量应表示标记化或嵌入的文本,具体取决于模型。
请注意,某些模型在此函数中具有 normalize 参数,如果可用,该参数将应用规范化器。
- class nemo.collections.tts.models.base.Vocoder(*args: Any, **kwargs: Any)#
基类:
ModelPT
,ABC
用于将频谱图转换为音频的模型的基类。请注意,此类将线性或梅尔频谱图作为输入。
- abstract convert_spectrogram_to_audio(
- spec: torch.tensor,
- **kwargs,
接受一批频谱图并返回一批音频。
- 参数:
spec – [‘B’, ‘n_freqs’, ‘T’],一个表示要进行声码器处理的频谱图的 torch 张量。
- 返回:
audio
- classmethod list_available_models() List[PretrainedModelInfo] #
此方法返回一个预训练模型列表,该列表可以直接从 NVIDIA 的 NGC 云实例化。 :returns: 可用的预训练模型列表。
数据集处理类#
- class nemo.collections.tts.data.dataset.MixerTTSXDataset(*args: Any, **kwargs: Any)#
基类:
TTSDataset
- class nemo.collections.tts.data.dataset.TTSDataset(*args: Any, **kwargs: Any)#
基类:
Dataset
- class nemo.collections.tts.data.dataset.VocoderDataset(*args: Any, **kwargs: Any)#
基类:
Dataset