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
的教程 - 使用 Tacotron2 进行文本转语音
方法¶
get_tacotron2¶
- abstract Tacotron2TTSBundle.get_tacotron2(*, dl_kwargs=None) Tacotron2 [source]¶
创建具有预训练权重的 Tacotron2 模型。
- 参数:
dl_kwargs (关键字参数字典) – 传递给
torch.hub.load_state_dict_from_url()
。- 返回:
生成的模型。
- 返回类型:
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
属性,允许恢复标记化形式。- 返回类型:
- 示例 - 基于字符
>>> 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()
。- 返回:
一个声码器模块,它接收频谱图张量和可选的长度张量,然后返回生成的波形张量和可选的长度张量。
- 返回类型: