Transformers 文件
SpeechT5
並獲得增強的文件體驗
開始使用
SpeechT5
概述
SpeechT5模型由Junyi Ao、Rui Wang、Long Zhou、Chengyi Wang、Shuo Ren、Yu Wu、Shujie Liu、Tom Ko、Qing Li、Yu Zhang、Zhihua Wei、Yao Qian、Jinyu Li和Furu Wei在論文《SpeechT5:面向口語處理的統一模態編碼器-解碼器預訓練》中提出。
論文摘要如下:
摘要:受T5(文字到文字遷移轉換器)在預訓練自然語言處理模型中取得成功的啟發,我們提出了一個統一模態的SpeechT5框架,該框架探索了用於自監督語音/文字表示學習的編碼器-解碼器預訓練。SpeechT5框架由一個共享的編碼器-解碼器網路和六個特定模態(語音/文字)的前/後處理網路組成。輸入語音/文字經過前處理網路預處理後,共享的編碼器-解碼器網路對序列到序列的轉換進行建模,然後後處理網路根據解碼器的輸出生成語音/文字模態的輸出。我們利用大規模未標記的語音和文字資料對SpeechT5進行預訓練,以學習一種統一的模態表示,希望藉此提升對語音和文字的建模能力。為了將文字和語音資訊對齊到這個統一的語義空間中,我們提出了一種跨模態向量量化方法,該方法將語音/文字狀態與潛在單元隨機混合,作為編碼器和解碼器之間的介面。廣泛的評估表明,所提出的SpeechT5框架在各種口語處理任務上具有優越性,包括自動語音識別、語音合成、語音翻譯、語音轉換、語音增強和說話人識別。
SpeechT5Config
class transformers.SpeechT5Config
< 源 >( vocab_size = 81 hidden_size = 768 encoder_layers = 12 encoder_attention_heads = 12 encoder_ffn_dim = 3072 encoder_layerdrop = 0.1 decoder_layers = 6 decoder_ffn_dim = 3072 decoder_attention_heads = 12 decoder_layerdrop = 0.1 hidden_act = 'gelu' positional_dropout = 0.1 hidden_dropout = 0.1 attention_dropout = 0.1 activation_dropout = 0.1 initializer_range = 0.02 layer_norm_eps = 1e-05 scale_embedding = False feat_extract_norm = 'group' feat_proj_dropout = 0.0 feat_extract_activation = 'gelu' conv_dim = (512, 512, 512, 512, 512, 512, 512) conv_stride = (5, 2, 2, 2, 2, 2, 2) conv_kernel = (10, 3, 3, 3, 3, 2, 2) conv_bias = False num_conv_pos_embeddings = 128 num_conv_pos_embedding_groups = 16 apply_spec_augment = True mask_time_prob = 0.05 mask_time_length = 10 mask_time_min_masks = 2 mask_feature_prob = 0.0 mask_feature_length = 10 mask_feature_min_masks = 0 pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 decoder_start_token_id = 2 num_mel_bins = 80 speech_decoder_prenet_layers = 2 speech_decoder_prenet_units = 256 speech_decoder_prenet_dropout = 0.5 speaker_embedding_dim = 512 speech_decoder_postnet_layers = 5 speech_decoder_postnet_units = 256 speech_decoder_postnet_kernel = 5 speech_decoder_postnet_dropout = 0.5 reduction_factor = 2 max_speech_positions = 4000 max_text_positions = 450 encoder_max_relative_position = 160 use_guided_attention_loss = True guided_attention_loss_num_heads = 2 guided_attention_loss_sigma = 0.4 guided_attention_loss_scale = 10.0 use_cache = True is_encoder_decoder = True **kwargs )
引數
- vocab_size (
int
, 可選, 預設為 81) — SpeechT5 模型的詞彙表大小。定義了傳遞給 SpeechT5Model 的前向方法的inputs_ids
可以表示的不同詞元的數量。 - hidden_size (
int
, 可選, 預設為 768) — 編碼器層和池化層的維度。 - encoder_layers (
int
, 可選, 預設為 12) — Transformer 編碼器中的隱藏層數量。 - encoder_attention_heads (
int
, 可選, 預設為 12) — Transformer 編碼器中每個注意力層的注意力頭數量。 - encoder_ffn_dim (
int
, 可選, 預設為 3072) — Transformer 編碼器中“中間”(即前饋)層的維度。 - encoder_layerdrop (
float
, 可選, 預設為 0.1) — 編碼器的 LayerDrop 機率。更多詳情請參閱 [LayerDrop 論文](https://huggingface.co/papers/1909.11556)。 - decoder_layers (
int
, 可選, 預設為 6) — Transformer 解碼器中的隱藏層數量。 - decoder_attention_heads (
int
, 可選, 預設為 12) — Transformer 解碼器中每個注意力層的注意力頭數量。 - decoder_ffn_dim (
int
, 可選, 預設為 3072) — Transformer 解碼器中“中間”(通常稱為前饋)層的維度。 - decoder_layerdrop (
float
, 可選, 預設為 0.1) — 解碼器的 LayerDrop 機率。更多詳情請參閱 [LayerDrop 論文](https://huggingface.co/papers/1909.11556)。 - hidden_act (
str
或function
, 可選, 預設為"gelu"
) — 編碼器和池化層中的非線性啟用函式(函式或字串)。如果為字串,支援"gelu"
、"relu"
、"selu"
和"gelu_new"
。 - positional_dropout (
float
, 可選, 預設為 0.1) — 文字位置編碼層的 dropout 機率。 - hidden_dropout (
float
, 可選, 預設為 0.1) — 嵌入層、編碼器和池化層中所有全連線層的 dropout 機率。 - attention_dropout (
float
, 可選, 預設為 0.1) — 注意力機率的 dropout 比例。 - activation_dropout (
float
, 可選, 預設為 0.1) — 全連線層內啟用函式的 dropout 比例。 - initializer_range (
float
, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的 truncated_normal_initializer 的標準差。 - layer_norm_eps (
float
, 可選, 預設為 1e-5) — 層歸一化層使用的 epsilon 值。 - scale_embedding (
bool
, 可選, 預設為False
) — 是否透過除以 sqrt(d_model) 來縮放嵌入。 - feat_extract_norm (
str
, 可選, 預設為"group"
) — 應用於語音編碼器預處理網路中一維卷積層的歸一化方法。"group"
表示僅對第一個一維卷積層進行組歸一化,"layer"
表示對所有一維卷積層進行層歸一化。 - feat_proj_dropout (
float
, 可選, 預設為 0.0) — 語音編碼器預處理網路輸出的 dropout 機率。 - feat_extract_activation (
str,
可選, 預設為
“gelu”) -- 特徵提取器的一維卷積層中的非線性啟用函式(函式或字串)。如果為字串,支援
“gelu”、
“relu”、
“selu”和
“gelu_new”`。 - conv_dim (
tuple[int]
或list[int]
, 可選, 預設為(512, 512, 512, 512, 512, 512, 512)
) — 一個整數元組,定義了語音編碼器預處理網路中每個一維卷積層的輸入和輸出通道數。conv_dim 的長度定義了一維卷積層的數量。 - conv_stride (
tuple[int]
或list[int]
, 可選, 預設為(5, 2, 2, 2, 2, 2, 2)
) — 一個整數元組,定義了語音編碼器預處理網路中每個一維卷積層的步幅。conv_stride 的長度定義了卷積層的數量,並且必須與 conv_dim 的長度相匹配。 - conv_kernel (
tuple[int]
或list[int]
, 可選, 預設為(10, 3, 3, 3, 3, 3, 3)
) — 一個整數元組,定義了語音編碼器預處理網路中每個一維卷積層的核大小。conv_kernel 的長度定義了卷積層的數量,並且必須與 conv_dim 的長度相匹配。 - conv_bias (
bool
, 可選, 預設為False
) — 一維卷積層是否帶偏置。 - num_conv_pos_embeddings (
int
, 可選, 預設為 128) — 卷積位置嵌入的數量。定義了一維卷積位置嵌入層的核大小。 - num_conv_pos_embedding_groups (
int
, 可選, 預設為 16) — 一維卷積位置嵌入層的組數。 - apply_spec_augment (
bool
, 可選, 預設為True
) — 是否對語音編碼器預處理網路的輸出應用 SpecAugment 資料增強。參考 SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition。 - mask_time_prob (
float
, 可選, 預設為 0.05) — 時間軸上所有特徵向量將被掩蔽的百分比(介於 0 和 1 之間)。掩蔽過程會在時間軸上生成“mask_time_prob*len(time_axis)/mask_time_length”個獨立的掩碼。如果從每個特徵向量被選為待掩蔽向量段起點的機率來推斷,則 mask_time_prob 應該是 `prob_vector_start*mask_time_length`。請注意,重疊可能會減少實際被掩蔽向量的百分比。僅當apply_spec_augment
為 True 時此引數才相關。 - mask_time_length (
int
, 可選, 預設為 10) — 沿時間軸的向量段長度。 - mask_time_min_masks (
int
, 可選, 預設為 2), — 沿時間軸生成的長度為mask_feature_length
的最小掩碼數量,每個時間步都如此,與mask_feature_prob
無關。僅當“mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks”時此引數才相關。 - mask_feature_prob (
float
, 可選, 預設為 0.0) — 特徵軸上所有特徵向量將被掩蔽的百分比(介於 0 和 1 之間)。掩蔽過程會在特徵軸上生成“mask_feature_prob*len(feature_axis)/mask_time_length”個獨立的掩碼。如果從每個特徵向量被選為待掩蔽向量段起點的機率來推斷,則 mask_feature_prob 應該是 `prob_vector_start*mask_feature_length`。請注意,重疊可能會減少實際被掩蔽向量的百分比。僅當apply_spec_augment
為 True 時此引數才相關。 - mask_feature_length (
int
, 可選, 預設為 10) — 沿特徵軸的向量段長度。 - mask_feature_min_masks (
int
, 可選, 預設為 0), — 沿特徵軸生成的長度為mask_feature_length
的最小掩碼數量,每個時間步都如此,與mask_feature_prob
無關。僅當“mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks”時此引數才相關。 - num_mel_bins (
int
, 可選, 預設為 80) — 每個輸入特徵使用的梅爾特徵數。由語音解碼器預處理網路使用。應與 SpeechT5Processor 類中使用的值相對應。 - speech_decoder_prenet_layers (
int
, 可選, 預設為 2) — 語音解碼器預處理網路中的層數。 - speech_decoder_prenet_units (
int
, 可選, 預設為 256) — 語音解碼器預處理網路中各層的維度。 - speech_decoder_prenet_dropout (
float
, 可選, 預設為 0.5) — 語音解碼器預處理網路層的 dropout 機率。 - speaker_embedding_dim (
int
, 可選, 預設為 512) — XVector 嵌入向量的維度。 - speech_decoder_postnet_layers (
int
, 可選, 預設為 5) — 語音解碼器後處理網路中的層數。 - speech_decoder_postnet_units (
int
, 可選, 預設為 256) — 語音解碼器後處理網路中各層的維度。 - speech_decoder_postnet_kernel (
int
, 可選, 預設為 5) — 語音解碼器後處理網路中的卷積濾波器通道數。 - speech_decoder_postnet_dropout (
float
, optional, defaults to 0.5) — 語音解碼器後置網路層的 dropout 機率。 - reduction_factor (
int
, optional, defaults to 2) — 語音解碼器輸入的譜圖長度縮減因子。 - max_speech_positions (
int
, optional, defaults to 4000) — 此模型可能使用的語音特徵的最大序列長度。 - max_text_positions (
int
, optional, defaults to 450) — 此模型可能使用的文字特徵的最大序列長度。 - encoder_max_relative_position (
int
, optional, defaults to 160) — 編碼器中相對位置嵌入的最大距離。 - use_guided_attention_loss (
bool
, optional, defaults toTrue
) — 在訓練 TTS 模型時是否應用引導注意力損失。 - guided_attention_loss_num_heads (
int
, optional, defaults to 2) — 將應用引導注意力損失的注意力頭數量。使用 -1 將此損失應用於所有注意力頭。 - guided_attention_loss_sigma (
float
, optional, defaults to 0.4) — 引導注意力損失的標準差。 - guided_attention_loss_scale (
float
, optional, defaults to 10.0) — 引導注意力損失的縮放係數(也稱為 lambda)。 - use_cache (
bool
, optional, defaults toTrue
) — 模型是否應返回最後一個鍵/值注意力(並非所有模型都使用)。
這是一個用於儲存 SpeechT5Model 配置的配置類。它根據指定的引數例項化一個 SpeechT5 模型,定義模型架構。使用預設值例項化配置將產生與 SpeechT5 microsoft/speecht5_asr 架構類似的配置。
配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請閱讀 PretrainedConfig 的文件。
示例
>>> from transformers import SpeechT5Model, SpeechT5Config
>>> # Initializing a "microsoft/speecht5_asr" style configuration
>>> configuration = SpeechT5Config()
>>> # Initializing a model (with random weights) from the "microsoft/speecht5_asr" style configuration
>>> model = SpeechT5Model(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
SpeechT5HifiGanConfig
class transformers.SpeechT5HifiGanConfig
< 源 >( model_in_dim = 80 sampling_rate = 16000 upsample_initial_channel = 512 upsample_rates = [4, 4, 4, 4] upsample_kernel_sizes = [8, 8, 8, 8] resblock_kernel_sizes = [3, 7, 11] resblock_dilation_sizes = [[1, 3, 5], [1, 3, 5], [1, 3, 5]] initializer_range = 0.01 leaky_relu_slope = 0.1 normalize_before = True **kwargs )
引數
- model_in_dim (
int
, optional, defaults to 80) — 輸入的對數梅爾譜圖中的頻率箱數。 - sampling_rate (
int
, optional, defaults to 16000) — 生成輸出音訊的取樣率,以赫茲 (Hz) 表示。 - upsample_initial_channel (
int
, optional, defaults to 512) — 上取樣網路的輸入通道數。 - upsample_rates (
tuple[int]
orlist[int]
, optional, defaults to[4, 4, 4, 4]
) — 定義上取樣網路中每個一維卷積層步幅的整數元組。upsample_rates 的長度定義了卷積層的數量,並且必須與 upsample_kernel_sizes 的長度相匹配。 - upsample_kernel_sizes (
tuple[int]
orlist[int]
, optional, defaults to[8, 8, 8, 8]
) — 定義上取樣網路中每個一維卷積層核大小的整數元組。upsample_kernel_sizes 的長度定義了卷積層的數量,並且必須與 upsample_rates 的長度相匹配。 - resblock_kernel_sizes (
tuple[int]
orlist[int]
, optional, defaults to[3, 7, 11]
) — 定義多感受野融合 (MRF) 模組中一維卷積層核大小的整數元組。 - resblock_dilation_sizes (
tuple[tuple[int]]
orlist[list[int]]
, optional, defaults to[[1, 3, 5], [1, 3, 5], [1, 3, 5]]
) — 定義多感受野融合 (MRF) 模組中擴張一維卷積層膨脹率的巢狀整數元組。 - initializer_range (
float
, optional, defaults to 0.01) — 用於初始化所有權重矩陣的 truncated_normal_initializer 的標準差。 - leaky_relu_slope (
float
, optional, defaults to 0.1) — Leaky ReLU 啟用函式使用的負斜率角度。 - normalize_before (
bool
, optional, defaults toTrue
) — 是否在聲碼之前使用聲碼器學習到的均值和方差對譜圖進行歸一化。
這是一個用於儲存 SpeechT5HifiGanModel
配置的配置類。它根據指定的引數例項化一個 SpeechT5 HiFi-GAN 聲碼器模型,定義模型架構。使用預設值例項化配置將產生與 SpeechT5 microsoft/speecht5_hifigan 架構類似的配置。
配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請閱讀 PretrainedConfig 的文件。
示例
>>> from transformers import SpeechT5HifiGan, SpeechT5HifiGanConfig
>>> # Initializing a "microsoft/speecht5_hifigan" style configuration
>>> configuration = SpeechT5HifiGanConfig()
>>> # Initializing a model (with random weights) from the "microsoft/speecht5_hifigan" style configuration
>>> model = SpeechT5HifiGan(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
SpeechT5Tokenizer
class transformers.SpeechT5Tokenizer
< 源 >( vocab_file bos_token = '<s>' eos_token = '</s>' unk_token = '<unk>' pad_token = '<pad>' normalize = False sp_model_kwargs: typing.Optional[dict[str, typing.Any]] = None **kwargs )
引數
- vocab_file (
str
) — SentencePiece 檔案(通常副檔名為 .spm),包含例項化分詞器所需的詞彙表。 - bos_token (
str
, optional, defaults to"<s>"
) — 序列開始標記。 - eos_token (
str
, optional, defaults to"</s>"
) — 序列結束標記。 - unk_token (
str
, optional, defaults to"<unk>"
) — 未知標記。不在詞彙表中的標記無法轉換為 ID,將被設定為此標記。 - pad_token (
str
, optional, defaults to"<pad>"
) — 用於填充的標記,例如在批處理不同長度的序列時使用。 - normalize (
bool
, optional, defaults toFalse
) — 是否將文字中的數值量轉換為其對應的英文拼寫形式。 - sp_model_kwargs (
dict
, optional) — 將傳遞給SentencePieceProcessor.__init__()
方法。 SentencePiece 的 Python 包裝器可用於設定以下內容等:-
enable_sampling
: 啟用子詞正則化。 -
nbest_size
: unigram 的取樣引數。對 BPE-Dropout 無效。nbest_size = {0,1}
: 不執行取樣。nbest_size > 1
: 從 nbest_size 個結果中取樣。nbest_size < 0
: 假設 nbest_size 是無限的,並使用前向過濾和後向取樣演算法從所有假設(格)中取樣。
-
alpha
: unigram 取樣的平滑引數,以及 BPE-dropout 合併操作的 dropout 機率。
-
- sp_model (
SentencePieceProcessor
) — 用於每次轉換(字串、標記和 ID)的 SentencePiece 處理器。
構建一個 SpeechT5 分詞器。基於 SentencePiece。
此分詞器繼承自 PreTrainedTokenizer,其中包含大多數主要方法。使用者應參考此超類以獲取有關這些方法的更多資訊。
__call__
< 源 >( text: typing.Union[str, list[str], list[list[str]], NoneType] = None text_pair: typing.Union[str, list[str], list[list[str]], NoneType] = None text_target: typing.Union[str, list[str], list[list[str]], NoneType] = None text_pair_target: typing.Union[str, list[str], list[list[str]], NoneType] = None add_special_tokens: bool = True padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = False truncation: typing.Union[bool, str, transformers.tokenization_utils_base.TruncationStrategy, NoneType] = None max_length: typing.Optional[int] = None stride: int = 0 is_split_into_words: bool = False pad_to_multiple_of: typing.Optional[int] = None padding_side: typing.Optional[str] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None return_token_type_ids: typing.Optional[bool] = None return_attention_mask: typing.Optional[bool] = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True **kwargs ) → BatchEncoding
引數
- text (
str
,list[str]
,list[list[str]]
, optional) — 要編碼的序列或序列批次。每個序列可以是字串或字串列表(預分詞的字串)。如果序列以字串列表(預分詞)的形式提供,必須設定is_split_into_words=True
(以消除與序列批次的歧義)。 - text_pair (
str
,list[str]
,list[list[str]]
, optional) — 要編碼的序列或序列批次。每個序列可以是字串或字串列表(預分詞的字串)。如果序列以字串列表(預分詞)的形式提供,必須設定is_split_into_words=True
(以消除與序列批次的歧義)。 - text_target (
str
,list[str]
,list[list[str]]
, optional) — 要編碼為目標文字的序列或序列批次。每個序列可以是字串或字串列表(預分詞的字串)。如果序列以字串列表(預分詞)的形式提供,必須設定is_split_into_words=True
(以消除與序列批次的歧義)。 - text_pair_target (
str
,list[str]
,list[list[str]]
, optional) — 要編碼為目標文字的序列或序列批次。每個序列可以是字串或字串列表(預分詞的字串)。如果序列以字串列表(預分詞)的形式提供,必須設定is_split_into_words=True
(以消除與序列批次的歧義)。 - add_special_tokens (
bool
, optional, defaults toTrue
) — 在編碼序列時是否新增特殊標記。這將使用底層的PretrainedTokenizerBase.build_inputs_with_special_tokens
函式,該函式定義了哪些標記會自動新增到輸入 ID 中。如果您想自動新增bos
或eos
標記,這會很有用。 - padding (
bool
,str
or PaddingStrategy, optional, defaults toFalse
) — 啟用並控制填充。接受以下值:True
或'longest'
:填充到批次中最長的序列(如果只提供單個序列,則不填充)。'max_length'
:填充到由max_length
引數指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。False
或'do_not_pad'
(預設值): 不填充(即,可以輸出具有不同長度序列的批次)。
- truncation (
bool
,str
or TruncationStrategy, optional, defaults toFalse
) — 啟用並控制截斷。接受以下值:True
或'longest_first'
:截斷到由max_length
引數指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。這將逐個標記地截斷,如果提供了一對序列(或一批序列對),則從最長的序列中移除一個標記。'only_first'
:截斷到由max_length
引數指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或一批序列對),這隻會截斷第一個序列。'only_second'
:截斷到由max_length
引數指定的最大長度,如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或一批序列對),這隻會截斷第二個序列。False
或'do_not_truncate'
(預設值): 不截斷(即,可以輸出序列長度大於模型最大可接受輸入大小的批次)。
- max_length (
int
, optional) — 控制截斷/填充引數使用的最大長度。如果未設定或設定為
None
,當截斷/填充引數需要最大長度時,將使用預定義的模型最大長度。如果模型沒有特定的最大輸入長度(如 XLNet),則將停用截斷/填充到最大長度的功能。 - stride (
int
, optional, defaults to 0) — 如果與max_length
一起設定為一個數字,當return_overflowing_tokens=True
時返回的溢位標記將包含一些來自截斷序列末尾的標記,以在截斷序列和溢位序列之間提供一些重疊。此引數的值定義了重疊標記的數量。 - is_split_into_words (
bool
, optional, defaults toFalse
) — 輸入是否已經預分詞(例如,拆分成單詞)。如果設定為True
,分詞器會假定輸入已經拆分成單詞(例如,透過在空白處拆分),它將對這些單詞進行分詞。這對於 NER 或標記分類很有用。 - pad_to_multiple_of (
int
, optional) — 如果設定,將把序列填充到所提供值的倍數。需要啟用padding
。這對於在計算能力>= 7.5
(Volta)的 NVIDIA 硬體上啟用 Tensor Cores 特別有用。 - padding_side (
str
, 可選) — 模型進行填充的一側。應在 [`right`, `left`] 中選擇。預設值從同名的類屬性中獲取。 - return_tensors (
str
或 TensorType, 可選) — 如果設定,將返回張量而不是 Python 整數列表。可接受的值為:'tf'
:返回 TensorFlowtf.constant
物件。'pt'
:返回 PyTorchtorch.Tensor
物件。'np'
:返回 Numpynp.ndarray
物件。
- return_token_type_ids (
bool
, 可選) — 是否返回詞元型別 ID。如果保留預設值,將根據特定分詞器的預設設定返回詞元型別 ID,該設定由 `return_outputs` 屬性定義。 - return_attention_mask (
bool
, 可選) — 是否返回注意力掩碼。如果保留預設值,將根據特定分詞器的預設設定返回注意力掩碼,該設定由 `return_outputs` 屬性定義。 - return_overflowing_tokens (
bool
, 可選, 預設為False
) — 是否返回溢位的詞元序列。如果提供了一對輸入 ID 序列(或一批序列對)並設定 `truncation_strategy = longest_first` 或 `True`,則會引發錯誤而不是返回溢位的詞元。 - return_special_tokens_mask (
bool
, 可選, 預設為False
) — 是否返回特殊詞元掩碼資訊。 - return_offsets_mapping (
bool
, 可選, 預設為False
) — 是否為每個詞元返回 `(char_start, char_end)`。此功能僅在繼承自 PreTrainedTokenizerFast 的快速分詞器上可用,如果使用 Python 的分詞器,此方法將引發 `NotImplementedError`。
- return_length (
bool
, 可選, 預設為False
) — 是否返回編碼後輸入的長度。 - verbose (
bool
, 可選, 預設為True
) — 是否列印更多資訊和警告。 - **kwargs — 傳遞給 `self.tokenize()` 方法
返回
一個 BatchEncoding,包含以下欄位:
-
input_ids — 要輸入到模型中的標記 ID 列表。
-
token_type_ids — 要輸入到模型中的標記型別 ID 列表(當
return_token_type_ids=True
或如果 *“token_type_ids”* 在self.model_input_names
中時)。 -
attention_mask — 指定模型應關注哪些標記的索引列表(當
return_attention_mask=True
或如果 *“attention_mask”* 在self.model_input_names
中時)。 -
overflowing_tokens — 溢位標記序列列表(當指定
max_length
且return_overflowing_tokens=True
時)。 -
num_truncated_tokens — 截斷標記的數量(當指定
max_length
且return_overflowing_tokens=True
時)。 -
special_tokens_mask — 0 和 1 的列表,其中 1 表示新增的特殊標記,0 表示常規序列標記(當
add_special_tokens=True
且return_special_tokens_mask=True
時)。 -
length — 輸入的長度(當
return_length=True
時)
將一個或多個序列或一對或多對序列標記化並準備用於模型的主要方法。
解碼
< 原始碼 >( token_ids: typing.Union[int, list[int], ForwardRef('np.ndarray'), ForwardRef('torch.Tensor'), ForwardRef('tf.Tensor')] skip_special_tokens: bool = False clean_up_tokenization_spaces: typing.Optional[bool] = None **kwargs ) → str
引數
- token_ids (
Union[int, list[int], np.ndarray, torch.Tensor, tf.Tensor]
) — 分詞後的輸入 ID 列表。可以使用 `__call__` 方法獲得。 - skip_special_tokens (
bool
, 可選, 預設為False
) — 是否在解碼時移除特殊詞元。 - clean_up_tokenization_spaces (
bool
, 可選) — 是否清理分詞產生的空格。如果為 `None`,將預設為 `self.clean_up_tokenization_spaces`。 - kwargs (附加關鍵字引數, 可選) — 將傳遞給底層特定於模型的解碼方法。
返回
字串
解碼後的句子。
使用分詞器和詞彙表將 ID 序列轉換為字串,可以選擇移除特殊標記並清理分詞空間。
類似於執行 self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids))
。
batch_decode
< 原始碼 >( sequences: typing.Union[list[int], list[list[int]], ForwardRef('np.ndarray'), ForwardRef('torch.Tensor'), ForwardRef('tf.Tensor')] skip_special_tokens: bool = False clean_up_tokenization_spaces: typing.Optional[bool] = None **kwargs ) → list[str]
引數
- sequences (
Union[list[int], list[list[int]], np.ndarray, torch.Tensor, tf.Tensor]
) — 分詞後的輸入 ID 列表。可以使用 `__call__` 方法獲得。 - skip_special_tokens (
bool
, 可選, 預設為False
) — 是否在解碼時移除特殊詞元。 - clean_up_tokenization_spaces (
bool
, 可選) — 是否清理分詞產生的空格。如果為 `None`,將預設為 `self.clean_up_tokenization_spaces`。 - kwargs (附加關鍵字引數, 可選) — 將傳遞給底層特定於模型的解碼方法。
返回
list[str]
解碼後的句子列表。
透過呼叫 decode 將標記 ID 列表的列表轉換為字串列表。
SpeechT5FeatureExtractor
class transformers.SpeechT5FeatureExtractor
< 原始碼 >( feature_size: int = 1 sampling_rate: int = 16000 padding_value: float = 0.0 do_normalize: bool = False num_mel_bins: int = 80 hop_length: int = 16 win_length: int = 64 win_function: str = 'hann_window' frame_signal_scale: float = 1.0 fmin: float = 80 fmax: float = 7600 mel_floor: float = 1e-10 reduction_factor: int = 2 return_attention_mask: bool = True **kwargs )
引數
- feature_size (
int
, 可選, 預設為 1) — 提取特徵的特徵維度。 - sampling_rate (
int
, 可選, 預設為 16000) — 音訊檔案數字化時的取樣率,以赫茲 (Hz) 表示。 - padding_value (
float
, 可選, 預設為 0.0) — 用於填充值的數值。 - do_normalize (
bool
, 可選, 預設為False
) — 是否對輸入進行零均值單位方差歸一化。對於某些模型,歸一化可以顯著提高效能。 - num_mel_bins (
int
, 可選, 預設為 80) — 提取的語譜圖特徵中的 mel 頻率區間的數量。 - hop_length (
int
, 可選, 預設為 16) — 視窗之間的毫秒數。在許多論文中也稱為“shift”。 - win_length (
int
, 可選, 預設為 64) — 每個視窗的毫秒數。 - win_function (
str
, 可選, 預設為"hann_window"
) — 用於加窗的視窗函式的名稱,必須可透過 `torch.{win_function}` 訪問。 - frame_signal_scale (
float
, 可選, 預設為 1.0) — 在應用 DFT 之前,建立幀時乘以的常數。此引數已棄用。 - fmin (
float
, 可選, 預設為 80) — 最小 mel 頻率,單位為 Hz。 - fmax (
float
, 可選, 預設為 7600) — 最大 mel 頻率,單位為 Hz。 - mel_floor (
float
, 可選, 預設為 1e-10) — mel 頻率濾波器的最小值。 - reduction_factor (
int
, 可選, 預設為 2) — 語譜圖長度縮減因子。此引數已棄用。 - return_attention_mask (
bool
, 可選, 預設為True
) — call() 是否應返回 `attention_mask`。
構建一個 SpeechT5 特徵提取器。
該類可以預處理原始語音訊號,透過(可選地)歸一化為零均值單位方差,供 SpeechT5 語音編碼器 prenet 使用。
該類還可以從原始語音中提取 log-mel 濾波庫特徵,供 SpeechT5 語音解碼器 prenet 使用。
此特徵提取器繼承自 SequenceFeatureExtractor,該類包含大部分主要方法。使用者應參考該超類以獲取有關這些方法的更多資訊。
__call__
< 原始碼 >( audio: typing.Union[numpy.ndarray, list[float], list[numpy.ndarray], list[list[float]], NoneType] = None audio_target: typing.Union[numpy.ndarray, list[float], list[numpy.ndarray], list[list[float]], NoneType] = None padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = False max_length: typing.Optional[int] = None truncation: bool = False pad_to_multiple_of: typing.Optional[int] = None return_attention_mask: typing.Optional[bool] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None sampling_rate: typing.Optional[int] = None **kwargs )
引數
- audio (
np.ndarray
,list[float]
,list[np.ndarray]
,list[list[float]]
, 可選) — 要處理的序列或序列批次。每個序列可以是一個 numpy 陣列、一個浮點值列表、一個 numpy 陣列列表或一個浮點值列表的列表。此引數輸出波形特徵。必須是單聲道音訊,而不是立體聲,即每個時間步長對應單個浮點數。 - audio_target (
np.ndarray
,list[float]
,list[np.ndarray]
,list[list[float]]
, 可選) — 要作為目標處理的序列或序列批次。每個序列可以是一個 numpy 陣列、一個浮點值列表、一個 numpy 陣列列表或一個浮點值列表的列表。此引數輸出 log-mel 語譜圖特徵。 - padding (
bool
,str
或 PaddingStrategy, 可選, 預設為False
) — 選擇一種策略對返回的序列進行填充(根據模型的填充側和填充索引):True
或'longest'
:填充到批次中最長序列的長度(如果只提供單個序列則不填充)。'max_length'
:填充到由 `max_length` 引數指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。False
或'do_not_pad'
(預設):不進行填充(即,可以輸出具有不同長度序列的批次)。
- max_length (
int
, 可選) — 返回列表的最大長度,以及可選的填充長度(見上文)。 - truncation (
bool
) — 啟用截斷功能,將長於 *max_length* 的輸入序列截斷至 *max_length*。 - pad_to_multiple_of (
int
, 可選) — 如果設定,將序列填充到所提供值的倍數。這對於在計算能力 `>= 7.5`(Volta)的 NVIDIA 硬體上啟用 Tensor Cores,或在 TPUs 上使用特別有用,因為這些硬體受益於序列長度是 128 的倍數。
- return_attention_mask (
bool
, 可選) — 是否返回注意力掩碼。如果保留預設值,將根據特定特徵提取器的預設設定返回注意力掩碼。 - return_tensors (
str
或 TensorType, 可選) — 如果設定,將返回張量而不是 Python 整數列表。可接受的值為:'tf'
:返回 TensorFlowtf.constant
物件。'pt'
:返回 PyTorchtorch.Tensor
物件。'np'
:返回 Numpynp.ndarray
物件。
- sampling_rate (
int
, 可選) — `audio` 或 `audio_target` 輸入的取樣率。強烈建議在呼叫 forward 時傳遞 `sampling_rate`,以防止靜默錯誤。
對一個或多個序列進行特徵化併為模型準備的主方法。
傳入 `audio` 值以提取波形特徵。傳入 `audio_target` 值以提取 log-mel 語譜圖特徵。
SpeechT5Processor
class transformers.SpeechT5Processor
< 原始碼 >( feature_extractor tokenizer )
引數
- feature_extractor (
SpeechT5FeatureExtractor
) — SpeechT5FeatureExtractor 的例項。特徵提取器是必需的輸入。 - tokenizer (
SpeechT5Tokenizer
) — SpeechT5Tokenizer 的例項。分詞器是必需的輸入。
構建一個 SpeechT5 處理器,它將一個特徵提取器和一個分詞器包裝成一個單一的處理器。
SpeechT5Processor 提供了 SpeechT5FeatureExtractor 和 SpeechT5Tokenizer 的所有功能。有關更多資訊,請參閱 call() 和 decode() 的文件字串。
處理音訊和文字輸入,以及音訊和文字目標。
您可以使用引數 `audio` 來處理音訊,或使用引數 `audio_target` 來處理音訊目標。這將引數轉發給 SpeechT5FeatureExtractor 的 call()。
您可以使用引數 `text` 來處理文字,或使用引數 `text_target` 來處理文字標籤。這將引數轉發給 SpeechT5Tokenizer 的 call()。
有效的輸入組合有
- 僅 `text`
- 僅 `audio`
- 僅 `text_target`
- 僅 `audio_target`
- `text` 和 `audio_target`
- `audio` 和 `audio_target`
- `text` 和 `text_target`
- `audio` 和 `text_target`
有關更多資訊,請參閱上述兩種方法的文件字串。
將音訊和文字輸入及其目標整理成一個填充好的批次。
音訊輸入由 SpeechT5FeatureExtractor 的 pad() 方法進行填充。文字輸入由 SpeechT5Tokenizer 的 pad() 方法進行填充。
有效的輸入組合有
- 僅
input_ids
- 僅
input_values
- 僅
labels
,可以是 log-mel 頻譜圖或文字 tokens input_ids
和 log-mel 頻譜圖labels
input_values
和文字labels
有關更多資訊,請參閱上述兩種方法的文件字串。
from_pretrained
< source >( pretrained_model_name_or_path: typing.Union[str, os.PathLike] cache_dir: typing.Union[str, os.PathLike, NoneType] = None force_download: bool = False local_files_only: bool = False token: typing.Union[str, bool, NoneType] = None revision: str = 'main' **kwargs )
引數
- pretrained_model_name_or_path (
str
或os.PathLike
) — 這可以是以下之一:- 一個字串,即託管在 huggingface.co 上的模型倉庫中預訓練特徵提取器的 模型 ID。
- 一個包含使用 save_pretrained() 方法儲存的特徵提取器檔案的 目錄 路徑,例如
./my_model_directory/
。 - 一個已儲存的特徵提取器 JSON 檔案 的路徑或 URL,例如
./my_model_directory/preprocessor_config.json
。
- **kwargs — 傳遞給 from_pretrained() 和
~tokenization_utils_base.PreTrainedTokenizer.from_pretrained
的其他關鍵字引數。
例項化與預訓練模型關聯的處理器。
這個類方法只是呼叫特徵提取器的 from_pretrained()、影像處理器的 ImageProcessingMixin 和分詞器的 ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained
方法。有關更多資訊,請參閱上述方法的文件字串。
save_pretrained
< source >( save_directory push_to_hub: bool = False **kwargs )
引數
- save_directory (
str
或os.PathLike
) — 將要儲存特徵提取器 JSON 檔案和分詞器檔案的目錄(如果目錄不存在則會建立)。 - push_to_hub (
bool
, optional, 預設為False
) — 是否在儲存模型後將其推送到 Hugging Face 模型中心。你可以使用repo_id
指定要推送到的倉庫(預設為你名稱空間中save_directory
的名稱)。 - kwargs (
dict[str, Any]
, optional) — 傳遞給 push_to_hub() 方法的其他關鍵字引數。
在指定目錄中儲存此處理器的屬性(特徵提取器、分詞器等),以便可以使用 from_pretrained() 方法重新載入。
這個類方法只是呼叫 save_pretrained() 和 save_pretrained()。有關更多資訊,請參閱上述方法的文件字串。
此方法將其所有引數轉發給 SpeechT5Tokenizer 的 batch_decode()。有關更多資訊,請參閱該方法的文件字串。
此方法將其所有引數轉發給 SpeechT5Tokenizer 的 decode()。有關更多資訊,請參閱該方法的文件字串。
SpeechT5Model
class transformers.SpeechT5Model
< source >( config: SpeechT5Config encoder: typing.Optional[torch.nn.modules.module.Module] = None decoder: typing.Optional[torch.nn.modules.module.Module] = None )
引數
- config (SpeechT5Config) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
- encoder (
PreTrainedModel
, optional) — 要使用的編碼器模型。 - decoder (
PreTrainedModel
, optional) — 要使用的解碼器模型。
基礎的 SpeechT5 編碼器-解碼器模型,輸出原始的隱藏狀態,不帶任何特定的前置或後置網路。
該模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為所有模型實現的通用方法(如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
該模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。
forward
< source >( input_values: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.LongTensor] = None decoder_input_values: typing.Optional[torch.Tensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None decoder_head_mask: typing.Optional[torch.FloatTensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None use_cache: typing.Optional[bool] = None speaker_embeddings: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.Seq2SeqModelOutput or tuple(torch.FloatTensor)
引數
- input_values (
torch.Tensor
,形狀為(batch_size, sequence_length)
) — 根據使用的編碼器,input_values
可以是:輸入原始語音波形的浮點數值,或者詞彙表中輸入序列令牌的索引,或者隱藏狀態。 - attention_mask (
torch.LongTensor
,形狀為(batch_size, sequence_length)
, optional) — 用於避免對填充令牌索引執行注意力操作的掩碼。掩碼值選自[0, 1]
:- 1 表示令牌未被掩碼,
- 0 表示令牌被掩碼。
- decoder_input_values (
torch.Tensor
,形狀為(batch_size, target_sequence_length)
, optional) — 根據使用的解碼器,decoder_input_values
可以是:從原始語音波形中提取的 log-mel 濾波器組特徵的浮點數值,或者詞彙表中解碼器輸入序列令牌的索引,或者隱藏狀態。 - decoder_attention_mask (
torch.LongTensor
,形狀為(batch_size, target_sequence_length)
, optional) — 預設行為:生成一個忽略decoder_input_values
中填充令牌的張量。預設情況下也會使用因果掩碼。如果你想改變填充行為,你應該閱讀
SpeechT5Decoder._prepare_decoder_attention_mask
並根據你的需求進行修改。有關預設策略的更多資訊,請參閱論文中的圖 1。 - head_mask (
torch.FloatTensor
,形狀為(num_heads,)
或(num_layers, num_heads)
, optional) — 用於置零自注意力模組中選定頭部的掩碼。掩碼值選自[0, 1]
:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼。
- decoder_head_mask (
torch.FloatTensor
,形狀為(decoder_layers, decoder_attention_heads)
, optional) — 用於置零解碼器中注意力模組選定頭部的掩碼。掩碼值選自[0, 1]
:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼。
- cross_attn_head_mask (
torch.Tensor
,形狀為(decoder_layers, decoder_attention_heads)
, optional) — 用於置零交叉注意力模組中選定頭部的掩碼。掩碼值選自[0, 1]
:- 1 表示頭部未被掩碼,
- 0 表示頭部被掩碼。
- encoder_outputs (
tuple[tuple[torch.FloatTensor]]
, optional) — 元組包含(last_hidden_state
, optional:hidden_states
, optional:attentions
)last_hidden_state
的形狀為(batch_size, sequence_length, hidden_size)
,optional)是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力。 - past_key_values (
tuple[tuple[torch.FloatTensor]]
, optional) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括在解碼的先前階段,當use_cache=True
或config.use_cache=True
時由模型返回的past_key_values
。允許兩種格式:
- 一個 Cache 例項,請參閱我們的 kv 快取指南;
- 一個長度為
config.n_layers
的tuple(torch.FloatTensor)
的元組,其中每個元組有兩個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量。這也被稱為傳統快取格式。
模型將輸出與輸入相同的快取格式。如果沒有傳遞
past_key_values
,則將返回傳統快取格式。如果使用
past_key_values
,使用者可以選擇只輸入最後一個input_ids
(那些沒有為其提供過去鍵值狀態的 ID),形狀為(batch_size, 1)
,而不是所有形狀為(batch_size, sequence_length)
的input_ids
。 - use_cache (
bool
, optional) — 如果設定為True
,將返回past_key_values
鍵值狀態,可用於加速解碼(請參閱past_key_values
)。 - speaker_embeddings (
torch.FloatTensor
,形狀為(batch_size, config.speaker_embedding_dim)
, optional) — 包含說話人嵌入的張量。 - output_attentions (
bool
, optional) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
, optional) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
, optional) — 是否返回一個 ModelOutput 而不是一個普通的元組。
返回
transformers.modeling_outputs.Seq2SeqModelOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.Seq2SeqModelOutput 或一個 torch.FloatTensor
元組(如果傳遞 return_dict=False
或當 config.return_dict=False
),包含根據配置(SpeechT5Config)和輸入而變化的不同元素。
-
last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
) — 模型解碼器最後一層輸出的隱藏狀態序列。如果使用了
past_key_values
,則只輸出形狀為(batch_size, 1, hidden_size)
的序列的最後一個隱藏狀態。 -
past_key_values (
EncoderDecoderCache
, optional, 當傳遞use_cache=True
或config.use_cache=True
時返回) — 這是一個 EncoderDecoderCache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, optional, 當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型有嵌入層,則一個是嵌入層的輸出,加上每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。解碼器在每個層輸出的隱藏狀態,加上可選的初始嵌入輸出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, optional, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(torch.FloatTensor)
, optional, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
encoder_last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 模型編碼器最後一層輸出的隱藏狀態序列。 -
encoder_hidden_states (
tuple(torch.FloatTensor)
, optional, 當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型有嵌入層,則一個是嵌入層的輸出,加上每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。編碼器在每個層輸出的隱藏狀態,加上可選的初始嵌入輸出。
-
encoder_attentions (
tuple(torch.FloatTensor)
, optional, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
SpeechT5Model 的 forward 方法重寫了 __call__
特殊方法。
儘管前向傳播的流程需要在此函式內定義,但之後應呼叫 Module
例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會默默地忽略它們。
SpeechT5ForSpeechToText
class transformers.SpeechT5ForSpeechToText
< source >( config: SpeechT5Config )
引數
- config (SpeechT5Config) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
具有語音編碼器和文字解碼器的 SpeechT5 模型。
該模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為所有模型實現的通用方法(如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
該模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。
forward
< source >( input_values: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None decoder_head_mask: typing.Optional[torch.FloatTensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None labels: typing.Optional[torch.LongTensor] = None ) → transformers.modeling_outputs.Seq2SeqLMOutput or tuple(torch.FloatTensor)
引數
- input_values (
torch.FloatTensor
,形狀為(batch_size, sequence_length)
) — 輸入原始語音波形的浮點值。可以透過將 .flac 或 .wav 音訊檔案載入到list[float]
或numpy.ndarray
型別的陣列中來獲取這些值,例如,透過 soundfile 庫(pip install soundfile)。要將陣列準備成input_values
,應使用 SpeechT5Processor 進行填充並轉換為torch.FloatTensor
型別的張量。有關詳細資訊,請參閱 SpeechT5Processor.call()。 - attention_mask (
torch.LongTensor
,形狀為(batch_size, sequence_length)
, optional) — 用於避免對填充令牌索引執行注意力操作的掩碼。掩碼值選自[0, 1]
:- 1 表示令牌未被掩碼,
- 0 表示令牌被掩碼。
- decoder_input_ids (
torch.LongTensor
,形狀為(batch_size, target_sequence_length)
, optional) — 詞彙表中解碼器輸入序列令牌的索引。可以使用 SpeechT5Tokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
SpeechT5 使用
eos_token_id
作為生成decoder_input_ids
的起始令牌。如果使用past_key_values
,可以選擇只輸入最後一個decoder_input_ids
(請參閱past_key_values
)。 - decoder_attention_mask (
torch.LongTensor
,形狀為(batch_size, target_sequence_length)
, optional) — 預設行為:生成一個忽略decoder_input_values
中填充令牌的張量。預設情況下也會使用因果掩碼。如果你想改變填充行為,你應該閱讀
SpeechT5Decoder._prepare_decoder_attention_mask
並根據你的需求進行修改。有關預設策略的更多資訊,請參閱論文中的圖 1。 - head_mask (
torch.FloatTensor
,形狀為(num_heads,)
或(num_layers, num_heads)
,可選) — 用於使自注意力模組中選定的頭無效的掩碼。掩碼值選自[0, 1]
:- 1 表示頭未被掩碼,
- 0 表示頭被掩碼。
- decoder_head_mask (
torch.FloatTensor
,形狀為(decoder_layers, decoder_attention_heads)
,可選) — 用於使解碼器中注意力模組選定的頭無效的掩碼。掩碼值選自[0, 1]
:- 1 表示頭未被掩碼,
- 0 表示頭被掩碼。
- cross_attn_head_mask (
torch.Tensor
,形狀為(decoder_layers, decoder_attention_heads)
,可選) — 用於使交叉注意力模組中選定的頭無效的掩碼。掩碼值選自[0, 1]
:- 1 表示頭未被掩碼,
- 0 表示頭被掩碼。
- encoder_outputs (
tuple[tuple[torch.FloatTensor]]
,可選) — 元組包含 (last_hidden_state
, 可選:hidden_states
, 可選:attentions
)last_hidden_state
(形狀為(batch_size, sequence_length, hidden_size)
,可選)是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力機制。 - past_key_values (
tuple[tuple[torch.FloatTensor]]
,可選) — 預計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常由模型在解碼的先前階段返回的past_key_values
組成,當use_cache=True
或config.use_cache=True
時。允許兩種格式:
- Cache 例項,請參閱我們的 kv cache 指南;
- 長度為
config.n_layers
的tuple(torch.FloatTensor)
元組,每個元組包含 2 個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量)。這也稱為傳統快取格式。
模型將輸出與輸入相同的快取格式。如果未傳遞
past_key_values
,則將返回傳統快取格式。如果使用
past_key_values
,使用者可以選擇只輸入形狀為(batch_size, 1)
的最後input_ids
(那些沒有將其過去鍵值狀態提供給此模型的 ID),而不是所有形狀為(batch_size, sequence_length)
的input_ids
。 - use_cache (
bool
,可選) — 如果設定為True
,則返回past_key_values
鍵值狀態,可用於加速解碼(參見past_key_values
)。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參見返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參見返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。 - labels (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 用於計算語言建模損失的標籤。索引應在[0, ..., config.vocab_size]
或 -100 之間(參見input_ids
文件)。索引設定為-100
的詞元將被忽略(掩碼),損失僅針對標籤在[0, ..., config.vocab_size]
範圍內的詞元計算。可以使用 SpeechT5Tokenizer 獲取標籤索引。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
返回
transformers.modeling_outputs.Seq2SeqLMOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.Seq2SeqLMOutput 或一個 torch.FloatTensor
元組(如果傳遞 return_dict=False
或 config.return_dict=False
),根據配置 (SpeechT5Config) 和輸入包含各種元素。
-
loss (
torch.FloatTensor
,形狀為(1,)
,可選,當提供labels
時返回) — 語言建模損失。 -
logits (形狀為
(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。 -
past_key_values (
EncoderDecoderCache
, optional, 當傳遞use_cache=True
或config.use_cache=True
時返回) — 這是一個 EncoderDecoderCache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, optional, 當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型有嵌入層,則一個是嵌入層的輸出,加上每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, optional, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(torch.FloatTensor)
, optional, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
encoder_last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 模型編碼器最後一層輸出的隱藏狀態序列。 -
encoder_hidden_states (
tuple(torch.FloatTensor)
, optional, 當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型有嵌入層,則一個是嵌入層的輸出,加上每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
encoder_attentions (
tuple(torch.FloatTensor)
, optional, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
SpeechT5ForSpeechToText 的 forward 方法重寫了 __call__
特殊方法。
儘管前向傳播的流程需要在此函式內定義,但之後應呼叫 Module
例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會默默地忽略它們。
示例
>>> from transformers import SpeechT5Processor, SpeechT5ForSpeechToText
>>> from datasets import load_dataset
>>> dataset = load_dataset(
... "hf-internal-testing/librispeech_asr_demo", "clean", split="validation"
... ) # doctest: +IGNORE_RESULT
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate
>>> processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_asr")
>>> model = SpeechT5ForSpeechToText.from_pretrained("microsoft/speecht5_asr")
>>> # audio file is decoded on the fly
>>> inputs = processor(audio=dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> predicted_ids = model.generate(**inputs, max_length=100)
>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
>>> transcription[0]
'mister quilter is the apostle of the middle classes and we are glad to welcome his gospel'
SpeechT5ForTextToSpeech
class transformers.SpeechT5ForTextToSpeech
< 來源 >( config: SpeechT5Config )
引數
- config (SpeechT5Config) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
帶有文字編碼器和語音解碼器的 SpeechT5 模型。
該模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為所有模型實現的通用方法(如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
該模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。
forward
< 來源 >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None decoder_input_values: typing.Optional[torch.FloatTensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None decoder_head_mask: typing.Optional[torch.FloatTensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None speaker_embeddings: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.FloatTensor] = None stop_labels: typing.Optional[torch.Tensor] = None ) → transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
) — 詞彙表中輸入序列詞元的索引。可以使用 SpeechT5Tokenizer 獲取索引。有關詳細資訊,請參見 encode() 和 call()。
- attention_mask (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 避免對填充詞元索引執行注意力的掩碼。掩碼值選自[0, 1]
:- 1 表示詞元未被掩碼,
- 0 表示詞元被掩碼。
- decoder_input_values (
torch.FloatTensor
,形狀為(batch_size, sequence_length, config.num_mel_bins)
) — 輸入梅爾頻譜圖的浮點值。SpeechT5 使用全零頻譜作為生成
decoder_input_values
的起始標記。如果使用past_key_values
,可以選擇只輸入最後的decoder_input_values
(參見past_key_values
)。 - decoder_attention_mask (
torch.LongTensor
,形狀為(batch_size, target_sequence_length)
,可選) — 預設行為:生成一個忽略decoder_input_values
中填充標記的張量。預設情況下也會使用因果掩碼。如果要更改填充行為,應閱讀
SpeechT5Decoder._prepare_decoder_attention_mask
並根據需要進行修改。有關預設策略的更多資訊,請參閱論文中的圖 1。 - head_mask (
torch.FloatTensor
,形狀為(num_heads,)
或(num_layers, num_heads)
,可選) — 用於使自注意力模組中選定的頭無效的掩碼。掩碼值選自[0, 1]
:- 1 表示頭未被掩碼,
- 0 表示頭被掩碼。
- decoder_head_mask (
torch.FloatTensor
,形狀為(decoder_layers, decoder_attention_heads)
,可選) — 用於使解碼器中注意力模組選定的頭無效的掩碼。掩碼值選自[0, 1]
:- 1 表示頭未被掩碼,
- 0 表示頭被掩碼。
- cross_attn_head_mask (
torch.Tensor
,形狀為(decoder_layers, decoder_attention_heads)
,可選) — 用於使交叉注意力模組中選定的頭無效的掩碼。掩碼值選自[0, 1]
:- 1 表示頭未被掩碼,
- 0 表示頭被掩碼。
- encoder_outputs (
tuple[tuple[torch.FloatTensor]]
,可選) — 元組包含 (last_hidden_state
, 可選:hidden_states
, 可選:attentions
)last_hidden_state
(形狀為(batch_size, sequence_length, hidden_size)
,可選)是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力機制。 - past_key_values (
tuple[tuple[torch.FloatTensor]]
,可選) — 預計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常由模型在解碼的先前階段返回的past_key_values
組成,當use_cache=True
或config.use_cache=True
時。允許兩種格式:
- Cache 例項,請參閱我們的 kv cache 指南;
- 長度為
config.n_layers
的tuple(torch.FloatTensor)
元組,每個元組包含 2 個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量)。這也稱為傳統快取格式。
模型將輸出與輸入相同的快取格式。如果未傳遞
past_key_values
,則將返回傳統快取格式。如果使用
past_key_values
,使用者可以選擇只輸入形狀為(batch_size, 1)
的最後input_ids
(那些沒有將其過去鍵值狀態提供給此模型的 ID),而不是所有形狀為(batch_size, sequence_length)
的input_ids
。 - use_cache (
bool
,可選) — 如果設定為True
,則返回past_key_values
鍵值狀態,可用於加速解碼(參見past_key_values
)。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參見返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參見返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。 - speaker_embeddings (
torch.FloatTensor
,形狀為(batch_size, config.speaker_embedding_dim)
,可選) — 包含說話人嵌入的張量。 - labels (
torch.FloatTensor
,形狀為(batch_size, sequence_length, config.num_mel_bins)
,可選) — 目標梅爾頻譜圖的浮點值。設定為-100.0
的時間步在損失計算中被忽略(掩碼)。可以使用 SpeechT5Processor 獲取頻譜圖。有關詳細資訊,請參見 SpeechT5Processor.call()。 - stop_labels (
torch.Tensor
,形狀為(batch_size, sequence_length)
,可選) — 指示序列中停止標記位置的二進位制張量。
返回
transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或一個 torch.FloatTensor
元組(如果傳遞 return_dict=False
或 config.return_dict=False
),根據配置 (SpeechT5Config) 和輸入包含各種元素。
-
loss (
torch.FloatTensor
,形狀為(1,)
,可選,在提供labels
時返回) — 頻譜圖生成損失。 -
spectrogram (
torch.FloatTensor
,形狀為(batch_size, sequence_length, num_bins)
) — 預測的頻譜圖。 -
past_key_values (
EncoderDecoderCache
, optional, 當傳遞use_cache=True
或config.use_cache=True
時返回) — 這是一個 EncoderDecoderCache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, optional, 當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型有嵌入層,則一個是嵌入層的輸出,加上每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, optional, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(torch.FloatTensor)
, optional, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
encoder_last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 模型編碼器最後一層輸出的隱藏狀態序列。 -
encoder_hidden_states (
tuple(torch.FloatTensor)
, optional, 當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型有嵌入層,則一個是嵌入層的輸出,加上每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
encoder_attentions (
tuple(torch.FloatTensor)
, optional, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
SpeechT5ForTextToSpeech 的 forward 方法重寫了 __call__
特殊方法。
儘管前向傳播的流程需要在此函式內定義,但之後應呼叫 Module
例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會默默地忽略它們。
示例
>>> from transformers import SpeechT5Processor, SpeechT5ForTextToSpeech, SpeechT5HifiGan, set_seed
>>> import torch
>>> processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_tts")
>>> model = SpeechT5ForTextToSpeech.from_pretrained("microsoft/speecht5_tts")
>>> vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")
>>> inputs = processor(text="Hello, my dog is cute", return_tensors="pt")
>>> speaker_embeddings = torch.zeros((1, 512)) # or load xvectors from a file
>>> set_seed(555) # make deterministic
>>> # generate speech
>>> speech = model.generate(inputs["input_ids"], speaker_embeddings=speaker_embeddings, vocoder=vocoder)
>>> speech.shape
torch.Size([15872])
生成
< 來源 >( input_ids: LongTensor attention_mask: typing.Optional[torch.LongTensor] = None speaker_embeddings: typing.Optional[torch.FloatTensor] = None threshold: float = 0.5 minlenratio: float = 0.0 maxlenratio: float = 20.0 vocoder: typing.Optional[torch.nn.modules.module.Module] = None output_cross_attentions: bool = False return_output_lengths: bool = False **kwargs ) → 包含各種元素的 tuple(torch.FloatTensor)
,取決於輸入
引數
- input_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
) — 詞彙表中輸入序列詞元的索引。可以使用 SpeechT5Tokenizer 獲取索引。有關詳細資訊,請參見 encode() 和 call()。
- attention_mask (
torch.LongTensor
,形狀為(batch_size, sequence_length)
) — 來自 tokenizer 的注意力掩碼,在批處理推理中需要,用於向模型指示在 input_ids 中忽略填充詞元的位置。 - speaker_embeddings (
torch.FloatTensor
,形狀為(batch_size, config.speaker_embedding_dim)
,可選) — 包含說話人嵌入的張量。 - threshold (
float
,可選,預設為 0.5) — 當預測的停止標記機率超過此值時,生成的序列結束。 - minlenratio (
float
,可選,預設為 0.0) — 用於計算輸出序列的最小所需長度。 - maxlenratio (
float
,可選,預設為 20.0) — 用於計算輸出序列的最大允許長度。 - vocoder (
nn.Module
,可選) — 將梅爾頻譜圖轉換為語音波形的聲碼器。如果為None
,則輸出為梅爾頻譜圖。 - output_cross_attentions (
bool
,可選,預設為False
) — 是否返回解碼器交叉注意力層的注意力張量。 - return_output_lengths (
bool
,可選,預設為False
) — 是否返回具體的頻譜圖/波形長度。
返回
包含各種元素的 tuple(torch.FloatTensor)
,取決於輸入
- 當 `return_output_lengths` 為 False 時
- spectrogram (可選,當未提供 `vocoder` 時返回)
torch.FloatTensor
,形狀為(output_sequence_length, config.num_mel_bins)
— 預測的對數梅爾頻譜圖。 - waveform (可選,當提供 `vocoder` 時返回)
torch.FloatTensor
,形狀為(num_frames,)
— 預測的語音波形。 - cross_attentions (可選,當 `output_cross_attentions` 為 `True` 時返回)
torch.FloatTensor
,形狀為(config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length)
— 解碼器交叉注意力層的輸出。
- spectrogram (可選,當未提供 `vocoder` 時返回)
- 當 `return_output_lengths` 為 True 時
- spectrograms (可選,當未提供 `vocoder` 時返回)
torch.FloatTensor
,形狀為(batch_size, output_sequence_length, config.num_mel_bins)
— 預測的對數梅爾頻譜圖,已填充到最大長度。 - spectrogram_lengths (可選,當未提供 `vocoder` 時返回)
list[Int]
— 每個頻譜圖的具體長度列表。 - waveforms (可選,當提供 `vocoder` 時返回)
torch.FloatTensor
,形狀為(batch_size, num_frames)
— 預測的語音波形,已填充到最大長度。 - waveform_lengths (可選,當提供 `vocoder` 時返回)
list[Int]
— 每個波形的具體長度列表。 - cross_attentions (可選,當 `output_cross_attentions` 為 `True` 時返回)
torch.FloatTensor
,形狀為(batch_size, config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length)
— 解碼器交叉注意力層的輸出。
- spectrograms (可選,當未提供 `vocoder` 時返回)
將輸入詞元序列轉換為梅爾頻譜圖序列,然後使用聲碼器將其轉換為語音波形。
SpeechT5ForSpeechToSpeech
class transformers.SpeechT5ForSpeechToSpeech
< 來源 >( config: SpeechT5Config )
引數
- config (SpeechT5Config) — 包含模型所有引數的模型配置類。使用配置檔案初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
帶有語音編碼器和語音解碼器的 SpeechT5 模型。
該模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為所有模型實現的通用方法(如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
該模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。
forward
< 來源 >( input_values: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None decoder_input_values: typing.Optional[torch.FloatTensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None decoder_head_mask: typing.Optional[torch.FloatTensor] = None cross_attn_head_mask: typing.Optional[torch.Tensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None use_cache: typing.Optional[bool] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None speaker_embeddings: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.FloatTensor] = None stop_labels: typing.Optional[torch.Tensor] = None ) → transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或 tuple(torch.FloatTensor)
引數
- input_values (
torch.FloatTensor
,形狀為(batch_size, sequence_length)
) — 輸入原始語音波形的浮點值。可以透過將 .flac 或 .wav 音訊檔案載入到list[float]
或numpy.ndarray
型別的陣列中獲得值,例如,透過 soundfile 庫(pip install soundfile)。要將陣列準備為input_values
,應使用 SpeechT5Processor 進行填充並轉換為torch.FloatTensor
型別的張量。有關詳細資訊,請參見 SpeechT5Processor.call()。 - attention_mask (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 避免對填充詞元索引執行注意力的掩碼。掩碼值選自[0, 1]
:- 1 表示詞元未被掩碼,
- 0 表示詞元被掩碼。
- decoder_input_values (
torch.FloatTensor
,形狀為(batch_size, sequence_length, config.num_mel_bins)
) — 輸入梅爾頻譜圖的浮點值。SpeechT5 使用全零頻譜作為生成
decoder_input_values
的起始標記。如果使用past_key_values
,可以選擇只輸入最後的decoder_input_values
(參見past_key_values
)。 - decoder_attention_mask (
torch.LongTensor
,形狀為(batch_size, target_sequence_length)
,可選) — 預設行為:生成一個忽略decoder_input_values
中填充標記的張量。預設情況下也會使用因果掩碼。如果要更改填充行為,應閱讀
SpeechT5Decoder._prepare_decoder_attention_mask
並根據需要進行修改。有關預設策略的更多資訊,請參閱論文中的圖 1。 - head_mask (
torch.FloatTensor
,形狀為(num_heads,)
或(num_layers, num_heads)
,可選) — 用於將自注意力模組中選定的頭置為零的掩碼。掩碼值的取值範圍為[0, 1]
:- 1 表示頭未被掩碼,
- 0 表示頭被掩碼。
- decoder_head_mask (
torch.FloatTensor
,形狀為(decoder_layers, decoder_attention_heads)
,可選) — 用於將解碼器中注意力模組選定的頭置為零的掩碼。掩碼值的取值範圍為[0, 1]
:- 1 表示頭未被掩碼,
- 0 表示頭被掩碼。
- cross_attn_head_mask (
torch.Tensor
,形狀為(decoder_layers, decoder_attention_heads)
,可選) — 用於將交叉注意力模組中選定的頭置為零的掩碼。掩碼值的取值範圍為[0, 1]
:- 1 表示頭未被掩碼,
- 0 表示頭被掩碼。
- encoder_outputs (
tuple[tuple[torch.FloatTensor]]
,可選) — 元組包含 (last_hidden_state
,可選:hidden_states
,可選:attentions
)last_hidden_state
的形狀為(batch_size, sequence_length, hidden_size)
,可選)是編碼器最後一層輸出的隱藏狀態序列。用於解碼器的交叉注意力機制。 - past_key_values (
tuple[tuple[torch.FloatTensor]]
,可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速序列解碼。這通常包括在解碼的先前階段,當use_cache=True
或config.use_cache=True
時由模型返回的past_key_values
。允許兩種格式:
- 一個 Cache 例項,請參閱我們的 kv 快取指南;
- 一個長度為
config.n_layers
的tuple(torch.FloatTensor)
的元組,每個元組包含2個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量)。這也被稱為舊版快取格式。
模型將輸出與輸入相同的快取格式。如果未傳遞
past_key_values
,則將返回舊版快取格式。如果使用
past_key_values
,使用者可以選擇只輸入最後一個input_ids
(那些沒有為其提供過去鍵值狀態的 ID)而不是所有input_ids
,其形狀為(batch_size, 1)
,而不是(batch_size, sequence_length)
。 - use_cache (
bool
,可選) — 如果設定為True
,則返回past_key_values
鍵值狀態,可用於加速解碼(請參閱past_key_values
)。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。有關更多詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。有關更多詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回一個 ModelOutput 而不是一個普通的元組。 - speaker_embeddings (
torch.FloatTensor
,形狀為(batch_size, config.speaker_embedding_dim)
,可選) — 包含說話人嵌入的張量。 - labels (
torch.FloatTensor
,形狀為(batch_size, sequence_length, config.num_mel_bins)
,可選) — 目標梅爾頻譜圖的浮點數值。頻譜圖可以使用 SpeechT5Processor 獲取。有關詳細資訊,請參閱 SpeechT5Processor.call()。 - stop_labels (
torch.Tensor
,形狀為(batch_size, sequence_length)
,可選) — 二進位制張量,指示序列中停止標記的位置。
返回
transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.Seq2SeqSpectrogramOutput 或一個 torch.FloatTensor
元組(如果傳遞 return_dict=False
或 config.return_dict=False
),根據配置 (SpeechT5Config) 和輸入包含各種元素。
-
loss (
torch.FloatTensor
,形狀為(1,)
,可選,在提供labels
時返回) — 頻譜圖生成損失。 -
spectrogram (
torch.FloatTensor
,形狀為(batch_size, sequence_length, num_bins)
) — 預測的頻譜圖。 -
past_key_values (
EncoderDecoderCache
, optional, 當傳遞use_cache=True
或config.use_cache=True
時返回) — 這是一個 EncoderDecoderCache 例項。有關更多詳細資訊,請參閱我們的 kv 快取指南。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
, optional, 當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型有嵌入層,則一個是嵌入層的輸出,加上每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
decoder_attentions (
tuple(torch.FloatTensor)
, optional, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(torch.FloatTensor)
, optional, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器交叉注意力層的注意力權重,在注意力 softmax 之後,用於計算交叉注意力頭中的加權平均。
-
encoder_last_hidden_state (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 模型編碼器最後一層輸出的隱藏狀態序列。 -
encoder_hidden_states (
tuple(torch.FloatTensor)
, optional, 當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
的元組(如果模型有嵌入層,則一個是嵌入層的輸出,加上每個層的輸出),形狀為(batch_size, sequence_length, hidden_size)
。編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
encoder_attentions (
tuple(torch.FloatTensor)
, optional, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
的元組(每層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
SpeechT5ForSpeechToSpeech 的前向方法,覆蓋了 `__call__` 特殊方法。
儘管前向傳播的流程需要在此函式內定義,但之後應呼叫 Module
例項而不是此函式,因為前者會處理預處理和後處理步驟,而後者會默默地忽略它們。
示例
>>> from transformers import SpeechT5Processor, SpeechT5ForSpeechToSpeech, SpeechT5HifiGan, set_seed
>>> from datasets import load_dataset
>>> import torch
>>> dataset = load_dataset(
... "hf-internal-testing/librispeech_asr_demo", "clean", split="validation"
... ) # doctest: +IGNORE_RESULT
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate
>>> processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_vc")
>>> model = SpeechT5ForSpeechToSpeech.from_pretrained("microsoft/speecht5_vc")
>>> vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")
>>> # audio file is decoded on the fly
>>> inputs = processor(audio=dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> speaker_embeddings = torch.zeros((1, 512)) # or load xvectors from a file
>>> set_seed(555) # make deterministic
>>> # generate speech
>>> speech = model.generate_speech(inputs["input_values"], speaker_embeddings, vocoder=vocoder)
>>> speech.shape
torch.Size([77824])
generate_speech
< 來源 >( input_values: FloatTensor speaker_embeddings: typing.Optional[torch.FloatTensor] = None attention_mask: typing.Optional[torch.LongTensor] = None threshold: float = 0.5 minlenratio: float = 0.0 maxlenratio: float = 20.0 vocoder: typing.Optional[torch.nn.modules.module.Module] = None output_cross_attentions: bool = False return_output_lengths: bool = False ) → tuple(torch.FloatTensor)
,根據輸入包含各種元素
引數
- input_values (
torch.FloatTensor
,形狀為(batch_size, sequence_length)
) — 輸入原始語音波形的浮點數值。可以透過將 .flac 或 .wav 音訊檔案載入到型別為
list[float]
或numpy.ndarray
的陣列中來獲取值,例如,透過 soundfile 庫(pip install soundfile)。要將陣列準備成input_values
,應使用 SpeechT5Processor 進行填充並轉換為torch.FloatTensor
型別的張量。有關詳細資訊,請參閱 SpeechT5Processor.call()。 - speaker_embeddings (
torch.FloatTensor
,形狀為(batch_size, config.speaker_embedding_dim)
,可選) — 包含說話人嵌入的張量。 - attention_mask (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 避免對填充標記索引執行卷積和注意力的掩碼。掩碼值的取值範圍為[0, 1]
:- 1 表示標記未被掩碼,
- 0 表示標記被掩碼。
- threshold (
float
,可選,預設為 0.5) — 當預測的停止標記機率超過此值時,生成的序列結束。 - minlenratio (
float
,可選,預設為 0.0) — 用於計算輸出序列所需的最小長度。 - maxlenratio (
float
,可選,預設為 20.0) — 用於計算輸出序列允許的最大長度。 - vocoder (
nn.Module
,可選,預設為None
) — 將梅爾頻譜圖轉換為語音波形的聲碼器。如果為None
,則輸出為梅爾頻譜圖。 - output_cross_attentions (
bool
,可選,預設為False
) — 是否返回解碼器交叉注意力層的注意力張量。 - return_output_lengths (
bool
,可選,預設為False
) — 是否返回具體的頻譜圖/波形長度。
返回
包含各種元素的 tuple(torch.FloatTensor)
,取決於輸入
- 當 `return_output_lengths` 為 False 時
- spectrogram (可選,當未提供 `vocoder` 時返回)
torch.FloatTensor
,形狀為(output_sequence_length, config.num_mel_bins)
— 預測的對數梅爾頻譜圖。 - waveform (可選,當提供 `vocoder` 時返回)
torch.FloatTensor
,形狀為(num_frames,)
— 預測的語音波形。 - cross_attentions (可選,當 `output_cross_attentions` 為 `True` 時返回)
torch.FloatTensor
,形狀為(config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length)
— 解碼器交叉注意力層的輸出。
- spectrogram (可選,當未提供 `vocoder` 時返回)
- 當 `return_output_lengths` 為 True 時
- spectrograms (可選,當未提供 `vocoder` 時返回)
torch.FloatTensor
,形狀為(batch_size, output_sequence_length, config.num_mel_bins)
— 預測的對數梅爾頻譜圖,已填充到最大長度。 - spectrogram_lengths (可選,當未提供 `vocoder` 時返回)
list[Int]
— 每個頻譜圖的具體長度列表。 - waveforms (可選,當提供 `vocoder` 時返回)
torch.FloatTensor
,形狀為(batch_size, num_frames)
— 預測的語音波形,已填充到最大長度。 - waveform_lengths (可選,當提供 `vocoder` 時返回)
list[Int]
— 每個波形的具體長度列表。 - cross_attentions (可選,當 `output_cross_attentions` 為 `True` 時返回)
torch.FloatTensor
,形狀為(batch_size, config.decoder_layers, config.decoder_attention_heads, output_sequence_length, input_sequence_length)
— 解碼器交叉注意力層的輸出。
- spectrograms (可選,當未提供 `vocoder` 時返回)
將原始語音波形轉換為梅爾頻譜圖序列,然後使用聲碼器將其轉換回語音波形。
SpeechT5HifiGan
class transformers.SpeechT5HifiGan
< 來源 >( config: SpeechT5HifiGanConfig )
引數
- config (SpeechT5HifiGanConfig) — 包含模型所有引數的模型配置類。使用配置檔案進行初始化不會載入與模型相關的權重,只會載入配置。請檢視 from_pretrained() 方法來載入模型權重。
HiFi-GAN 聲碼器。
該模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為所有模型實現的通用方法(如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
該模型也是 PyTorch torch.nn.Module 的子類。可以像常規 PyTorch 模組一樣使用它,並參考 PyTorch 文件瞭解所有與常規用法和行為相關的事項。
forward
< 來源 >( spectrogram: FloatTensor ) → torch.FloatTensor
將對數梅爾譜圖轉換為語音波形。傳遞一批對數梅爾譜圖將返回一批語音波形。傳遞單個未批處理的對數梅爾譜圖將返回單個未批處理的語音波形。