目录

torchaudio.pipelines 中

pipelines 子包包含用于访问具有预训练权重的模型的 API,以及与预训练权重关联的信息/辅助函数。

RNN-T 流/非流 ASR

RNNTBundle

[来源]torchaudio.pipelines.RNNTBundle

捆绑用于执行自动语音识别(ASR、语音转文本)的组件的数据类 使用 RNN-T 模型进行推理。

更具体地说,该类提供了生成特征化管道 解码器包装指定的 RNN-T 模型,并输出令牌后处理器,它们一起 构成一个完整的端到端 ASR 推理管道,用于生成文本序列 给定一个原始波形。

它可以支持非流式 (完整上下文) 推理以及流式推理。

用户不应直接实例化此类的对象;相反,用户应该使用 模块中存在的实例(表示预先训练的模型), 例如 .

>>> import torchaudio
>>> from torchaudio.pipelines import EMFORMER_RNNT_BASE_LIBRISPEECH
>>> import torch
>>>
>>> # Non-streaming inference.
>>> # Build feature extractor, decoder with RNN-T model, and token processor.
>>> feature_extractor = EMFORMER_RNNT_BASE_LIBRISPEECH.get_feature_extractor()
100%|███████████████████████████████| 3.81k/3.81k [00:00<00:00, 4.22MB/s]
>>> decoder = EMFORMER_RNNT_BASE_LIBRISPEECH.get_decoder()
Downloading: "https://download.pytorch.org/torchaudio/models/emformer_rnnt_base_librispeech.pt"
100%|███████████████████████████████| 293M/293M [00:07<00:00, 42.1MB/s]
>>> token_processor = EMFORMER_RNNT_BASE_LIBRISPEECH.get_token_processor()
100%|███████████████████████████████| 295k/295k [00:00<00:00, 25.4MB/s]
>>>
>>> # Instantiate LibriSpeech dataset; retrieve waveform for first sample.
>>> dataset = torchaudio.datasets.LIBRISPEECH("/home/librispeech", url="test-clean")
>>> waveform = next(iter(dataset))[0].squeeze()
>>>
>>> with torch.no_grad():
>>>     # Produce mel-scale spectrogram features.
>>>     features, length = feature_extractor(waveform)
>>>
>>>     # Generate top-10 hypotheses.
>>>     hypotheses = decoder(features, length, 10)
>>>
>>> # For top hypothesis, convert predicted tokens to text.
>>> text = token_processor(hypotheses[0][0])
>>> print(text)
he hoped there would be stew for dinner turnips and carrots and bruised potatoes and fat mutton pieces to [...]
>>>
>>>
>>> # Streaming inference.
>>> hop_length = EMFORMER_RNNT_BASE_LIBRISPEECH.hop_length
>>> num_samples_segment = EMFORMER_RNNT_BASE_LIBRISPEECH.segment_length * hop_length
>>> num_samples_segment_right_context = (
>>>     num_samples_segment + EMFORMER_RNNT_BASE_LIBRISPEECH.right_context_length * hop_length
>>> )
>>>
>>> # Build streaming inference feature extractor.
>>> streaming_feature_extractor = EMFORMER_RNNT_BASE_LIBRISPEECH.get_streaming_feature_extractor()
>>>
>>> # Process same waveform as before, this time sequentially across overlapping segments
>>> # to simulate streaming inference. Note the usage of ``streaming_feature_extractor`` and ``decoder.infer``.
>>> state, hypothesis = None, None
>>> for idx in range(0, len(waveform), num_samples_segment):
>>>     segment = waveform[idx: idx + num_samples_segment_right_context]
>>>     segment = torch.nn.functional.pad(segment, (0, num_samples_segment_right_context - len(segment)))
>>>     with torch.no_grad():
>>>         features, length = streaming_feature_extractor(segment)
>>>         hypotheses, state = decoder.infer(features, length, 10, state=state, hypothesis=hypothesis)
>>>     hypothesis = hypotheses[0]
>>>     transcript = token_processor(hypothesis[0])
>>>     if transcript:
>>>         print(transcript, end=" ", flush=True)
he hoped there would be stew for dinner turn ips and car rots and bru 'd oes and fat mut ton pieces to [...]
教程使用:RNNTBundle
get_decoder()torchaudio.models.RNNTBeamSearch[来源]

构建 RNN-T 解码器。

返回

RNNTBeam搜索

get_feature_extractor()RNNTBundle.FeatureExtractor[来源]

为非流式处理 (完整上下文) ASR 构造特征提取器。

返回

特征提取器

get_streaming_feature_extractor()RNNTBundle.FeatureExtractor[来源]

为流式处理 (同时) ASR 构造特征提取器。

返回

特征提取器

get_token_processor()RNNTBundle.TokenProcessor[来源]

构造令牌处理器。

返回

TokenProcessor 的

财产 sample_rate

输入波形的采样率 (以每秒周期数为单位)。

类型

int

财产 n_fft

要使用的 FFT 窗口的大小。

类型

int

财产 n_mels

要从输入波形中提取的梅尔频谱图特征的数量。

类型

int

财产 hop_length

模型预期的输入中连续帧之间的样本数。

类型

int

财产 segment_length

模型预期的输入中 segment 中的帧数。

类型

int

财产 right_context_length

模型预期的输入中右侧上下文块中的帧数。

类型

int

RNNTBundle - 特征提取器

[来源]RNNTBundle.FeatureExtractor
abstract 输入 torch.TensorTuple[torch.Tensortorch 的 Tensor 和 Torch 的 T张肌__call__]

从给定的输入张量生成特征和长度输出。

参数

inputTorch.Tensor) – 输入张量。

返回

torch.Tensor:

特征,形状为 (length, *)。

torch.Tensor:

长度,形状为 (1,)。

返回类型

(torch。Tensortorch 的 Tensor 和 Torch 的 T张肌)

RNNTBundle - TokenProcessor

[来源]RNNTBundle.TokenProcessor
抽象 标记 List[int]**kwargsstr__call__

将给定的标记列表解码为文本序列。

参数

tokensList[int]) - 要解码的 token 列表。

返回

解码的文本序列。

返回类型

str

EMFORMER_RNNT_BASE_LIBRISPEECH

torchaudio.pipelines.EMFORMER_RNNT_BASE_LIBRISPEECH

预先训练的基于 Emformer-RNNT 的 ASR 管道,能够执行流式和非流式推理。

底层模型由 LibriSpeech 上使用带有默认参数训练脚本构建并利用训练的权重。train.py

请参阅使用说明。

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=Nonetorchaudio.models.Wav2Vec2Model [来源]

构建模型并加载预训练的权重。

权重文件从 Internet 下载,并使用

参数

dl_kwargs关键字参数字典) – 传递给 .

财产 sample_rate

训练模型的音频的采样率。

类型

WAV2VEC2_BASE

torchaudio.pipelines.WAV2VEC2_BASE

wav2vec 2.0 模型。

LibriSpeech 数据集中 960 小时的未标记音频进行了预训练 [1] (“train-clean-100”、“train-clean-360”和“train-other-500”的组合)。 未微调。

最初由 wav2vec 2.0 的作者发布 [2] 在 MIT 许可证下,并且 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

WAV2VEC2_LARGE

torchaudio.pipelines.WAV2VEC2_LARGE

构建 “大型” wav2vec2 模型。

LibriSpeech 数据集中 960 小时的未标记音频进行了预训练 [1] (“train-clean-100”、“train-clean-360”和“train-other-500”的组合)。 未微调。

最初由 wav2vec 2.0 的作者发布 [2] 在 MIT 许可证下,并且 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

WAV2VEC2_LARGE_LV60K

torchaudio.pipelines.WAV2VEC2_LARGE_LV60K

构建 “large-lv60k” wav2vec2 模型。

对来自 Libri-Light 数据集 [3] 的 60,000 小时未标记音频进行预训练。 未微调。

最初由 wav2vec 2.0 的作者发布 [2] 在 MIT 许可证下,并且 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

WAV2VEC2_XLSR53

torchaudio.pipelines.WAV2VEC2_XLSR53

wav2vec 2.0 模型。

使用来自多个数据集(多语言 LibriSpeech [4]、CommonVoice [5] 和 BABEL [6])的 56000 小时未标记音频进行训练。 未微调。

