torchaudio.pipelines 中¶
pipelines 子包包含用于访问具有预训练权重的模型的 API,以及与预训练权重关联的信息/辅助函数。
wav2vec 2.0 / HuBERT - 表示学习¶
-
类 [来源]
torchaudio.pipelines.
Wav2Vec2Bundle
¶ Data 类,该类捆绑了相关信息以使用预训练的 Wav2Vec2Model。
此类提供了用于实例化预训练模型的接口,以及 检索预训练权重和其他数据所需的信息 以与模型一起使用。
Torchaudio 库实例化此类的对象,每个对象都表示 不同的预训练模型。客户端代码应通过这些 实例。
有关用法和可用值,请参阅下文。
- 示例 - 特征提取
>>> import torchaudio >>> >>> bundle = torchaudio.pipelines.HUBERT_BASE >>> >>> # Build the model and load pretrained weight. >>> model = bundle.get_model() Downloading: 100%|███████████████████████████████| 360M/360M [00:06<00:00, 60.6MB/s] >>> >>> # Resample audio to the expected sampling rate >>> waveform = torchaudio.functional.resample(waveform, sample_rate, bundle.sample_rate) >>> >>> # Extract acoustic features >>> features, _ = model.extract_features(waveform)
-
get_model
(self, *, dl_kwargs=None) → torchaudio.models.Wav2Vec2Model [来源]¶ 构建模型并加载预训练的权重。
WAV2VEC2_BASE¶
WAV2VEC2_LARGE¶
WAV2VEC2_LARGE_LV60K¶
WAV2VEC2_XLSR53¶
HUBERT_BASE¶
HUBERT_LARGE¶
wav2vec 2.0 / HuBERT - 微调的 ASR¶
Wav2Vec2ASRBundle¶
-
类 [来源]
torchaudio.pipelines.
Wav2Vec2ASRBundle
¶ Data 类,该类捆绑了相关信息以使用预训练的 Wav2Vec2Model。
此类提供了用于实例化预训练模型的接口,以及 检索预训练权重和其他数据所需的信息 以与模型一起使用。
Torchaudio 库实例化此类的对象,每个对象都表示 不同的预训练模型。客户端代码应通过这些 实例。
有关用法和可用值,请参阅下文。
- 示例 — ASR
>>> import torchaudio >>> >>> bundle = torchaudio.pipelines.HUBERT_ASR_LARGE >>> >>> # Build the model and load pretrained weight. >>> model = bundle.get_model() Downloading: 100%|███████████████████████████████| 1.18G/1.18G [00:17<00:00, 73.8MB/s] >>> >>> # Check the corresponding labels of the output. >>> labels = bundle.get_labels() >>> print(labels) ('<s>', '<pad>', '</s>', '<unk>', '|', 'E', 'T', 'A', 'O', 'N', 'I', 'H', 'S', 'R', 'D', 'L', 'U', 'M', 'W', 'C', 'F', 'G', 'Y', 'P', 'B', 'V', 'K', "'", 'X', 'J', 'Q', 'Z') >>> >>> # Resample audio to the expected sampling rate >>> waveform = torchaudio.functional.resample(waveform, sample_rate, bundle.sample_rate) >>> >>> # Infer the label probability distribution >>> emissions, _ = model(waveform) >>> >>> # Pass emission to decoder >>> # `ctc_decode` is for illustration purpose only >>> transcripts = ctc_decode(emissions, labels)
-
get_model
(self, *, dl_kwargs=None) → torchaudio.models.Wav2Vec2Model¶ 构建模型并加载预训练的权重。
-
get_labels
(*, bos: str = '<s>', pad: str = '<pad>', eos: str = '</s>',unk: str = '<unk>') → Tuple[str][来源]¶ 输出类标签(仅适用于经过微调的捆绑商品)
前四个代币是 BOS、padding、EOS 和 UNK 代币,它们可以进行自定义。
- 参数
- 返回
对于在 ASR 上微调的模型,返回表示 输出类标签。
- 返回类型
元组[str]
- 例
>>> import torchaudio >>> torchaudio.models.HUBERT_ASR_LARGE.get_labels() ('<s>', '<pad>', '</s>', '<unk>', '|', 'E', 'T', 'A', 'O', 'N', 'I', 'H', 'S', 'R', 'D', 'L', 'U', 'M', 'W', 'C', 'F', 'G', 'Y', 'P', 'B', 'V', 'K', "'", 'X', 'J', 'Q', 'Z')
WAV2VEC2_ASR_BASE_10M¶
-
torchaudio.pipelines.
WAV2VEC2_ASR_BASE_10M
¶ 使用额外的线性模块构建 “base” wav2vec2 模型
对 LibriSpeech 数据集中 960 小时的未标记音频进行了预训练 [1] (“train-clean-100”、“train-clean-360”和“train-other-500”的组合),以及 对 Libri-Light 数据集中 10 分钟转录音频的 ASR 进行微调 [3](“train-10min”子集)。
最初由 wav2vec 2.0 的作者发布 [2] 在 MIT 许可证下,并且 使用相同的许可证重新分发。 [许可证、来源]
WAV2VEC2_ASR_BASE_100H¶
WAV2VEC2_ASR_BASE_960H¶
WAV2VEC2_ASR_LARGE_10M¶
-
torchaudio.pipelines.
WAV2VEC2_ASR_LARGE_10M
¶ 使用额外的线性模块构建“大型” wav2vec2 模型
对 LibriSpeech 数据集中 960 小时的未标记音频进行了预训练 [1] (“train-clean-100”、“train-clean-360”和“train-other-500”的组合),以及 对 Libri-Light 数据集中 10 分钟转录音频的 ASR 进行微调 [3](“train-10min”子集)。
最初由 wav2vec 2.0 的作者发布 [2] 在 MIT 许可证下,并且 使用相同的许可证重新分发。 [许可证、来源]
WAV2VEC2_ASR_LARGE_100H¶
WAV2VEC2_ASR_LARGE_960H¶
WAV2VEC2_ASR_LARGE_LV60K_10M¶
WAV2VEC2_ASR_LARGE_LV60K_100H¶
WAV2VEC2_ASR_LARGE_LV60K_960H¶
-
torchaudio.pipelines.
WAV2VEC2_ASR_LARGE_LV60K_960H
¶ 使用额外的线性模块构建 “large-lv60k” wav2vec2 模型
对来自 Libri-Light [3] 数据集的 60,000 小时未标记音频进行预训练,以及 对 LibriSpeech 数据集中 960 小时转录音频的 ASR 进行了微调 [1] (“train-clean-100”、“train-clean-360”和“train-other-500”的组合)。
最初由 wav2vec 2.0 的作者发布 [2] 在 MIT 许可证下,并且 使用相同的许可证重新分发。 [许可证、来源]
HUBERT_ASR_LARGE¶
Tacotron2 文本转语音¶
Tacotron2TTSBundle¶
-
类 [来源]
torchaudio.pipelines.
Tacotron2TTSBundle
¶ 捆绑相关信息以使用预训练的 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[0], 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_PHONEME_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[0], vocoder.sample_rate)
-
摘要 (self, *, dl_kwargs=None) → torchaudio.pipelines.Tacotron2TTSBundle.TextProcessor[来源]
get_text_processor
¶ 创建文本处理器
对于基于字符的管道,此处理器按字符拆分输入文本。 对于基于音素的管道,此处理器将输入文本(字素)转换为 音素。
- 参数
- 返回
一个可调用对象,它以字符串或字符串列表作为输入,并且 返回编码文本的 Tensor 和有效长度的 Tensor。 该对象还具有属性,该属性允许恢复 标记化表单。
tokens
- 返回类型
TTSTextProcessor
- 示例 - 基于字符
>>> 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', '!']
-
abstract (self, *, dl_kwargs=None) → torchaudio.models.Tacotron2[来源]
get_tacotron2
¶ 创建具有预训练权重的 Tacotron2 模型。
- 参数
- 返回
生成的模型。
- 返回类型
-
摘要 (self, *, dl_kwargs=None) → torchaudio.pipelines.Tacotron2TTSBundle.Vocoder[来源]
get_vocoder
¶ 基于 WaveRNN 或 GriffinLim 创建声码器模块。
使用Tacotron2TTSBundle
¶
Tacotron2TTSBundle - 文本处理器¶
-
类 [来源]
Tacotron2TTSBundle.
TextProcessor
¶ Tacotron2TTS 流水线的文本处理部分的接口
-
摘要 (文本: Union[str, List[str]]) → 元组[torch.Tensor、torch 的 Tensor 和 Torch 的 T张肌
__call__
]¶ 将给定的(批次)文本编码为数字张量
- 参数
text (str or list of str) – 输入文本。
- 返回
- 张肌:
编码的文本。形状:(批次,最大长度)
- 张肌:
批次中每个样本的有效长度。形状:(batch, )。
- 返回类型
(张量、张量)
-
摘要 (文本: Union[str, List[str]]) → 元组[torch.Tensor、torch 的 Tensor 和 Torch 的 T张肌
Tacotron2TTSBundle - 声码器¶
-
类 [来源]
Tacotron2TTSBundle.
Vocoder
¶ Tacotron2TTS 管道的声码器部分的接口
-
abstract (specgrams: torch.Tensor, lengths: 可选[torch.Tensor] = None) → Tuple[torch.Tensor,可选[torch.张肌
__call__
]]¶ 从给定的输入生成波形,例如频谱图
- 参数
specgrams (Tensor) – 输入频谱图。形状:(批次、频率区间、时间)。 预期的形状取决于实现。
lengths (Tensor 或 None,可选) – 批处理中每个样本的有效长度。形状:(batch, )。 (默认值:无)
- 返回
- 张肌:
生成的波形。形状:(批次,最大长度)
- Tensor 或 None:
批次中每个样本的有效长度。形状:(batch, )。
- 返回类型
(Tensor, 可选[Tensor])
-
abstract (specgrams: torch.Tensor, lengths: 可选[torch.Tensor] = None) → Tuple[torch.Tensor,可选[torch.张肌
TACOTRON2_WAVERNN_PHONE_LJSPEECH¶
-
torchaudio.pipelines.
TACOTRON2_WAVERNN_PHONE_LJSPEECH
¶ -
文本处理器根据 phoneme 对输入文本进行编码。 它使用 DeepPhonemizer 进行转换 字素转换为音素。 模型 (en_us_cmudict_forward) 在 CMUDict 上进行了训练。
Tacotron2 在 LJSpeech [9] 上训练了 1,500 个 epoch。 您可以在此处找到训练脚本。 使用了以下参数;和。
win_length=1100
hop_length=275
n_fft=2048
mel_fmin=40
mel_fmax=11025
vocder 基于
。 它在 LJSpeech [9] 的 8 位深度波形上进行了 10,000 个 epoch 的训练。 您可以在此处找到训练脚本。
示例 — “Hello world!T T S 代表文本到语音!
示例 - “专家的审查和证词使委员会得出结论,可能已经开了五枪,”
TACOTRON2_WAVERNN_CHAR_LJSPEECH¶
-
torchaudio.pipelines.
TACOTRON2_WAVERNN_CHAR_LJSPEECH
¶ -
文本处理器对输入文本逐个字符进行编码。
Tacotron2 在 LJSpeech [9] 上训练了 1,500 个 epoch。 您可以在此处找到训练脚本。 使用了以下参数;和。
win_length=1100
hop_length=275
n_fft=2048
mel_fmin=40
mel_fmax=11025
vocder 基于
。 它在 LJSpeech [9] 的 8 位深度波形上进行了 10,000 个 epoch 的训练。 您可以在此处找到训练脚本。
示例 — “Hello world!T T S 代表文本到语音!
示例 - “专家的审查和证词使委员会得出结论,可能已经开了五枪,”
TACOTRON2_GRIFFINLIM_PHONE_LJSPEECH¶
-
torchaudio.pipelines.
TACOTRON2_GRIFFINLIM_PHONE_LJSPEECH
¶ -
文本处理器根据 phoneme 对输入文本进行编码。 它使用 DeepPhonemizer 进行转换 字素转换为音素。 模型 (en_us_cmudict_forward) 在 CMUDict 上进行了训练。
Tacotron2 在 LJSpeech [9] 上训练了 1,500 个 epoch。 您可以在此处找到训练脚本。 文本处理器设置为 “english_phonemes”。
示例 — “Hello world!T T S 代表文本到语音!
示例 - “专家的审查和证词使委员会得出结论,可能已经开了五枪,”
引用¶
- 1(1,2,3,4,5,6,7,8,9,10,11,12,13)
Vassil Panayotov、Guoguo Chen、Daniel Povey 和 Sanjeev Khudanpur。Librispeech:基于公共领域有声读物的 asr 语料库。2015 年 IEEE 声学、语音和信号处理国际会议 (ICASSP),卷,5206–5210。2015. doi:10.1109/ICASSP.2015.7178964.
- 2(1,2,3,4,5,6,7,8,9,10,11,12)
阿列克谢·巴耶夫斯基、亨利·周、阿卜杜勒拉赫曼·穆罕默德和迈克尔·奥利。Wav2vec 2.0:语音表示的自监督学习框架。2020. arXiv:2006.11477.
- 3(1,2,3,4,5,6,7,8,9,10)
J. Kahn, M. Rivière, W. Zheng, E. Kharitonov, Q. Xu, PE Mazaré, J. Karadayi, V. Liptchinsky, R. Collobert, C. Fuegen, T. Likhomanenko, G. Synnaeve, A. Joulin, A. Mohamed, 和 E. Dupoux.Libri-light:有限或无监督的 asr 基准。在 ICASSP 2020 - 2020 IEEE 声学、语音和信号处理国际会议 (ICASSP) 中,7669–7673。2020. https://github.com/facebookresearch/libri-light。
- 4
Vineel Pratap、Qiantong Xu、Anuroop Sriram、Gabriel Synnaeve 和 Ronan Collobert。Mls:用于语音研究的大规模多语言数据集。Interspeech 2020,2020 年 10 月。网址:http://dx.doi.org/10.21437/Interspeech.2020-2826,doi:10.21437/interspeech.2020-2826。
- 5
罗珊娜·阿迪拉、梅根·布兰森、凯利·戴维斯、迈克尔·亨雷蒂、迈克尔·科勒、乔什·迈耶、鲁本·莫莱斯、林赛·桑德斯、弗朗西斯·泰尔斯和格雷戈尔·韦伯。Common voice:一个包含大量多语言的语音语料库。2020. arXiv:1912.06670.
- 6
马克·约翰·弗朗西斯·盖尔斯、凯特·克尼尔、安东·拉格尼和沙克蒂·普拉萨德·拉斯。低资源语言的语音识别和关键字识别:cueed 的 babel 项目研究。在 SLTU.2014.
- 7
亚历克西斯·康诺、阿列克谢·巴耶夫斯基、罗南·科洛伯特、阿卜杜勒拉赫曼·穆罕默德和迈克尔·奥利。用于语音识别的无监督跨语言表示学习。2020. arXiv:2006.13979.
- 8(1,2,3,4,5)
Wei-Ning Hsu、Benjamin Bolte、Yao-Hung Hubert Tsai、Kushal Lakhotia、Ruslan Salakhutdinov 和 Abdelrahman Mohamed。Hubert:通过隐藏单元的掩蔽预测进行自我监督的语音表示学习。2021. arXiv:2106.07447.
- 9(1,2,3,4,5,6)
Keith Ito 和 Linda Johnson。lj 语音数据集。https://keithito.com/LJ-Speech-Dataset/,2017 年。