快捷方式

Tacotron2TTSBundle

class torchaudio.pipelines.Tacotron2TTSBundle[source]

捆绑相关信息以使用预训练 Tacotron2 和声码器的数据类。

此类提供用于实例化预训练模型以及检索预训练权重和与模型一起使用的其他必要数据的信息的接口。

Torchaudio 库实例化此类的对象,每个对象代表一个不同的预训练模型。客户端代码应通过这些实例访问预训练模型。

请参阅以下内容以了解用法和可用值。

示例 - 使用 Tacotron2 和 WaveRNN 的基于字符的 TTS 管道
>>> import torchaudio
>>>
>>> text = "Hello, T T S !"
>>> bundle = torchaudio.pipelines.TACOTRON2_WAVERNN_CHAR_LJSPEECH
>>>
>>> # Build processor, Tacotron2 and WaveRNN model
>>> processor = bundle.get_text_processor()
>>> tacotron2 = bundle.get_tacotron2()
Downloading:
100%|███████████████████████████████| 107M/107M [00:01<00:00, 87.9MB/s]
>>> vocoder = bundle.get_vocoder()
Downloading:
100%|███████████████████████████████| 16.7M/16.7M [00:00<00:00, 78.1MB/s]
>>>
>>> # Encode text
>>> input, lengths = processor(text)
>>>
>>> # Generate (mel-scale) spectrogram
>>> specgram, lengths, _ = tacotron2.infer(input, lengths)
>>>
>>> # Convert spectrogram to waveform
>>> waveforms, lengths = vocoder(specgram, lengths)
>>>
>>> torchaudio.save('hello-tts.wav', waveforms, vocoder.sample_rate)
示例 - 使用 Tacotron2 和 WaveRNN 的基于音素的 TTS 管道
>>>
>>> # Note:
>>> #     This bundle uses pre-trained DeepPhonemizer as
>>> #     the text pre-processor.
>>> #     Please install deep-phonemizer.
>>> #     See https://github.com/as-ideas/DeepPhonemizer
>>> #     The pretrained weight is automatically downloaded.
>>>
>>> import torchaudio
>>>
>>> text = "Hello, TTS!"
>>> bundle = torchaudio.pipelines.TACOTRON2_WAVERNN_PHONE_LJSPEECH
>>>
>>> # Build processor, Tacotron2 and WaveRNN model
>>> processor = bundle.get_text_processor()
Downloading:
100%|███████████████████████████████| 63.6M/63.6M [00:04<00:00, 15.3MB/s]
>>> tacotron2 = bundle.get_tacotron2()
Downloading:
100%|███████████████████████████████| 107M/107M [00:01<00:00, 87.9MB/s]
>>> vocoder = bundle.get_vocoder()
Downloading:
100%|███████████████████████████████| 16.7M/16.7M [00:00<00:00, 78.1MB/s]
>>>
>>> # Encode text
>>> input, lengths = processor(text)
>>>
>>> # Generate (mel-scale) spectrogram
>>> specgram, lengths, _ = tacotron2.infer(input, lengths)
>>>
>>> # Convert spectrogram to waveform
>>> waveforms, lengths = vocoder(specgram, lengths)
>>>
>>> torchaudio.save('hello-tts.wav', waveforms, vocoder.sample_rate)
使用 Tacotron2TTSBundle 的教程
Text-to-Speech with Tacotron2

使用 Tacotron2 进行文本转语音

使用 Tacotron2 进行文本转语音

方法

get_tacotron2

abstract Tacotron2TTSBundle.get_tacotron2(*, dl_kwargs=None) Tacotron2[source]

创建具有预训练权重的 Tacotron2 模型。

参数:

dl_kwargs (关键字参数字典) – 传递给 torch.hub.load_state_dict_from_url()

返回:

生成的模型。

返回类型:

Tacotron2

get_text_processor

abstract Tacotron2TTSBundle.get_text_processor(*, dl_kwargs=None) TextProcessor[source]

创建文本处理器

对于基于字符的管道,此处理器按字符分割输入文本。对于基于音素的管道,此处理器将输入文本(音素字符)转换为音素。

如果需要预训练权重文件,则使用 torch.hub.download_url_to_file() 下载它。

参数:

dl_kwargs (关键字参数字典,) – 传递给 torch.hub.download_url_to_file()

返回:

一个可调用对象,它接受字符串或字符串列表作为输入,并返回编码文本的张量和有效长度的张量。该对象还具有 tokens 属性,允许恢复标记化形式。

返回类型:

TextProcessor

示例 - 基于字符
>>> text = [
>>>     "Hello World!",
>>>     "Text-to-speech!",
>>> ]
>>> bundle = torchaudio.pipelines.TACOTRON2_WAVERNN_CHAR_LJSPEECH
>>> processor = bundle.get_text_processor()
>>> input, lengths = processor(text)
>>>
>>> print(input)
tensor([[19, 16, 23, 23, 26, 11, 34, 26, 29, 23, 15,  2,  0,  0,  0],
        [31, 16, 35, 31,  1, 31, 26,  1, 30, 27, 16, 16, 14, 19,  2]],
       dtype=torch.int32)
>>>
>>> print(lengths)
tensor([12, 15], dtype=torch.int32)
>>>
>>> print([processor.tokens[i] for i in input[0, :lengths[0]]])
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']
>>> print([processor.tokens[i] for i in input[1, :lengths[1]]])
['t', 'e', 'x', 't', '-', 't', 'o', '-', 's', 'p', 'e', 'e', 'c', 'h', '!']
示例 - 基于音素
>>> text = [
>>>     "Hello, T T S !",
>>>     "Text-to-speech!",
>>> ]
>>> bundle = torchaudio.pipelines.TACOTRON2_WAVERNN_PHONE_LJSPEECH
>>> processor = bundle.get_text_processor()
Downloading:
100%|███████████████████████████████| 63.6M/63.6M [00:04<00:00, 15.3MB/s]
>>> input, lengths = processor(text)
>>>
>>> print(input)
tensor([[54, 20, 65, 69, 11, 92, 44, 65, 38,  2,  0,  0,  0,  0],
        [81, 40, 64, 79, 81,  1, 81, 20,  1, 79, 77, 59, 37,  2]],
       dtype=torch.int32)
>>>
>>> print(lengths)
tensor([10, 14], dtype=torch.int32)
>>>
>>> print([processor.tokens[i] for i in input[0]])
['HH', 'AH', 'L', 'OW', ' ', 'W', 'ER', 'L', 'D', '!', '_', '_', '_', '_']
>>> print([processor.tokens[i] for i in input[1]])
['T', 'EH', 'K', 'S', 'T', '-', 'T', 'AH', '-', 'S', 'P', 'IY', 'CH', '!']

get_vocoder

abstract Tacotron2TTSBundle.get_vocoder(*, dl_kwargs=None) Vocoder[source]

创建声码器模块,基于 WaveRNN 或 GriffinLim。

如果需要预训练权重文件,则使用 torch.hub.load_state_dict_from_url() 下载它。

参数:

dl_kwargs (关键字参数字典) – 传递给 torch.hub.load_state_dict_from_url()

返回:

一个声码器模块,它接收频谱图张量和可选的长度张量,然后返回生成的波形张量和可选的长度张量。

返回类型:

Vocoder

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取适合初学者和高级开发人员的深度教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源