最初由《无监督的跨语言表示学习语音识别》[7] 的作者在 MIT 许可证下发布,并使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

HUBERT_BASE

torchaudio.pipelines.HUBERT_BASE

具有 “Base” 配置的 HuBERT 模型。

LibriSpeech 数据集中 960 小时的未标记音频进行了预训练 [1] (“train-clean-100”、“train-clean-360”和“train-other-500”的组合)。 未微调。

最初由 HuBERT 的作者在 MIT 许可下发布 [8] 和 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

HUBERT_LARGE

torchaudio.pipelines.HUBERT_LARGE

具有“大”配置的 HuBERT 模型。

对来自 Libri-Light 数据集 [3] 的 60,000 小时未标记音频进行预训练。 未微调。

最初由 HuBERT 的作者在 MIT 许可下发布 [8] 和 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

HUBERT_XLARGE

torchaudio.pipelines.HUBERT_XLARGE

具有“超大”配置的 HuBERT 模型。

对来自 Libri-Light 数据集 [3] 的 60,000 小时未标记音频进行预训练。 未微调。

最初由 HuBERT 的作者在 MIT 许可下发布 [8] 和 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

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)
('-', '|', '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)
教程使用:Wav2Vec2ASRBundle
get_model(self*dl_kwargs=None) → torchaudio.models.Wav2Vec2Model

构建模型并加载预训练的权重。

权重文件从 Internet 下载,并使用

参数

dl_kwargs关键字参数字典) – 传递给 .

get_labels(*空白str = '-'Tuple[str][来源]

输出类标签(仅适用于经过微调的捆绑商品)

第一个是空白令牌,它是可自定义的。

参数

blankstroptional) – 空白令牌。(默认:'-')

返回

对于在 ASR 上微调的模型,返回表示 输出类标签。

返回类型

元组[str]

>>> import torchaudio
>>> torchaudio.models.HUBERT_ASR_LARGE.get_labels()
('-', '|', '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')
财产 sample_rate

训练模型的音频的采样率。

类型

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

torchaudio.pipelines.WAV2VEC2_ASR_BASE_100H

使用额外的线性模块构建 “base” wav2vec2 模型

LibriSpeech 数据集中 960 小时的未标记音频进行了预训练 [1] (“train-clean-100”、“train-clean-360”和“train-other-500”的组合),以及 针对 ASR 对来自 “train-clean-100” 子集的 100 小时转录音频进行了微调。

最初由 wav2vec 2.0 的作者发布 [2] 在 MIT 许可证下,并且 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

WAV2VEC2_ASR_BASE_960H

torchaudio.pipelines.WAV2VEC2_ASR_BASE_960H

使用额外的线性模块构建 “base” wav2vec2 模型

LibriSpeech 数据集中 960 小时的未标记音频进行了预训练 [1] (“train-clean-100”、“train-clean-360”和“train-other-500”的组合),以及 针对同一音频的 ASR 和相应的转录进行微调。

最初由 wav2vec 2.0 的作者发布 [2] 在 MIT 许可证下,并且 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

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

torchaudio.pipelines.WAV2VEC2_ASR_LARGE_100H

使用额外的线性模块构建“大型” wav2vec2 模型

LibriSpeech 数据集中 960 小时的未标记音频进行了预训练 [1] (“train-clean-100”、“train-clean-360”和“train-other-500”的组合),以及 针对 ASR 进行了 100 小时的转录音频微调 相同的数据集(“train-clean-100” 子集)。

最初由 wav2vec 2.0 的作者发布 [2] 在 MIT 许可证下,并且 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

WAV2VEC2_ASR_LARGE_960H

torchaudio.pipelines.WAV2VEC2_ASR_LARGE_960H

使用额外的线性模块构建“大型” wav2vec2 模型

LibriSpeech 数据集中 960 小时的未标记音频进行了预训练 [1] (“train-clean-100”、“train-clean-360”和“train-other-500”的组合),以及 针对同一音频的 ASR 和相应的转录进行微调。

最初由 wav2vec 2.0 的作者发布 [2] 在 MIT 许可证下,并且 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

WAV2VEC2_ASR_LARGE_LV60K_10M

torchaudio.pipelines.WAV2VEC2_ASR_LARGE_LV60K_10M

使用额外的线性模块构建 “large-lv60k” wav2vec2 模型

对来自 Libri-Light 数据集 [3] 的 60,000 小时未标记音频进行预训练,以及 针对 ASR 进行了 10 分钟转录音频的微调 相同的数据集(“train-10min” 子集)。

最初由 wav2vec 2.0 的作者发布 [2] 在 MIT 许可证下,并且 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

WAV2VEC2_ASR_LARGE_LV60K_100H

torchaudio.pipelines.WAV2VEC2_ASR_LARGE_LV60K_100H

使用额外的线性模块构建 “large-lv60k” wav2vec2 模型

对来自 Libri-Light 数据集 [3] 的 60,000 小时未标记音频进行预训练,以及 对 LibriSpeech 数据集 [1](“train-clean-100”子集)中 100 小时的转录音频的 ASR 进行了微调。

最初由 wav2vec 2.0 的作者发布 [2] 在 MIT 许可证下,并且 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

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 许可证下,并且 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

VOXPOPULI_ASR_BASE_10K_DE

torchaudio.pipelines.VOXPOPULI_ASR_BASE_10K_DE

wav2vec 2.0 模型。

对来自 VoxPopuli 数据集的 10k 小时未标记音频进行预训练 [9] (“10k” 子集,由 23 种语言组成)。 针对 ASR 对来自“de”子集的 282 小时转录音频进行了微调。

最初由 VoxPopuli 的作者发布 [9],在 CC BY-NC 4.0 和 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

VOXPOPULI_ASR_BASE_10K_EN

torchaudio.pipelines.VOXPOPULI_ASR_BASE_10K_EN

wav2vec 2.0 模型。

对来自 VoxPopuli 数据集的 10k 小时未标记音频进行预训练 [9] (“10k” 子集,由 23 种语言组成)。

针对 ASR 对来自“en”子集的 543 小时转录音频进行了微调。 最初由 VoxPopuli 的作者发布 [9],在 CC BY-NC 4.0 和 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

VOXPOPULI_ASR_BASE_10K_ES

torchaudio.pipelines.VOXPOPULI_ASR_BASE_10K_ES

wav2vec 2.0 模型。

对来自 VoxPopuli 数据集的 10k 小时未标记音频进行预训练 [9] (“10k” 子集,由 23 种语言组成)。 针对 ASR 对来自“es”子集的 166 小时转录音频进行了微调。

最初由 VoxPopuli 的作者发布 [9],在 CC BY-NC 4.0 和 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

VOXPOPULI_ASR_BASE_10K_FR

torchaudio.pipelines.VOXPOPULI_ASR_BASE_10K_FR

wav2vec 2.0 模型。

对来自 VoxPopuli 数据集的 10k 小时未标记音频进行预训练 [9] (“10k” 子集,由 23 种语言组成)。 针对 ASR 对来自“fr”子集的 211 小时转录音频进行了微调。

最初由 VoxPopuli 的作者发布 [9],在 CC BY-NC 4.0 和 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

VOXPOPULI_ASR_BASE_10K_IT

torchaudio.pipelines.VOXPOPULI_ASR_BASE_10K_IT

wav2vec 2.0 模型。

对来自 VoxPopuli 数据集的 10k 小时未标记音频进行预训练 [9] (“10k” 子集,由 23 种语言组成)。 针对 ASR 对来自“it”子集的 91 小时转录音频进行了微调。

最初由 VoxPopuli 的作者发布 [9],在 CC BY-NC 4.0 和 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

HUBERT_ASR_LARGE

torchaudio.pipelines.HUBERT_ASR_LARGE

具有“大”配置的 HuBERT 模型。

对来自 Libri-Light 数据集 [3] 的 60,000 小时未标记音频进行预训练,以及 对 LibriSpeech 数据集中 960 小时转录音频的 ASR 进行了微调 [1] (“train-clean-100”、“train-clean-360”和“train-other-500”的组合)。

最初由 HuBERT 的作者在 MIT 许可下发布 [8] 和 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

HUBERT_ASR_XLARGE

torchaudio.pipelines.HUBERT_ASR_XLARGE

具有“超大”配置的 HuBERT 模型。

对来自 Libri-Light 数据集 [3] 的 60,000 小时未标记音频进行预训练,以及 对 LibriSpeech 数据集中 960 小时转录音频的 ASR 进行了微调 [1] (“train-clean-100”、“train-clean-360”和“train-other-500”的组合)。

最初由 HuBERT 的作者在 MIT 许可下发布 [8] 和 使用相同的许可证重新分发。 [许可证来源]

请参阅使用方法。

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, 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
摘要 self*dl_kwargs=Nonetorchaudio.pipelines.Tacotron2TTSBundle.TextProcessor[来源]get_text_processor

创建文本处理器

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

如果需要预先训练的权重文件,则用于下载它。

参数

dl_kwargskeyword arguments) – 传递给 .

返回

一个可调用对象,它以字符串或字符串列表作为输入,并且 返回编码文本的 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=Nonetorchaudio.models.Tacotron2[来源]get_tacotron2

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

参数

dl_kwargs关键字参数字典) – 传递给 .

返回

生成的模型。

返回类型

Tacotron2 (塔科特龙2)

摘要 self*dl_kwargs=Nonetorchaudio.pipelines.Tacotron2TTSBundle.Vocoder[来源]get_vocoder

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

如果需要预先训练的权重文件,则用于下载它。

参数

dl_kwargs关键字参数字典) – 传递给 .

返回

一个声码器模块,它接受 spectrogram Tensor 和一个可选的 length Tensor 的 Tensor 中,然后返回生成的波形 Tensor 和可选的 length Tensor 的 Tensor 中。

返回类型

Callable[[Tensor, Optional[Tensor]], Tuple[Tensor, Optional[Tensor]]]

Tacotron2TTSBundle - 文本处理器

[来源]Tacotron2TTSBundle.TextProcessor

Tacotron2TTS 流水线的文本处理部分的接口

有关用法,请参阅

abstract 属性tokens

已处理张量中每个值表示的标记。

有关用法,请参阅

类型

列表[str]

摘要 文本 Union[str List[str]])元组[torch.Tensortorch 的 Tensor 和 Torch 的 T张肌__call__]

将给定的(批次)文本编码为数字张量

有关用法,请参阅

参数

textstr or list of str) – 输入文本。

返回

张肌:

编码的文本。形状:(批次,最大长度)

张肌:

批次中每个样本的有效长度。形状:(batch, )

返回类型

(张量、张量)

Tacotron2TTSBundle - 声码器

[来源]Tacotron2TTSBundle.Vocoder

Tacotron2TTS 管道的声码器部分的接口

有关用法,请参阅

abstract 属性sample_rate

结果波形的采样率

有关用法,请参阅

类型

abstract specgrams torch.Tensorlengths 可选[torch.Tensor] = NoneTuple[torch.Tensor可选[torch.张肌__call__]]

从给定的输入生成波形,例如频谱图

有关用法,请参阅

参数
  • specgramsTensor) – 输入频谱图。形状:(批次、频率区间、时间)。 预期的形状取决于实现。

  • lengthsTensor None可选) – 批处理中每个样本的有效长度。形状:(batch, )。 (默认值:)

返回

张肌:

生成的波形。形状:(批次,最大长度)

Tensor 或 None:

批次中每个样本的有效长度。形状:(batch, )

返回类型

(Tensor, 可选[Tensor])

TACOTRON2_WAVERNN_PHONE_LJSPEECH

torchaudio.pipelines.TACOTRON2_WAVERNN_PHONE_LJSPEECH

具有 和 的基于音素的 TTS 管道。

文本处理器根据 phoneme 对输入文本进行编码。 它使用 DeepPhonemizer 进行转换 字素转换为音素。 模型 (en_us_cmudict_forward) 在 CMUDict 上进行了训练。

Tacotron2 在 LJSpeech [10] 上训练了 1,500 个 epoch。 您可以在此处找到训练脚本。 使用了以下参数;和。win_length=1100hop_length=275n_fft=2048mel_fmin=40mel_fmax=11025

vocder 基于 。 它在 LJSpeech [10] 的 8 位深度波形上进行了 10,000 个 epoch 的训练。 您可以在此处找到训练脚本。

请参阅使用方法。

示例 — “Hello world!T T S 代表文本到语音!

Tacotron2 生成的频谱图

示例 - “专家的审查和证词使委员会得出结论,可能已经开了五枪,”

Tacotron2 生成的频谱图

TACOTRON2_WAVERNN_CHAR_LJSPEECH

torchaudio.pipelines.TACOTRON2_WAVERNN_CHAR_LJSPEECH

具有 和 的基于字符的 TTS 管道。

文本处理器对输入文本逐个字符进行编码。

Tacotron2 在 LJSpeech [10] 上训练了 1,500 个 epoch。 您可以在此处找到训练脚本。 使用了以下参数;和。win_length=1100hop_length=275n_fft=2048mel_fmin=40mel_fmax=11025

vocder 基于 。 它在 LJSpeech [10] 的 8 位深度波形上进行了 10,000 个 epoch 的训练。 您可以在此处找到训练脚本。

请参阅使用方法。

示例 — “Hello world!T T S 代表文本到语音!

Tacotron2 生成的频谱图

示例 - “专家的审查和证词使委员会得出结论,可能已经开了五枪,”

Tacotron2 生成的频谱图

TACOTRON2_GRIFFINLIM_PHONE_LJSPEECH

torchaudio.pipelines.TACOTRON2_GRIFFINLIM_PHONE_LJSPEECH

具有 和 的基于音素的 TTS 管道。

文本处理器根据 phoneme 对输入文本进行编码。 它使用 DeepPhonemizer 进行转换 字素转换为音素。 模型 (en_us_cmudict_forward) 在 CMUDict 上进行了训练。

Tacotron2 在 LJSpeech [10] 上训练了 1,500 个 epoch。 您可以在此处找到训练脚本。 文本处理器设置为 “english_phonemes”。

声码器基于 .

请参阅使用方法。

示例 — “Hello world!T T S 代表文本到语音!

Tacotron2 生成的频谱图

示例 - “专家的审查和证词使委员会得出结论,可能已经开了五枪,”

Tacotron2 生成的频谱图

TACOTRON2_GRIFFINLIM_CHAR_LJSPEECH

torchaudio.pipelines.TACOTRON2_GRIFFINLIM_CHAR_LJSPEECH

具有 和 的基于字符的 TTS 管道。

文本处理器对输入文本逐个字符进行编码。

Tacotron2 在 LJSpeech [10] 上训练了 1,500 个 epoch。 您可以在此处找到训练脚本。 使用了默认参数。

声码器基于 .

请参阅使用方法。

示例 — “Hello world!T T S 代表文本到语音!

Tacotron2 生成的频谱图

示例 - “专家的审查和证词使委员会得出结论,可能已经开了五枪,”

Tacotron2 生成的频谱图

引用

11,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.

21,2,3,4,5,6,7,8,9,10,11,12)

阿列克谢·巴耶夫斯基、亨利·周、阿卜杜勒拉赫曼·穆罕默德和迈克尔·奥利。Wav2vec 2.0:语音表示的自监督学习框架。2020. arXiv:2006.11477.

31,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.

81,2,3,4,5)

Wei-Ning Hsu、Benjamin Bolte、Yao-Hung Hubert Tsai、Kushal Lakhotia、Ruslan Salakhutdinov 和 Abdelrahman Mohamed。Hubert:通过隐藏单元的掩蔽预测进行自我监督的语音表示学习。2021. arXiv:2106.07447.

91,2,3,4,5,6,7,8,9,10)

Changhan Wang、Morgane Rivière、Ann Lee、Anne Wu、Chaitanya Talnikar、Daniel Haziza、Mary Williamson、Juan Miguel Pino 和 Emmanuel Dupoux。Voxpopuli:用于表示学习、半监督学习和解释的大规模多语言语音语料库。CoRR,2021 年。网址:https://arxiv.org/abs/2101.00390,arXiv:2101.00390

101,2,3,4,5,6)

Keith Ito 和 Linda Johnson。lj 语音数据集。https://keithito.com/LJ-Speech-Dataset/,2017 年。

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

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

查看资源