Transformers 文件
SeamlessM4T
並獲得增強的文件體驗
開始使用
SeamlessM4T
概述
SeamlessM4T 模型由 Meta AI 的 Seamless Communication 團隊在 SeamlessM4T — 大規模多語言和多模態機器翻譯 中提出。
這是該模型的**版本 1** 釋出。有關更新的**版本 2** 釋出,請參閱 Seamless M4T v2 文件。
SeamlessM4T 是一系列模型,旨在提供高質量的翻譯,讓不同語言社群的人們能夠透過語音和文字輕鬆交流。
SeamlessM4T 無需依賴單獨的模型即可實現多項任務
- 語音到語音翻譯(S2ST)
- 語音到文字翻譯(S2TT)
- 文字到語音翻譯(T2ST)
- 文字到文字翻譯(T2TT)
- 自動語音識別(ASR)
SeamlessM4TModel 可以執行上述所有任務,但每個任務也有其專用的子模型。
論文摘要如下:
要創造巴別魚,一種可以幫助個人翻譯任意兩種語言之間語音的工具,需要什麼?儘管文字模型最近的突破已將機器翻譯的覆蓋範圍擴充套件到 200 多種語言,但統一的語音到語音翻譯模型尚未取得類似的進展。更具體地說,傳統的語音到語音翻譯系統依賴於逐步執行翻譯的級聯絡統,這使得高效能的統一系統遙不可及。為了解決這些差距,我們引入了 SeamlessM4T,這是一個單一模型,支援多達 100 種語言的語音到語音翻譯、語音到文字翻譯、文字到語音翻譯、文字到文字翻譯和自動語音識別。為了構建它,我們使用了 100 萬小時的開放語音音訊資料,透過 w2v-BERT 2.0 學習自監督語音表示。隨後,我們建立了一個自動對齊語音翻譯的多模態語料庫。經過過濾並與人工標註和偽標註資料結合,我們開發了第一個能夠從英語翻譯成英語(語音和文字)的多語言系統。在 FLEURS 上,SeamlessM4T 為翻譯成多種目標語言設定了新標準,在直接語音到文字翻譯中比以前的 SOTA 提高了 20% BLEU。與強大的級聯模型相比,SeamlessM4T 在語音到文字翻譯中將英語翻譯質量提高了 1.3 BLEU 分,在語音到語音翻譯中提高了 2.6 ASR-BLEU 分。經過魯棒性測試,與當前的 SOTA 模型相比,我們的系統在語音到文字任務中對背景噪聲和說話人變體的表現更好。至關重要的是,我們評估了 SeamlessM4T 的性別偏見,並增加了毒性以評估翻譯安全性。最後,這項工作中的所有貢獻都已開源,並可在 https://github.com/facebookresearch/seamless_communication 上獲取
用法
首先,載入處理器和模型的檢查點
>>> from transformers import AutoProcessor, SeamlessM4TModel
>>> processor = AutoProcessor.from_pretrained("facebook/hf-seamless-m4t-medium")
>>> model = SeamlessM4TModel.from_pretrained("facebook/hf-seamless-m4t-medium")
您可以無縫地將此模型用於文字或音訊,以生成翻譯文字或翻譯音訊。
以下是使用處理器處理文字和音訊的方法
>>> # let's load an audio sample from an Arabic speech corpus
>>> from datasets import load_dataset
>>> dataset = load_dataset("halabi2016/arabic_speech_corpus", split="test", streaming=True)
>>> audio_sample = next(iter(dataset))["audio"]
>>> # now, process it
>>> audio_inputs = processor(audios=audio_sample["array"], return_tensors="pt")
>>> # now, process some English test as well
>>> text_inputs = processor(text = "Hello, my dog is cute", src_lang="eng", return_tensors="pt")
語音
SeamlessM4TModel 可以**無縫地**生成文字或語音,幾乎不需要修改。讓我們以俄語語音翻譯為例
>>> audio_array_from_text = model.generate(**text_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()
>>> audio_array_from_audio = model.generate(**audio_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()
使用基本相同的程式碼,我將英文文字和阿拉伯語語音翻譯成了俄語語音樣本。
文字
同樣,您可以使用相同的模型從音訊檔案或文字生成翻譯文字。您只需將 `generate_speech=False` 傳遞給 SeamlessM4TModel.generate()。這次,讓我們翻譯成法語。
>>> # from audio
>>> output_tokens = model.generate(**audio_inputs, tgt_lang="fra", generate_speech=False)
>>> translated_text_from_audio = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)
>>> # from text
>>> output_tokens = model.generate(**text_inputs, tgt_lang="fra", generate_speech=False)
>>> translated_text_from_text = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)
提示
1. 使用專用模型
SeamlessM4TModel 是 transformers 庫中生成語音和文字的頂級模型,但您也可以使用執行任務而無需額外元件的專用模型,從而減少記憶體佔用。例如,您可以使用專用於 S2ST 任務的模型替換音訊到音訊生成片段,其餘程式碼完全相同
>>> from transformers import SeamlessM4TForSpeechToSpeech
>>> model = SeamlessM4TForSpeechToSpeech.from_pretrained("facebook/hf-seamless-m4t-medium")
或者您可以使用專用於 T2TT 任務的模型替換文字到文字生成片段,只需刪除 `generate_speech=False`。
>>> from transformers import SeamlessM4TForTextToText
>>> model = SeamlessM4TForTextToText.from_pretrained("facebook/hf-seamless-m4t-medium")
歡迎嘗試 SeamlessM4TForSpeechToText 和 SeamlessM4TForTextToSpeech。
2. 改變說話者身份
您可以透過 `spkr_id` 引數更改用於語音合成的說話人。對於某些語言,某些 `spkr_id` 的效果比其他語言更好!
3. 改變生成策略
您可以對語音和文字生成使用不同的生成策略,例如 `_generate(input_ids=input_ids, text_num_beams=4, speech_do_sample=True)`,它將依次在文字模型上執行束搜尋解碼,並在語音模型上執行多項式取樣。
4. 同時生成語音和文字
使用 SeamlessM4TModel 時使用 `return_intermediate_token_ids=True` 以同時返回語音和文字!
模型架構
SeamlessM4T 具有多功能的架構,可順利處理文字和語音的順序生成。此設定包含兩個序列到序列 (seq2seq) 模型。第一個模型將輸入模態翻譯成翻譯文字,而第二個模型則從翻譯文字生成語音標記,稱為“單元標記”。
每種模態都有其自己的專用編碼器,具有獨特的架構。此外,對於語音輸出,在第二個 seq2seq 模型之上放置了一個受 HiFi-GAN 架構啟發的聲碼器。
以下是生成過程的工作原理
- 輸入文字或語音透過其特定的編碼器進行處理。
- 解碼器以所需的語言建立文字標記。
- 如果需要語音生成,第二個 seq2seq 模型(遵循標準編碼器-解碼器結構)將生成單元標記。
- 然後,這些單元標記透過最終的聲碼器以產生實際的語音。
此模型由 ylacombe 貢獻。原始程式碼可在 此處 找到。
SeamlessM4TModel
類 transformers.SeamlessM4TModel
< 來源 >( config current_modality = 'text' )
引數
- **config** (SeamlessM4TModel) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法載入模型權重。
- **current_modality** (
str
, *可選*,預設為"text"
) — 預設模態。用於初始化模型。
原始的 SeamlessM4T 模型 Transformer,可用於所有可用任務(S2ST、S2TT、T2TT、T2ST)。
此模型繼承自 PreTrainedModel。檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解與通用用法和行為相關的所有事項。
生成
< 來源 >( input_ids: typing.Optional[torch.Tensor] = None input_features: typing.Optional[torch.Tensor] = None return_intermediate_token_ids: typing.Optional[bool] = None tgt_lang: typing.Optional[str] = None spkr_id: typing.Optional[int] = 0 generate_speech: typing.Optional[bool] = True **kwargs ) → Union[SeamlessM4TGenerationOutput, tuple[Tensor], ModelOutput]
引數
- **input_ids** (
torch.LongTensor
形狀(batch_size, sequence_length)
,*可選*) — 詞彙表中輸入序列標記的索引。索引可以使用 SeamlessM4TTokenizer 或 SeamlessM4TProcessor 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- **input_features** (
torch.FloatTensor
形狀(batch_size, sequence_length, num_banks)
,*可選*) — 輸入音訊特徵。這應由 SeamlessM4TFeatureExtractor 類或 SeamlessM4TProcessor 類返回。有關詳細資訊,請參見 SeamlessM4TFeatureExtractor.call()。 - **return_intermediate_token_ids** (
bool
, *可選*) — 如果為True
,還返回中間生成的文字和單元標記。如果還想同時獲取翻譯文字和音訊,則將其設定為True
。請注意,如果generate_speech=True
,則此引數將被忽略。 - **tgt_lang** (
str
, *可選*) — 用作翻譯目標語言的語言。 - **spkr_id** (
int
, *可選*,預設為 0) — 用於語音合成的說話人 ID。必須小於config.vocoder_num_spkrs
。 - **generate_speech** (
bool
, *可選*,預設為True
) — 如果為False
,將只返回文字標記,不生成語音。 - **kwargs** (*可選*) — 剩餘的關鍵字引數字典,將傳遞給 GenerationMixin.generate()。關鍵字引數有兩種型別:
- 沒有字首的,將作為
**kwargs
輸入到每個子模型的generate
方法中,除了decoder_input_ids
,它只會透過文字元件。 - 帶有 *text_* 或 *speech_* 字首的,將分別作為文字模型和語音模型的
generate
方法的輸入。它優先於沒有字首的關鍵字。
這意味著您可以,例如,為一種生成指定生成策略,而不為另一種指定。
- 沒有字首的,將作為
返回
聯合[SeamlessM4TGenerationOutput, tuple[Tensor], ModelOutput]
- 如果 `generate_speech` 和 `return_intermediate_token_ids`,則返回 `SeamlessM4TGenerationOutput`。
- 如果 `generate_speech` 且未 `return_intermediate_token_ids`,則返回一個元組,由形狀為 `(batch_size, sequence_length)` 的波形和給出每個樣本長度的 `waveform_lengths` 組成。
- 如果 `generate_speech=False`,它將返回 `ModelOutput`。
生成翻譯的標記 ID 和/或翻譯的音訊波形。
此方法依次呼叫兩個不同子模型的 `.generate` 函式。您可以在兩個不同級別指定關鍵字引數:將傳遞給兩個模型的通用引數,或將傳遞給其中一個模型的字首引數。
例如,呼叫 `.generate(input_ids=input_ids, num_beams=4, speech_do_sample=True)` 將依次在文字模型上執行束搜尋解碼,並在語音模型上執行多項式束搜尋取樣。
有關生成策略和程式碼示例的概述,請檢視以下指南。
SeamlessM4TForTextToSpeech
類 transformers.SeamlessM4TForTextToSpeech
< 來源 >( config: SeamlessM4TConfig )
引數
- **config** (SeamlessM4TConfig) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法載入模型權重。
文字到語音 SeamlessM4T 模型 Transformer,可用於 T2ST。
此模型繼承自 PreTrainedModel。檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解與通用用法和行為相關的所有事項。
生成
< 來源 >( input_ids: typing.Optional[torch.Tensor] = None return_intermediate_token_ids: typing.Optional[bool] = None tgt_lang: typing.Optional[str] = None spkr_id: typing.Optional[int] = 0 **kwargs ) → Union[SeamlessM4TGenerationOutput, tuple[Tensor]]
引數
- **input_ids** (
torch.LongTensor
形狀(batch_size, sequence_length)
) — 詞彙表中輸入序列標記的索引。索引可以使用 SeamlessM4TTokenizer 或 SeamlessM4TProcessor 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- **return_intermediate_token_ids** (
bool
, *可選*) — 如果為True
,還返回中間生成的文字和單元標記。如果還想同時獲取翻譯文字和音訊,則將其設定為True
。 - **tgt_lang** (
str
, *可選*) — 用作翻譯目標語言的語言。 - **spkr_id** (
int
, *可選*,預設為 0) — 用於語音合成的說話人 ID。必須小於config.vocoder_num_spkrs
。 - **kwargs** (*可選*) — 剩餘的關鍵字引數字典,將傳遞給 GenerationMixin.generate()。關鍵字引數有兩種型別:
- 沒有字首的,將作為
**kwargs
輸入到每個子模型的generate
方法中,除了decoder_input_ids
,它只會透過文字元件。 - 帶有 *text_* 或 *speech_* 字首的,將分別作為文字模型和語音模型的
generate
方法的輸入。它優先於沒有字首的關鍵字。
這意味著您可以,例如,為一種生成指定生成策略,而不為另一種指定。
- 沒有字首的,將作為
返回
聯合[SeamlessM4TGenerationOutput, tuple[Tensor]]
- 如果 `return_intermediate_token_ids` 為 `True`,則返回 `SeamlessM4TGenerationOutput`。
- 如果 `return_intermediate_token_ids` 為 `False`,則返回一個元組,由形狀為 `(batch_size, sequence_length)` 的波形和給出每個樣本長度的 `waveform_lengths` 組成。
生成翻譯音訊波形。
此方法依次呼叫兩個不同子模型的 `.generate` 函式。您可以在兩個不同級別指定關鍵字引數:將傳遞給兩個模型的通用引數,或將傳遞給其中一個模型的字首引數。
例如,呼叫 `.generate(input_ids, num_beams=4, speech_do_sample=True)` 將依次在文字模型上執行束搜尋解碼,並在語音模型上執行多項式束搜尋取樣。
有關生成策略和程式碼示例的概述,請檢視以下指南。
SeamlessM4TForSpeechToSpeech
類 transformers.SeamlessM4TForSpeechToSpeech
< 來源 >( config )
引數
- **config** (SeamlessM4TForSpeechToSpeech) — 模型配置類,包含模型的所有引數。使用配置檔案初始化不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法載入模型權重。
語音到語音 SeamlessM4T 模型 Transformer,可用於 S2ST。
此模型繼承自 PreTrainedModel。檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解與通用用法和行為相關的所有事項。
生成
< 來源 >( input_features: typing.Optional[torch.Tensor] = None return_intermediate_token_ids: typing.Optional[bool] = None tgt_lang: typing.Optional[str] = None spkr_id: typing.Optional[int] = 0 **kwargs ) → Union[SeamlessM4TGenerationOutput, tuple[Tensor]]
引數
- **input_features** (
torch.FloatTensor
形狀(batch_size, sequence_length, num_banks)
) — 輸入音訊特徵。這應由 SeamlessM4TFeatureExtractor 類或 SeamlessM4TProcessor 類返回。有關詳細資訊,請參見 SeamlessM4TFeatureExtractor.call()。 - **return_intermediate_token_ids** (
bool
, *可選*) — 如果為True
,還返回中間生成的文字和單元標記。如果還想同時獲取翻譯文字和音訊,則將其設定為True
。 - **tgt_lang** (
str
, *可選*) — 用作翻譯目標語言的語言。 - **spkr_id** (
int
, *可選*,預設為 0) — 用於語音合成的說話人 ID。必須小於config.vocoder_num_spkrs
。 - **kwargs** (*可選*) — 剩餘的關鍵字引數字典,將傳遞給 GenerationMixin.generate()。關鍵字引數有兩種型別:
- 沒有字首的,將作為
**kwargs
輸入到每個子模型的generate
方法中,除了decoder_input_ids
,它只會透過文字元件。 - 帶有 *text_* 或 *speech_* 字首的,將分別作為文字模型和語音模型的
generate
方法的輸入。它優先於沒有字首的關鍵字。
這意味著您可以,例如,為一種生成指定生成策略,而不為另一種指定。
- 沒有字首的,將作為
返回
聯合[SeamlessM4TGenerationOutput, tuple[Tensor]]
- 如果 `return_intermediate_token_ids` 為 `True`,則返回 `SeamlessM4TGenerationOutput`。
- 如果 `return_intermediate_token_ids` 為 `False`,則返回一個元組,由形狀為 `(batch_size, sequence_length)` 的波形和給出每個樣本長度的 `waveform_lengths` 組成。
生成翻譯音訊波形。
此方法依次呼叫兩個不同子模型的 `.generate` 函式。您可以在兩個不同級別指定關鍵字引數:將傳遞給兩個模型的通用引數,或將傳遞給其中一個模型的字首引數。
例如,呼叫 `.generate(input_features, num_beams=4, speech_do_sample=True)` 將依次在文字模型上執行束搜尋解碼,並在語音模型上執行多項式束搜尋取樣。
有關生成策略和程式碼示例的概述,請檢視以下指南。
SeamlessM4TForTextToText
類 transformers.SeamlessM4TForTextToText
< source >( config: SeamlessM4TConfig )
引數
- config (SeamlessM4TConfig) — 模型配置類,包含模型的所有引數。使用配置檔案初始化模型不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。
可用於T2TT的text-to-text SeamlessM4T模型轉換器。
此模型繼承自 PreTrainedModel。檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解與通用用法和行為相關的所有事項。
前向
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.Tensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None decoder_inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = 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 **kwargs ) → transformers.modeling_outputs.Seq2SeqLMOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
,可選) — 詞彙表中輸入序列標記的索引。預設情況下會忽略填充。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (形狀為
(batch_size, sequence_length)
的torch.Tensor
,可選) — 掩碼,避免對填充標記索引執行注意力操作。掩碼值選擇範圍為[0, 1]
:- 1 表示**未掩碼**的標記,
- 0 表示**已掩碼**的標記。
- decoder_input_ids (形狀為
(batch_size, target_sequence_length)
的torch.LongTensor
,可選) — 解碼器輸入序列標記在詞彙表中的索引。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
Bart 使用
eos_token_id
作為decoder_input_ids
生成的起始標記。如果使用past_key_values
,可以選擇只輸入最後一個decoder_input_ids
(那些沒有將其過去的鍵值狀態提供給此模型的輸入),請參閱past_key_values
。對於翻譯和摘要訓練,應提供
decoder_input_ids
。如果未提供decoder_input_ids
,模型將根據論文中去噪預訓練的方法,透過將input_ids
向右移動來建立此張量。 - decoder_attention_mask (形狀為
(batch_size, target_sequence_length)
的torch.LongTensor
,可選) — 預設行為:生成一個忽略decoder_input_ids
中填充標記的張量。預設情況下也會使用因果掩碼。如果您想更改填充行為,應閱讀
modeling_bart._prepare_decoder_attention_mask
並根據需要進行修改。有關預設策略的更多資訊,請參閱 該論文 中的圖 1。 - 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
(那些沒有將其過去的鍵值狀態提供給此模型的輸入),形狀為(batch_size, 1)
,而不是所有input_ids
(形狀為(batch_size, sequence_length)
)。 - inputs_embeds (形狀為
(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可選) — 可選地,除了傳入input_ids
,您還可以選擇直接傳入嵌入表示。如果您想對如何將input_ids
索引轉換為關聯向量有比模型內部嵌入查詢矩陣更多的控制權,這將很有用。 - decoder_inputs_embeds (形狀為
(batch_size, target_sequence_length, hidden_size)
的torch.FloatTensor
,可選) — 可選地,除了傳入decoder_input_ids
,您還可以選擇直接傳入嵌入表示。如果使用past_key_values
,可以選擇只輸入最後一個decoder_inputs_embeds
(請參閱past_key_values
)。如果您想對如何將decoder_input_ids
索引轉換為關聯向量有比模型內部嵌入查詢矩陣更多的控制權,這將很有用。如果
decoder_input_ids
和decoder_inputs_embeds
都未設定,則decoder_inputs_embeds
的值將取inputs_embeds
的值。 - labels (形狀為
(batch_size, sequence_length)
的torch.LongTensor
,可選) — 用於計算掩碼語言建模損失的標籤。索引應在[-100, 0, ..., config.vocab_size]
範圍內(參見input_ids
文件字串)。索引設定為-100
的標記將被忽略(掩碼),損失只對標籤在[0, ..., config.vocab_size]
範圍內的標記計算 - use_cache (
bool
,可選) — 如果設定為True
,將返回past_key_values
鍵值狀態,並可用於加速解碼(請參閱past_key_values
)。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參見返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。更多詳細資訊請參見返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是普通的元組。
返回
transformers.modeling_outputs.Seq2SeqLMOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.Seq2SeqLMOutput 或一個 torch.FloatTensor
元組(如果傳入 return_dict=False
或 config.return_dict=False
時),包含根據配置(SeamlessM4TConfig)和輸入而異的各種元素。
-
loss (
torch.FloatTensor
,形狀為(1,)
,可選,當提供labels
時返回) — 語言建模損失。 -
logits (形狀為
(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。 -
past_key_values (
EncoderDecoderCache
,可選,當傳入use_cache=True
或config.use_cache=True
時返回) — 這是一個 EncoderDecoderCache 例項。更多詳細資訊請參閱我們的 kv 快取指南。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
,可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(一個用於嵌入層輸出,如果模型有嵌入層,+ 一個用於每一層輸出),形狀為(batch_size, sequence_length, hidden_size)
。解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
decoder_attentions (
tuple(torch.FloatTensor)
,可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每一層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(torch.FloatTensor)
,可選,當傳入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)
,可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(一個用於嵌入層輸出,如果模型有嵌入層,+ 一個用於每一層輸出),形狀為(batch_size, sequence_length, hidden_size)
。編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
encoder_attentions (
tuple(torch.FloatTensor)
,可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每一層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
SeamlessM4TForTextToText 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但之後應該呼叫 Module
例項,而不是該函式,因為前者負責執行預處理和後處理步驟,而後者會默默地忽略它們。
生成
< source >( input_ids = None tgt_lang = None generation_config = None logits_processor = None stopping_criteria = None prefix_allowed_tokens_fn = None synced_gpus = False **kwargs ) → ModelOutput 或 torch.LongTensor
引數
- input_ids (
torch.Tensor
,形狀因模態而異,可選) — 詞彙表中輸入序列標記的索引。索引可以使用 SeamlessM4TTokenizer 或 SeamlessM4TProcessor 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- tgt_lang (
str
,可選) — 用作翻譯目標語言的語言。 - generation_config (
~generation.GenerationConfig
,可選) — 用作生成呼叫基礎引數化的生成配置。傳入 generate 的**kwargs
中與generation_config
屬性匹配的引數將覆蓋它們。如果未提供generation_config
,將使用預設配置,其載入優先順序如下:1) 如果存在generation_config.json
模型檔案,則從中載入;2) 從模型配置中載入。請注意,未指定的引數將繼承 GenerationConfig 的預設值,應查閱其文件以引數化生成。 - logits_processor (
LogitsProcessorList
,可選) — 自定義 logits 處理器,補充從引數和生成配置構建的預設 logits 處理器。如果傳入的 logits 處理器已使用引數或生成配置建立,則會丟擲錯誤。此功能適用於高階使用者。 - stopping_criteria (
StoppingCriteriaList
,可選) — 自定義停止條件,補充從引數和生成配置構建的預設停止條件。如果傳入的停止條件已使用引數或生成配置建立,則會丟擲錯誤。此功能適用於高階使用者。 - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]]
,可選) — 如果提供,此函式限制束搜尋在每一步只允許的標記。如果未提供,則不應用任何限制。此函式接受 2 個引數:批次 IDbatch_id
和input_ids
。它必須返回一個列表,其中包含在批次 IDbatch_id
和先前生成的標記inputs_ids
的條件下,下一步允許生成的標記。此引數對於基於字首的約束生成很有用,如 自迴歸實體檢索 中所述。 - synced_gpus (
bool
,可選,預設為False
) — 是否繼續執行 while 迴圈直到達到max_length
(需要避免與FullyShardedDataParallel
和 DeepSpeed ZeRO Stage 3 出現死鎖)。 - kwargs (
dict[str, Any]
,可選) —generate_config
的臨時引數化和/或將轉發到模型forward
函式的其他模型特定 kwargs。
返回
ModelOutput 或 torch.LongTensor
一個 ModelOutput(如果傳入 return_dict_in_generate=True
或 config.return_dict_in_generate=True
時)或一個 torch.FloatTensor
。可能的 ModelOutput 型別是
生成標記ID序列。
大多數生成控制引數在 generation_config
中設定,如果未傳入,將設定為模型的預設生成配置。您可以透過將相應的引數傳遞給 generate() 來覆蓋任何 generation_config
,例如 .generate(inputs, num_beams=4, do_sample=True)
。
有關生成策略和程式碼示例的概述,請檢視以下指南。
SeamlessM4TForSpeechToText
class transformers.SeamlessM4TForSpeechToText
< source >( config: SeamlessM4TConfig )
引數
- config (SeamlessM4TConfig) — 模型配置類,包含模型的所有引數。使用配置檔案初始化模型不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。
可用於S2TT的speech-to-text SeamlessM4T模型轉換器。
此模型繼承自 PreTrainedModel。檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解與通用用法和行為相關的所有事項。
前向
< source >( input_features: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.Tensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None decoder_inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = 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 **kwargs ) → transformers.modeling_outputs.Seq2SeqLMOutput 或 tuple(torch.FloatTensor)
引數
- input_features (形狀為
(batch_size, sequence_length, num_banks)
的torch.FloatTensor
) — 輸入音訊特徵。此值應由 SeamlessM4TFeatureExtractor 類或 SeamlessM4TProcessor 類返回。有關詳細資訊,請參閱 SeamlessM4TFeatureExtractor.call()。 - attention_mask (形狀為
(batch_size, sequence_length)
的torch.Tensor
,可選) — 掩碼,避免對填充標記索引執行注意力操作。掩碼值選擇範圍為[0, 1]
:- 1 表示**未掩碼**的標記,
- 0 表示**已掩碼**的標記。
- decoder_input_ids (形狀為
(batch_size, target_sequence_length)
的torch.LongTensor
,可選) — 解碼器輸入序列標記在詞彙表中的索引。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
Bart 使用
eos_token_id
作為decoder_input_ids
生成的起始標記。如果使用past_key_values
,可以選擇只輸入最後一個decoder_input_ids
(那些沒有將其過去的鍵值狀態提供給此模型的輸入),請參閱past_key_values
。對於翻譯和摘要訓練,應提供
decoder_input_ids
。如果未提供decoder_input_ids
,模型將根據論文中去噪預訓練的方法,透過將input_ids
向右移動來建立此張量。 - decoder_attention_mask (形狀為
(batch_size, target_sequence_length)
的torch.LongTensor
,可選) — 預設行為:生成一個忽略decoder_input_ids
中填充標記的張量。預設情況下也會使用因果掩碼。如果您想更改填充行為,應閱讀
modeling_bart._prepare_decoder_attention_mask
並根據需要進行修改。有關預設策略的更多資訊,請參閱 該論文 中的圖 1。 - 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
(那些沒有將其過去的鍵值狀態提供給此模型的輸入),形狀為(batch_size, 1)
,而不是所有input_ids
(形狀為(batch_size, sequence_length)
)。 - inputs_embeds (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 可選地,你可以選擇直接傳入嵌入式表示,而不是傳入input_ids
。如果你想對如何將input_ids
索引轉換為相關向量有比模型內部嵌入查詢矩陣更多的控制,這會很有用。 - decoder_inputs_embeds (
torch.FloatTensor
,形狀為(batch_size, target_sequence_length, hidden_size)
,可選) — 可選地,你可以選擇直接傳入嵌入式表示,而不是傳入decoder_input_ids
。如果使用了past_key_values
,可選地只需輸入最後的decoder_inputs_embeds
(參見past_key_values
)。如果你想對如何將decoder_input_ids
索引轉換為相關向量有比模型內部嵌入查詢矩陣更多的控制,這會很有用。如果
decoder_input_ids
和decoder_inputs_embeds
都未設定,則decoder_inputs_embeds
將取inputs_embeds
的值。 - labels (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 用於計算掩碼語言建模損失的標籤。索引應在[-100, 0, ..., config.vocab_size]
範圍內(參見input_ids
文件字串)。索引設定為-100
的標記將被忽略(掩碼),損失僅針對標籤在[0, ..., config.vocab_size]
範圍內的標記計算。 - use_cache (
bool
, 可選) — 如果設定為True
,則返回past_key_values
鍵值狀態,可用於加速解碼(參見past_key_values
)。 - output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參見返回張量下的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。更多詳細資訊請參見返回張量下的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.modeling_outputs.Seq2SeqLMOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.Seq2SeqLMOutput 或一個 torch.FloatTensor
元組(如果傳入 return_dict=False
或 config.return_dict=False
時),包含根據配置(SeamlessM4TConfig)和輸入而異的各種元素。
-
loss (
torch.FloatTensor
,形狀為(1,)
,可選,當提供labels
時返回) — 語言建模損失。 -
logits (形狀為
(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。 -
past_key_values (
EncoderDecoderCache
,可選,當傳入use_cache=True
或config.use_cache=True
時返回) — 這是一個 EncoderDecoderCache 例項。更多詳細資訊請參閱我們的 kv 快取指南。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
,可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(一個用於嵌入層輸出,如果模型有嵌入層,+ 一個用於每一層輸出),形狀為(batch_size, sequence_length, hidden_size)
。解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
decoder_attentions (
tuple(torch.FloatTensor)
,可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每一層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(torch.FloatTensor)
,可選,當傳入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)
,可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(一個用於嵌入層輸出,如果模型有嵌入層,+ 一個用於每一層輸出),形狀為(batch_size, sequence_length, hidden_size)
。編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
encoder_attentions (
tuple(torch.FloatTensor)
,可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每一層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
SeamlessM4TForSpeechToText 的 forward 方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但之後應該呼叫 Module
例項,而不是該函式,因為前者負責執行預處理和後處理步驟,而後者會默默地忽略它們。
示例
>>> from transformers import AutoProcessor, SeamlessM4TForSpeechToText
>>> from datasets import load_dataset
>>> import torch
>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate
>>> processor = AutoProcessor.from_pretrained(""facebook/hf-seamless-m4t-medium"")
>>> model = SeamlessM4TForSpeechToText.from_pretrained(""facebook/hf-seamless-m4t-medium"")
>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)
>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...
>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids
>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...
生成
< 源 >( input_features = None tgt_lang = None generation_config = None logits_processor = None stopping_criteria = None prefix_allowed_tokens_fn = None synced_gpus = False **kwargs ) → ModelOutput 或 torch.LongTensor
引數
- input_features (
torch.FloatTensor
,形狀為(batch_size, sequence_length, num_banks)
) — 輸入音訊特徵。這應由 SeamlessM4TFeatureExtractor 類或 SeamlessM4TProcessor 類返回。詳情請參見 SeamlessM4TFeatureExtractor.call()。 - tgt_lang (
str
, 可選) — 用作翻譯目標語言的語言。 - generation_config (
~generation.GenerationConfig
, 可選) — 用作生成呼叫基礎引數化的生成配置。傳遞給 generate 中與generation_config
屬性匹配的**kwargs
將覆蓋它們。如果未提供generation_config
,將使用預設值,其載入優先順序如下:1) 如果存在generation_config.json
模型檔案,則從中載入;2) 從模型配置載入。請注意,未指定的引數將繼承 GenerationConfig 的預設值,應查閱其文件以進行生成引數化。 - logits_processor (
LogitsProcessorList
, 可選) — 補充從引數和生成配置構建的預設 logits 處理器。如果傳入的 logits 處理器已使用引數或生成配置建立,則會丟擲錯誤。此功能適用於高階使用者。 - stopping_criteria (
StoppingCriteriaList
, 可選) — 補充從引數和生成配置構建的預設停止準則。如果傳入的停止準則已使用引數或生成配置建立,則會丟擲錯誤。此功能適用於高階使用者。 - prefix_allowed_tokens_fn (
Callable[[int, torch.Tensor], list[int]]
, 可選) — 如果提供,此函式將限制束搜尋在每個步驟中只允許的標記。如果未提供,則不應用任何限制。此函式接受 2 個引數:批次 IDbatch_id
和input_ids
。它必須返回一個列表,其中包含在批次 IDbatch_id
和先前生成的標記inputs_ids
的條件下,下一步生成允許的標記。此引數對於基於字首的受限生成很有用,如 自迴歸實體檢索 中所述。 - synced_gpus (
bool
, 可選,預設為False
) — 是否繼續執行 while 迴圈直到達到max_length
(需要避免與FullyShardedDataParallel
和 DeepSpeed ZeRO Stage 3 產生死鎖)。 - kwargs (
dict[str, Any]
, 可選) —generate_config
的臨時引數化和/或將轉發到模型forward
函式的其他模型特定 kwargs。
返回
ModelOutput 或 torch.LongTensor
一個 ModelOutput(如果傳入 return_dict_in_generate=True
或 config.return_dict_in_generate=True
時)或一個 torch.FloatTensor
。可能的 ModelOutput 型別是
生成標記ID序列。
大多數生成控制引數在 generation_config
中設定,如果未傳入,將設定為模型的預設生成配置。您可以透過將相應的引數傳遞給 generate() 來覆蓋任何 generation_config
,例如 .generate(inputs, num_beams=4, do_sample=True)
。
有關生成策略和程式碼示例的概述,請檢視以下指南。
SeamlessM4TConfig
class transformers.SeamlessM4TConfig
< 源 >( vocab_size = 256102 t2u_vocab_size = 10082 hidden_size = 1024 initializer_range = 0.02 layer_norm_eps = 1e-05 use_cache = True max_position_embeddings = 1024 is_encoder_decoder = True encoder_layerdrop = 0.05 decoder_layerdrop = 0.05 activation_function = 'relu' dropout = 0.1 attention_dropout = 0.1 activation_dropout = 0.0 scale_embedding = True encoder_layers = 24 encoder_ffn_dim = 8192 encoder_attention_heads = 16 decoder_layers = 24 decoder_ffn_dim = 8192 decoder_attention_heads = 16 decoder_start_token_id = 3 max_new_tokens = 256 pad_token_id = 0 bos_token_id = 2 eos_token_id = 3 speech_encoder_layers = 24 speech_encoder_attention_heads = 16 speech_encoder_intermediate_size = 4096 speech_encoder_hidden_act = 'swish' speech_encoder_dropout = 0.0 add_adapter = True speech_encoder_layerdrop = 0.1 feature_projection_input_dim = 160 num_conv_pos_embeddings = 128 num_conv_pos_embedding_groups = 16 adaptor_kernel_size = 8 adaptor_stride = 8 adaptor_dropout = 0.1 num_adapter_layers = 1 position_embeddings_type = 'relative' rotary_embedding_base = 10000 max_source_positions = 4096 conv_depthwise_kernel_size = 31 t2u_bos_token_id = 0 t2u_pad_token_id = 1 t2u_eos_token_id = 2 t2u_decoder_start_token_id = 2 t2u_max_new_tokens = 1024 t2u_encoder_layers = 6 t2u_encoder_ffn_dim = 8192 t2u_encoder_attention_heads = 16 t2u_decoder_layers = 6 t2u_decoder_ffn_dim = 8192 t2u_decoder_attention_heads = 16 t2u_max_position_embeddings = 2048 sampling_rate = 16000 upsample_initial_channel = 512 upsample_rates = [5, 4, 4, 2, 2] upsample_kernel_sizes = [11, 8, 8, 4, 4] resblock_kernel_sizes = [3, 7, 11] resblock_dilation_sizes = [[1, 3, 5], [1, 3, 5], [1, 3, 5]] leaky_relu_slope = 0.1 unit_hifi_gan_vocab_size = 10000 unit_embed_dim = 1280 lang_embed_dim = 256 spkr_embed_dim = 256 vocoder_num_langs = 36 vocoder_num_spkrs = 200 variance_predictor_kernel_size = 3 var_pred_dropout = 0.5 vocoder_offset = 4 **kwargs )
引數
- vocab_size (
int
, 可選,預設為 256102) — SeamlessM4T 模型的詞彙表大小。定義了呼叫 ~SeamlessM4TModel、~SeamlessM4TForTextToSpeech 或 ~SeamlessM4TForTextToText 時傳入的inputs_ids
可以表示的不同標記的數量。 - t2u_vocab_size (
int
, 可選,預設為 10082) — SeamlessM4T 模型的單元詞彙表大小。定義了呼叫 ~SeamlessM4TModel、~SeamlessM4TForSpeechToSpeech 或 ~SeamlessM4TForTextToSpeech 的文字到單元子模型時傳入的inputs_ids
可以表示的不同單元標記的數量。
子模型之間共享的引數
- hidden_size (
int
, 可選,預設為 1024) — 架構中“中間”層的維度。 - initializer_range (
float
, 可選,預設為 0.02) — 用於初始化所有權重矩陣的truncated_normal_initializer
的標準差。 - layer_norm_eps (
float
, 可選,預設為 1e-05) — 層歸一化層使用的 epsilon。 - use_cache (
bool
, 可選,預設為True
) — 模型是否應返回最後一個鍵/值注意力(並非所有模型都使用)。 - max_position_embeddings (
int
, 可選,預設為 1024) — 此模型文字編碼器和解碼器可能使用的最大序列長度。通常為了以防萬一設定為較大值(例如,512、1024 或 2048)。 - is_encoder_decoder (
bool
, 可選,預設為True
) — 模型是否用作編碼器/解碼器。 - encoder_layerdrop (
float
, 可選,預設為 0.05) — 編碼器的 LayerDrop 機率。更多詳細資訊請參見 [LayerDrop 論文](參見 https://huggingface.co/papers/1909.11556)。 - decoder_layerdrop (
float
, 可選,預設為 0.05) — 解碼器的 LayerDrop 機率。更多詳細資訊請參見 [LayerDrop 論文](參見 https://huggingface.co/papers/1909.11556)。 - activation_function (
str
或function
, 可選,預設為"relu"
) — 解碼器和前饋層中的非線性啟用函式(函式或字串)。如果是字串,支援"gelu"
、"relu"
、"selu"
、"swish"
和"gelu_new"
。 - dropout (
float
, 可選,預設為 0.1) — 嵌入、編碼器、解碼器和池化器中所有全連線層的 dropout 機率。 - attention_dropout (
float
, 可選,預設為 0.1) — 所有注意力層的 dropout 機率。 - activation_dropout (
float
, 可選,預設為 0.0) — 模型中所有啟用層的 dropout 機率。 - scale_embedding (
bool
, 可選,預設為True
) — 透過除以sqrt(d_model)
來縮放嵌入。
文字編碼器和文字解碼器特定引數
- encoder_layers (
int
, 可選,預設為 24) — Transformer 文字編碼器中的隱藏層數量。 - encoder_ffn_dim (
int
, 可選,預設為 8192) — Transformer 文字編碼器中“中間”(即前饋)層的維度。 - encoder_attention_heads (
int
, 可選,預設為 16) — Transformer 文字編碼器中每個注意力層的注意力頭數量。 - decoder_layers (
int
, 可選,預設為 24) — Transformer 文字解碼器中的隱藏層數量。 - decoder_ffn_dim (
int
, 可選,預設為 8192) — Transformer 文字解碼器中“中間”(即前饋)層的維度。 - decoder_attention_heads (
int
, 可選,預設為 16) — Transformer 文字解碼器中每個注意力層的注意力頭數量。 - decoder_start_token_id (
int
, 可選,預設為 3) — 如果編碼器-解碼器模型從與 bos 不同的標記開始解碼,則為該標記的 ID。僅應用於文字解碼器。 - max_new_tokens (
int
, 可選,預設為 256) — 要生成的最大文字標記數,忽略提示中的標記數。 - pad_token_id (
int
, 可選,預設為 0) — 填充 文字標記的 ID。僅應用於文字解碼器模型。 - bos_token_id (
int
, 可選,預設為 2) — 流開始 文字標記的 ID。僅應用於文字解碼器模型。 - eos_token_id (
int
, 可選,預設為 3) — 流結束 文字標記的 ID。僅應用於文字解碼器模型。
語音編碼器特定引數
- speech_encoder_layers (
int
, optional, defaults to 24) — Transformer 語音編碼器中的隱藏層數量。 - speech_encoder_attention_heads (
int
, optional, defaults to 16) — Transformer 語音編碼器中每個注意力層的注意力頭數量。 - speech_encoder_intermediate_size (
int
, optional, defaults to 4096) — Transformer 語音編碼器中“中間”(即前饋)層的維度。 - speech_encoder_hidden_act (
str
orfunction
, optional, defaults to"swish"
) — 語音編碼器中的非線性啟用函式(函式或字串)。如果為字串,則支援"gelu"
、"relu"
、"selu"
、"swish"
和"gelu_new"
。 - speech_encoder_dropout (
float
, optional, defaults to 0.0) — 語音編碼器中所有層的 dropout 機率。 - add_adapter (
bool
, optional, defaults toTrue
) — 在語音編碼器之上新增一個介面卡層。 - speech_encoder_layerdrop (
float
, optional, defaults to 0.1) — 語音編碼器的 LayerDrop 機率。更多詳細資訊請參閱 [LayerDrop 論文](參見 https://huggingface.co/papers/1909.11556)。 - feature_projection_input_dim (
int
, optional, defaults to 160) — 語音編碼器輸入特徵投影的輸入維度,即使用 SeamlessM4TFeatureExtractor 處理輸入音訊後的維度。 - num_conv_pos_embeddings (
int
, optional, defaults to 128) — 卷積位置嵌入的數量。定義語音編碼器的一維卷積位置嵌入層的核大小。 - num_conv_pos_embedding_groups (
int
, optional, defaults to 16) — 語音編碼器的一維卷積位置嵌入層的組數。 - adaptor_kernel_size (
int
, optional, defaults to 8) — 介面卡網路中卷積層的核大小。僅當add_adapter
為True
時相關。 - adaptor_stride (
int
, optional, defaults to 8) — 介面卡網路中卷積層的步長。僅當add_adapter
為True
時相關。 - adaptor_dropout (
float
, optional, defaults to 0.1) — 語音介面卡中所有層的 dropout 機率。 - num_adapter_layers (
int
, optional, defaults to 1) — 介面卡網路中應使用的卷積層數。僅當add_adapter
為True
時相關。 - position_embeddings_type (
str
, optional, defaults to"relative"
) — 可以指定為relative
或rotary
,分別用於相對位置嵌入或旋轉位置嵌入。如果留空None
,則不應用相對位置嵌入。僅應用於語音編碼器。 - rotary_embedding_base (
int
, optional, defaults to 10000) — 如果使用"rotary"
位置嵌入,則定義嵌入基礎的大小。僅應用於語音編碼器。 - max_source_positions (
int
, optional, defaults to 4096) — 如果使用"relative"
位置嵌入,則定義最大源輸入位置。僅應用於語音編碼器。 - conv_depthwise_kernel_size (
int
, optional, defaults to 31) — Conformer 塊中卷積深度一維層的核大小。僅應用於語音編碼器。
Text-To-Unit (t2u) 模型特定引數
- t2u_bos_token_id (
int
, optional, defaults to 0) — 流開始單元標記的 ID。僅應用於文字到單元的 seq2seq 模型。 - t2u_pad_token_id (
int
, optional, defaults to 1) — 填充單元標記的 ID。僅應用於文字到單元的 seq2seq 模型。 - t2u_eos_token_id (
int
, optional, defaults to 2) — 流結束單元標記的 ID。僅應用於文字到單元的 seq2seq 模型。 - t2u_decoder_start_token_id (
int
, optional, defaults to 2) — 如果編碼器-解碼器模型以與 bos 不同的標記開始解碼,則為該標記的 ID。僅應用於文字到單元的 seq2seq 模型。 - t2u_max_new_tokens (
int
, optional, defaults to 1024) — 要生成的最大單元標記數,忽略提示中的標記數。僅應用於文字到單元的 seq2seq 模型。 - t2u_encoder_layers (
int
, optional, defaults to 6) — Transformer 文字到單元編碼器中的隱藏層數量。 - t2u_encoder_ffn_dim (
int
, optional, defaults to 8192) — Transformer 文字到單元編碼器中“中間”(即前饋)層的維度。 - t2u_encoder_attention_heads (
int
, optional, defaults to 16) — Transformer 文字到單元編碼器中每個注意力層的注意力頭數量。 - t2u_decoder_layers (
int
, optional, defaults to 6) — Transformer 文字到單元解碼器中的隱藏層數量。 - t2u_decoder_ffn_dim (
int
, optional, defaults to 8192) — Transformer 文字到單元解碼器中“中間”(即前饋)層的維度。 - t2u_decoder_attention_heads (
int
, optional, defaults to 16) — Transformer 文字到單元解碼器中每個注意力層的注意力頭數量。 - t2u_max_position_embeddings (
int
, optional, defaults to 2048) — 該模型文字到單元元件可能使用的最大序列長度。通常為了以防萬一設定得很大(例如,512、1024 或 2048)。Hifi-Gan 聲碼器特定引數
- sampling_rate (
int
, optional, defaults to 16000) — 輸出音訊將以赫茲 (Hz) 表示的取樣率生成。 - upsample_initial_channel (
int
, optional, defaults to 512) — hifi-gan 上取樣網路的輸入通道數。僅適用於聲碼器。 - upsample_rates (
tuple[int]
orlist[int]
, optional, defaults to[5, 4, 4, 2, 2]
) — 定義聲碼器上取樣網路中每個一維卷積層步長的整數元組。upsample_rates 的長度定義了卷積層的數量,並且必須與 upsample_kernel_sizes 的長度匹配。僅適用於聲碼器。 - upsample_kernel_sizes (
tuple[int]
orlist[int]
, optional, defaults to[11, 8, 8, 4, 4]
) — 定義聲碼器上取樣網路中每個一維卷積層核大小的整數元組。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) 模組中聲碼器膨脹一維卷積層膨脹率的巢狀整數元組。僅適用於聲碼器。 - leaky_relu_slope (
float
, optional, defaults to 0.1) — 聲碼器中 Leaky ReLU 啟用函式使用的負斜率角度。僅適用於聲碼器。 - unit_hifi_gan_vocab_size (
int
, optional, defaults to 10000) — SeamlessM4T 聲碼器的詞彙量大小。定義了呼叫 ~SeamlessM4TModel、~SeamlessM4TForSpeechToSpeech 或 ~SeamlessM4TForTextToSpeech 的聲碼器時傳遞的inputs_ids
可以表示的不同單元標記的數量。 - unit_embed_dim (
int
, optional, defaults to 1280) — 提供給 hifi-gan 聲碼器的輸入 ID 的投影維度。僅適用於聲碼器。 - lang_embed_dim (
int
, optional, defaults to 256) — 提供給 hifi-gan 聲碼器的目標語言的投影維度。僅適用於聲碼器。 - spkr_embed_dim (
int
, optional, defaults to 256) — 提供給 hifi-gan 聲碼器的說話人 ID 的投影維度。僅適用於聲碼器。 - vocoder_num_langs (
int
, optional, defaults to 36) — 聲碼器支援的語言數量。可能與t2u_num_langs
不同。 - vocoder_num_spkrs (
int
, optional, defaults to 200) — 聲碼器支援的說話人數量。 - variance_predictor_kernel_size (
int
, optional, defaults to 3) — 時長預測器的核大小。僅適用於聲碼器。 - var_pred_dropout (
float
, optional, defaults to 0.5) — 時長預測器的 dropout 機率。僅適用於聲碼器。 - vocoder_offset (
int
, optional, defaults to 4) — 單元標記 ID 的偏移量,用於考慮符號標記。僅適用於聲碼器。
這是一個配置類,用於儲存 ~SeamlessM4TModel 的配置。它用於根據指定的引數例項化 SeamlessM4T 模型,定義模型架構。使用預設值例項化配置將生成與 SeamlessM4T “facebook/hf-seamless-m4t-medium” 架構類似的配置。
配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請閱讀 PretrainedConfig 的文件。
>>> from transformers import SeamlessM4TModel, SeamlessM4TConfig
>>> # Initializing a SeamlessM4T "facebook/hf-seamless-m4t-medium" style configuration
>>> configuration = SeamlessM4TConfig()
>>> # Initializing a model from the "facebook/hf-seamless-m4t-medium" style configuration
>>> model = SeamlessM4TModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
SeamlessM4TTokenizer
class transformers.SeamlessM4TTokenizer
< source >( vocab_file bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' tokenizer_file = None src_lang = 'eng' tgt_lang = 'fra' sp_model_kwargs: typing.Optional[dict[str, typing.Any]] = None additional_special_tokens = None add_prefix_space = True **kwargs )
引數
- vocab_file (
str
) — 詞彙表文件的路徑。 - bos_token (
str
, optional, defaults to"<s>"
) — 預訓練期間使用的序列開始標記。可用作序列分類器標記。使用特殊標記構建序列時,這不是用於序列開頭的標記。使用的標記是
cls_token
。 - eos_token (
str
, optional, defaults to"</s>"
) — 序列結束標記。使用特殊標記構建序列時,這不是用於序列結束的標記。使用的標記是
sep_token
。 - sep_token (
str
, optional, defaults to"</s>"
) — 分隔符標記,用於從多個序列構建序列時,例如用於序列分類的兩個序列或用於問答的文字和問題。它也用作使用特殊標記構建的序列的最後一個標記。 - cls_token (
str
, optional, defaults to"<s>"
) — 分類器標記,用於序列分類(整個序列的分類而非逐標記分類)。它是使用特殊標記構建序列時的第一個標記。 - unk_token (
str
, optional, defaults to"<unk>"
) — 未知標記。不在詞彙表中的標記不能轉換為 ID,而是設定為此標記。 - pad_token (
str
, optional, defaults to"<pad>"
) — 用於填充的標記,例如在對不同長度的序列進行批處理時。 - tokenizer_file (
str
, optional) — 要使用的分詞器檔案路徑,而不是詞彙表文件。 - src_lang (
str
, optional, defaults to"eng"
) — 用作翻譯源語言的語言。 - tgt_lang (
str
, 可選, 預設為"fra"
) — 用於翻譯的目標語言。 - sp_model_kwargs (
dict[str, Any]
, 可選) — 傳遞給模型初始化的其他關鍵字引數。 - additional_special_tokens (
tuple
或list
ofstr
或tokenizers.AddedToken
, 可選) — 其他特殊標記的元組或列表。可用於指定分詞器支援的語言列表。 - add_prefix_space (
bool
, 可選, 預設為True
) — 是否在輸入中新增初始空格。這允許將第一個詞像其他詞一樣處理。
構建 SeamlessM4T 分詞器。
改編自 RobertaTokenizer 和 XLNetTokenizer。基於 SentencePiece。
分詞方法對於源語言文件是 <language code> <tokens> <eos>
,對於目標語言文件是 <eos> <language code> <tokens> <eos>
。
示例
>>> from transformers import SeamlessM4TTokenizer
>>> tokenizer = SeamlessM4TTokenizer.from_pretrained(
... "facebook/hf-seamless-m4t-medium", src_lang="eng", tgt_lang="fra"
... )
>>> example_english_phrase = " UN Chief Says There Is No Military Solution in Syria"
>>> expected_translation_french = "Le chef de l'ONU affirme qu'il n'y a pas de solution militaire en Syrie."
>>> inputs = tokenizer(example_english_phrase, text_target=expected_translation_french, return_tensors="pt")
__call__
< 來源 >( text: typing.Union[str, list[str], list[list[str]]] = None text_pair: typing.Union[str, list[str], list[list[str]], NoneType] = None text_target: typing.Union[str, list[str], list[list[str]]] = None text_pair_target: typing.Union[str, list[str], list[list[str]], NoneType] = None padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = True pad_to_multiple_of: typing.Optional[int] = 2 src_lang: typing.Optional[str] = None tgt_lang: typing.Optional[str] = None **kwargs )
引數
- text (
str
,list[str]
,list[list[str]]
, 可選) — 要編碼的序列或序列批次。每個序列可以是一個字串或一個字串列表(預分詞字串)。如果序列以字串列表(預分詞)形式提供,您必須設定is_split_into_words=True
(以消除與序列批次的歧義)。 - text_pair (
str
,list[str]
,list[list[str]]
, 可選) — 要編碼的序列或序列批次。每個序列可以是一個字串或一個字串列表(預分詞字串)。如果序列以字串列表(預分詞)形式提供,您必須設定is_split_into_words=True
(以消除與序列批次的歧義)。 - text_target (
str
,list[str]
,list[list[str]]
, 可選) — 要編碼為目標文字的序列或序列批次。每個序列可以是一個字串或一個字串列表(預分詞字串)。如果序列以字串列表(預分詞)形式提供,您必須設定is_split_into_words=True
(以消除與序列批次的歧義)。 - text_pair_target (
str
,list[str]
,list[list[str]]
, 可選) — 要編碼為目標文字的序列或序列批次。每個序列可以是一個字串或一個字串列表(預分詞字串)。如果序列以字串列表(預分詞)形式提供,您必須設定is_split_into_words=True
(以消除與序列批次的歧義)。 - padding (
bool
,str
或 PaddingStrategy, 可選, 預設為True
) — 在返回的序列中選擇一種填充策略(根據模型的填充側和填充索引):True
或'longest'
:填充到批次中最長的序列(如果只提供單個序列則不填充)。'max_length'
:填充到由引數max_length
指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。False
或'do_not_pad'
(預設):不填充(即可以輸出具有不同長度序列的批次)。
- pad_to_multiple_of (
int
, 可選) — 如果設定,將把序列填充到提供值的倍數。這對於在計算能力
>= 7.5
(Volta) 的 NVIDIA 硬體上啟用 Tensor Cores 的使用特別有用。 - src_lang (
str
, 可選) — 表示源語言的字串。如果未指定,將使用上次指定的src_lang
(在初始化或呼叫此分詞器時)。 - tgt_lang (
str
, 可選) — 表示目標語言的字串。如果未指定,將使用上次指定的tgt_lang
(在初始化或呼叫此分詞器時)。 - kwargs (可選) — 剩餘的關鍵字引數字典,將傳遞給 PreTrainedTokenizer.call()。
build_inputs_with_special_tokens
< 來源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → list[int]
透過連線和新增特殊標記,從序列或序列對構建用於序列分類任務的模型輸入。NLLB 序列的格式如下,其中 X
表示序列:
input_ids
(用於編碼器)X [eos, src_lang_code]
decoder_input_ids
:(用於解碼器)X [eos, tgt_lang_code]
從不使用 BOS。序列對不是預期的用例,但它們將在沒有分隔符的情況下處理。
get_special_tokens_mask
< 來源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None already_has_special_tokens: bool = False ) → list[int]
從沒有新增特殊標記的標記列表中檢索序列ID。此方法在使用分詞器prepare_for_model
方法新增特殊標記時呼叫。
create_token_type_ids_from_sequences
< 來源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → list[int]
從傳遞的兩個序列建立掩碼,用於序列對分類任務。nllb 不使用標記型別 ID,因此返回一個零列表。
SeamlessM4TTokenizerFast
class transformers.SeamlessM4TTokenizerFast
< 來源 >( vocab_file = None tokenizer_file = None bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' src_lang = 'eng' tgt_lang = 'fra' additional_special_tokens = None **kwargs )
引數
- vocab_file (
str
, 可選) — 詞彙檔案路徑。 - tokenizer_file (
str
, 可選) — 要使用的分詞器檔案路徑,而不是詞彙檔案。 - bos_token (
str
, 可選, 預設為"<s>"
) — 預訓練期間使用的序列開始標記。可以用作序列分類器標記。使用特殊標記構建序列時,這不是序列開頭使用的標記。使用的標記是
cls_token
。 - eos_token (
str
, 可選, 預設為"</s>"
) — 序列結束標記。使用特殊標記構建序列時,這不是序列結束使用的標記。使用的標記是
sep_token
。 - sep_token (
str
, 可選, 預設為"</s>"
) — 分隔標記,用於從多個序列構建序列時,例如用於序列分類的兩個序列,或用於問答的文字和問題。它也用作使用特殊標記構建的序列的最後一個標記。 - cls_token (
str
, 可選, 預設為"<s>"
) — 分類器標記,用於序列分類(整個序列的分類而不是按標記分類)。它是使用特殊標記構建序列時的第一個標記。 - unk_token (
str
, 可選, 預設為"<unk>"
) — 未知標記。不在詞彙表中的標記不能轉換為 ID,而是設定為此標記。 - pad_token (
str
, 可選, 預設為"<pad>"
) — 用於填充的標記,例如在批處理不同長度的序列時。 - src_lang (
str
, 可選, 預設為"eng"
) — 用於翻譯的源語言。 - tgt_lang (
str
, 可選, 預設為"fra"
) — 用於翻譯的目標語言。 - additional_special_tokens (
tuple
或list
ofstr
或tokenizers.AddedToken
, 可選) — 其他特殊標記的元組或列表。
構建一個“快速”SeamlessM4T 分詞器(由 HuggingFace 的 tokenizers 庫支援)。基於 BPE。
此分詞器繼承自 PreTrainedTokenizerFast,其中包含大部分主要方法。使用者應參考此超類以獲取有關這些方法的更多資訊。
分詞方法對於源語言文件是 <language code> <tokens> <eos>
,對於目標語言文件是 <eos> <language code> <tokens> <eos>
。
示例
>>> from transformers import SeamlessM4TTokenizerFast
>>> tokenizer = SeamlessM4TTokenizerFast.from_pretrained(
... "facebook/hf-seamless-m4t-medium", src_lang="eng", tgt_lang="fra"
... )
>>> example_english_phrase = " UN Chief Says There Is No Military Solution in Syria"
>>> expected_translation_french = "Le chef de l'ONU affirme qu'il n'y a pas de solution militaire en Syrie."
>>> inputs = tokenizer(example_english_phrase, text_target=expected_translation_french, return_tensors="pt")
__call__
< 來源 >( text: typing.Union[str, list[str], list[list[str]]] = None text_pair: typing.Union[str, list[str], list[list[str]], NoneType] = None text_target: typing.Union[str, list[str], list[list[str]]] = None text_pair_target: typing.Union[str, list[str], list[list[str]], NoneType] = None padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = True pad_to_multiple_of: typing.Optional[int] = 2 src_lang: typing.Optional[str] = None tgt_lang: typing.Optional[str] = None **kwargs )
引數
- text (
str
,list[str]
,list[list[str]]
, 可選) — 要編碼的序列或序列批次。每個序列可以是一個字串或一個字串列表(預分詞字串)。如果序列以字串列表(預分詞)形式提供,您必須設定is_split_into_words=True
(以消除與序列批次的歧義)。 - text_pair (
str
,list[str]
,list[list[str]]
, 可選) — 要編碼的序列或序列批次。每個序列可以是一個字串或一個字串列表(預分詞字串)。如果序列以字串列表(預分詞)形式提供,您必須設定is_split_into_words=True
(以消除與序列批次的歧義)。 - text_target (
str
,list[str]
,list[list[str]]
, 可選) — 要編碼為目標文字的序列或序列批次。每個序列可以是一個字串或一個字串列表(預分詞字串)。如果序列以字串列表(預分詞)形式提供,您必須設定is_split_into_words=True
(以消除與序列批次的歧義)。 - text_pair_target (
str
,list[str]
,list[list[str]]
, 可選) — 要編碼為目標文字的序列或序列批次。每個序列可以是一個字串或一個字串列表(預分詞字串)。如果序列以字串列表(預分詞)形式提供,您必須設定is_split_into_words=True
(以消除與序列批次的歧義)。 - padding (
bool
,str
或 PaddingStrategy, 可選, 預設為True
) — 在返回的序列中選擇一種填充策略(根據模型的填充側和填充索引):True
或'longest'
:填充到批次中最長的序列(如果只提供單個序列則不填充)。'max_length'
:填充到由引數max_length
指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。False
或'do_not_pad'
(預設):不填充(即可以輸出具有不同長度序列的批次)。
- pad_to_multiple_of (
int
, 可選) — 如果設定,將把序列填充到提供值的倍數。這對於在計算能力
>= 7.5
(Volta) 的 NVIDIA 硬體上啟用 Tensor Cores 的使用特別有用。 - src_lang (
str
, 可選) — 表示源語言的字串。如果未指定,將使用上次指定的src_lang
(在初始化或呼叫此分詞器時)。 - tgt_lang (
str
, 可選) — 表示目標語言的字串。如果未指定,將使用上次指定的tgt_lang
(在初始化或呼叫此分詞器時)。 - kwargs (可選) — 剩餘的關鍵字引數字典,將傳遞給 PreTrainedTokenizerFast.call()。
SeamlessM4TFeatureExtractor
class transformers.SeamlessM4TFeatureExtractor
< 源 >( feature_size = 80 sampling_rate = 16000 num_mel_bins = 80 padding_value = 0.0 stride = 2 **kwargs )
引數
- feature_size (
int
, 可選, 預設為 80) — 提取特徵的特徵維度。 - sampling_rate (
int
, 可選, 預設為 16000) — 音訊檔案數字化的取樣率,以赫茲 (Hz) 表示。 - num_mel_bins (
int
, 可選, 預設為 80) — Mel 頻率分箱的數量。 - padding_value (
float
, 可選, 預設為 0.0) — 用於填充填充向量的值。 - stride (
int
, 可選, 預設為 2) — 用於將音訊從形狀 (batch_size,num_frames,num_mel_bins) 重新塑形為 (batch_size,num_frames//stride,num_mel_bins*stride) 的步幅。
構建一個 SeamlessM4T 特徵提取器。
此特徵提取器繼承自 SequenceFeatureExtractor,其中包含大部分主要方法。使用者應參閱此超類以獲取有關這些方法的更多資訊。
此類從原始語音中提取 Mel 濾波器組特徵。
__call__
< 源 >( raw_speech: typing.Union[numpy.ndarray, list[float], list[numpy.ndarray], list[list[float]]] padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = True pad_to_multiple_of: typing.Optional[int] = 2 max_length: typing.Optional[int] = None truncation: bool = False return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None sampling_rate: typing.Optional[int] = None return_attention_mask: typing.Optional[bool] = None do_normalize_per_mel_bins: typing.Optional[bool] = True **kwargs )
引數
- raw_speech (
np.ndarray
,torch.Tensor
,list[float]
,list[np.ndarray]
,list[torch.Tensor]
, — -
list[list[float]]
,list[list[list[float]]]
) — 要填充的序列或序列批次。每個序列可以是 numpy 陣列、torch 張量、浮點值列表、numpy 陣列列表、torch 張量列表、浮點值列表的列表或浮點值列表的列表的列表。如果raw_speech
是一維np.ndarray
、torch.Tensor
或list[float]
,則raw_speech
被視為單通道、單樣本聲音。在所有其他情況下,raw_speech
的第一維,無論是來自np.ndarray
、torch.Tensor
還是list[...]
,都對應於批次中的樣本數,並且通道數(即單聲道或立體聲特徵)從其他維度匯出(1D -> 單通道波形批次;2D-> 立體聲通道波形批次)。 - padding (
bool
,str
或 PaddingStrategy, 可選, 預設為True
) — 選擇一種策略來填充返回的序列(根據模型的填充側和填充索引),包括:True
或'longest'
:填充到批次中最長的序列(如果僅提供單個序列則不填充)。'max_length'
:填充到由引數max_length
指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。False
或'do_not_pad'
(預設):不填充(即可以輸出具有不同長度序列的批次)。
- pad_to_multiple_of (
int
, 可選, 預設為 2) — 如果設定,將序列填充為給定值的倍數。這對於在計算能力
>= 7.5
(Volta) 的 NVIDIA 硬體或 TPU 上啟用 Tensor Cores 特別有用,因為它們受益於序列長度為 128 的倍數。 - max_length (
int
, 可選) — 返回列表的最大長度和可選的填充長度(見上文)。 - truncation (
bool
) — 啟用截斷,將長於 max_length 的輸入序列截斷為 max_length。 - return_attention_mask (
bool
, 可選) — 是否返回注意力掩碼。如果保留為預設值,將根據特定特徵提取器的預設值返回注意力掩碼。對於 SeamlessM4T 模型,為了避免細微錯誤,在批處理推理時應始終傳遞
attention_mask
。 - return_tensors (
str
或 TensorType, 可選) — 如果設定,將返回張量而不是 Python 整數列表。可接受的值為:'tf'
:返回 TensorFlowtf.constant
物件。'pt'
:返回 PyTorchtorch.Tensor
物件。'np'
:返回 Numpynp.ndarray
物件。
- sampling_rate (
int
, 可選) —raw_speech
輸入的取樣率。強烈建議在轉發呼叫時傳遞sampling_rate
以防止靜默錯誤。 - do_normalize_per_mel_bins (
bool
, 可選, 預設為True
) — 是否對輸入進行每梅爾通道的零均值單位方差歸一化。 - kwargs (可選) — 將傳遞給分詞器或特徵提取器的剩餘關鍵字引數字典。
對一個或多個序列進行特徵化併為模型準備的主方法。
SeamlessM4TProcessor
class transformers.SeamlessM4TProcessor
< 源 >( feature_extractor tokenizer )
引數
- feature_extractor (SeamlessM4TFeatureExtractor) — 音訊處理器是必需的輸入。
- tokenizer (SeamlessM4TTokenizerFast) — 分詞器是必需的輸入。
構建一個 SeamlessM4T 處理器,它將 SeamlessM4T 特徵提取器和 SeamlessM4T 分詞器封裝到一個處理器中。
SeamlessM4TProcessor 提供 SeamlessM4TFeatureExtractor 和 SeamlessM4TTokenizerFast 的所有功能。有關這些方法的更多資訊,請參見 **call**() 和 decode()
。
__call__
< 源 >( text = None audios = None src_lang = None tgt_lang = None **kwargs ) → BatchEncoding
引數
- text (
str
,list[str]
,list[list[str]]
) — 要編碼的序列或序列批次。每個序列可以是字串或字串列表(預分詞字串)。如果序列以字串列表(預分詞)形式提供,則必須設定is_split_into_words=True
(以消除與序列批次的歧義)。 - audios (
np.ndarray
,torch.Tensor
,list[np.ndarray]
,list[torch.Tensor]
) — 要準備的音訊或音訊批次。每個音訊可以是 NumPy 陣列或 PyTorch 張量。如果是 NumPy 陣列/PyTorch 張量,每個音訊的形狀應為 (C, T),其中 C 是通道數,T 是音訊的取樣長度。 - src_lang (
str
, 可選) — 輸入文字/音訊的語言程式碼。如果未指定,將使用上次指定的src_lang
。 - tgt_lang (
str
, 可選) — 用作翻譯目標語言的語言程式碼。如果未指定,將使用上次指定的tgt_lang
。 - kwargs (可選) — 將傳遞給特徵提取器和/或分詞器的剩餘關鍵字引數字典。
一個 BatchEncoding,包含以下欄位:
- input_ids — 要輸入到模型的 token ID 列表。當
text
不為None
時返回。 - attention_mask — 指定模型應關注哪些標記的索引列表(當
return_attention_mask=True
或 “attention_mask” 在self.model_input_names
中且text
不為None
時)。 - input_features — 將輸入模型的音訊輸入特徵。當
audios
不為None
時返回。
準備一個或多個序列和音訊供模型使用的主要方法。如果 text
不為 None
,此方法將 text
和 kwargs
引數轉發到 SeamlessM4TTokenizerFast 的 **call**() 以編碼文字。要準備音訊,如果 audios
不為 None
,此方法將 audios
和 kwargs
引數轉發到 SeamlessM4TFeatureExtractor 的 **call**()。有關詳細資訊,請參閱上述兩種方法的文件字串。
SeamlessM4TCodeHifiGan
class transformers.SeamlessM4TCodeHifiGan
< 源 >( config )
引數
- config (SeamlessM4TCodeHifiGan) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化不載入與模型關聯的權重,只加載配置。請查閱 from_pretrained() 方法以載入模型權重。
程式碼 HiFi-GAN 聲碼器,如本 倉庫 中所述。
此模型繼承自 PreTrainedModel。檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解與通用用法和行為相關的所有事項。
前向
< 源 >( input_ids: LongTensor spkr_id: Tensor lang_id: Tensor )
引數
- input_ids (形狀為
(batch_size, sequence_length)
的torch.LongTensor
) — 詞彙表中輸入序列標記的索引。索引可以使用 SeamlessM4TTextToUnitForConditionalGeneration 獲取。 什麼是輸入 ID?
- spkr_id (
int
, 可選) — 用於語音合成的說話人 ID。必須小於config.vocoder_num_spkrs
。 - tgt_lang (
str
, 可選) — 用作翻譯目標語言的語言 ID。
SeamlessM4THifiGan
前向
< 源 >( input_embeds: FloatTensor ) → torch.FloatTensor
引數
- spectrogram (
torch.FloatTensor
) — 包含對數梅爾譜圖的張量。可以是批處理的,形狀為(batch_size, sequence_length, model_in_dim)
;也可以是未批處理的,形狀為(sequence_length, model_in_dim)
。請注意,model_in_dim
是config.unit_embed_dim
、config.lang_embed_dim
和config.spkr_embed_dim
的總和。
返回
torch.FloatTensor
包含語音波形的張量。如果輸入譜圖是批處理的,則形狀為 (batch_size, num_frames,)
。如果未批處理,則形狀為 (num_frames,)
。
將對數梅爾譜圖轉換為語音波形。傳遞一批對數梅爾譜圖將返回一批語音波形。傳遞單個未批處理的對數梅爾譜圖將返回單個未批處理的語音波形。
SeamlessM4TTextToUnitModel
class transformers.SeamlessM4TTextToUnitModel
< 源 >( config: SeamlessM4TConfig embed_tokens_decoder: typing.Optional[torch.nn.modules.sparse.Embedding] = None )
引數
- config (SeamlessM4TConfig) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化不載入與模型關聯的權重,只加載配置。請查閱 from_pretrained() 方法以載入模型權重。
- embed_tokens_decoder (
nn.Embedding
, 可選) — 解碼器的輸入嵌入。
Transformer 裸文字到單元編碼器-解碼器。編碼器是一個不帶嵌入的 SeamlessM4TEncoder
,解碼器是一個 SeamlessM4TDecoder
。
此模型繼承自 PreTrainedModel。檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解與通用用法和行為相關的所有事項。
SeamlessM4TTextToUnitForConditionalGeneration
class transformers.SeamlessM4TTextToUnitForConditionalGeneration
< 源 >( config: SeamlessM4TConfig embed_tokens_decoder: typing.Optional[torch.nn.modules.sparse.Embedding] = None )
引數
- config (SeamlessM4TConfig) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化不載入與模型關聯的權重,只加載配置。請查閱 from_pretrained() 方法以載入模型權重。
- embed_tokens_decoder (
nn.Embedding
, 可選) — 解碼器的輸入嵌入。
帶語言模型頭的 Transformer 文字到單元編碼器-解碼器。基礎編碼器-解碼器模型是 SeamlessM4TTextToUnit
。
此模型繼承自 PreTrainedModel。檢視超類文件以瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以瞭解與通用用法和行為相關的所有事項。
前向
< 源 >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.Tensor] = None decoder_input_ids: typing.Optional[torch.LongTensor] = None decoder_attention_mask: typing.Optional[torch.LongTensor] = None encoder_outputs: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None past_key_values: typing.Optional[tuple[tuple[torch.FloatTensor]]] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None decoder_inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = 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 ) → transformers.modeling_outputs.Seq2SeqLMOutput 或 tuple(torch.FloatTensor)
引數
- input_ids (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 輸入序列標記在詞彙表中的索引。預設情況下會忽略填充。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.Tensor
,形狀為(batch_size, sequence_length)
,可選) — 掩碼,用於避免對填充標記索引執行注意力。掩碼值選擇範圍為[0, 1]
:- 1 表示未被掩蓋的標記,
- 0 表示被掩蓋的標記。
- decoder_input_ids (
torch.LongTensor
,形狀為(batch_size, target_sequence_length)
,可選) — 解碼器輸入序列標記在詞彙表中的索引。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
Bart 使用
eos_token_id
作為decoder_input_ids
生成的起始標記。如果使用past_key_values
,可以選擇只輸入最後一個decoder_input_ids
(參見past_key_values
)。對於翻譯和摘要訓練,應提供
decoder_input_ids
。如果未提供decoder_input_ids
,模型將根據論文中的去噪預訓練,透過將input_ids
向右移位來建立此張量。 - decoder_attention_mask (
torch.LongTensor
,形狀為(batch_size, target_sequence_length)
,可選) — 預設行為:生成一個忽略decoder_input_ids
中填充標記的張量。預設情況下也會使用因果掩碼。如果您想更改填充行為,應閱讀
modeling_bart._prepare_decoder_attention_mask
並根據您的需求進行修改。有關預設策略的更多資訊,請參閱 論文 中的圖 1。 - 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)
元組,每個元組包含兩個形狀為(batch_size, num_heads, sequence_length, embed_size_per_head)
的張量。這也稱為舊式快取格式。
模型將輸出與作為輸入傳入的快取相同的快取格式。如果未傳入
past_key_values
,則將返回舊式快取格式。如果使用
past_key_values
,使用者可以選擇只輸入形狀為(batch_size, 1)
的最後一個input_ids
(那些沒有將其過去的鍵值狀態提供給此模型的),而不是所有形狀為(batch_size, sequence_length)
的input_ids
。 - inputs_embeds (
torch.FloatTensor
,形狀為(batch_size, sequence_length, hidden_size)
,可選) — 可選地,您可以透過直接傳入嵌入表示來代替傳入input_ids
。如果您想對如何將input_ids
索引轉換為相關向量有比模型內部嵌入查詢矩陣更多的控制,這將非常有用。 - decoder_inputs_embeds (
torch.FloatTensor
,形狀為(batch_size, target_sequence_length, hidden_size)
,可選) — 可選地,您可以透過直接傳入嵌入表示來代替傳入decoder_input_ids
。如果使用past_key_values
,可以選擇只輸入最後一個decoder_inputs_embeds
(參見past_key_values
)。如果您想對如何將decoder_input_ids
索引轉換為相關向量有比模型內部嵌入查詢矩陣更多的控制,這將非常有用。如果
decoder_input_ids
和decoder_inputs_embeds
都未設定,則decoder_inputs_embeds
將取inputs_embeds
的值。 - labels (
torch.LongTensor
,形狀為(batch_size, sequence_length)
,可選) — 用於計算掩碼語言建模損失的標籤。索引應在[-100, 0, ..., config.vocab_size]
範圍內(參見input_ids
文件字串)。索引設定為-100
的標記將被忽略(掩碼),損失僅針對標籤在[0, ..., config.vocab_size]
範圍內的標記計算。 - use_cache (
bool
,可選) — 如果設定為True
,則返回past_key_values
鍵值狀態,可用於加速解碼(參見past_key_values
)。 - output_attentions (
bool
,可選) — 是否返回所有注意力層的注意力張量。更多詳細資訊請參見返回張量下的attentions
。 - output_hidden_states (
bool
,可選) — 是否返回所有層的隱藏狀態。更多詳細資訊請參見返回張量下的hidden_states
。 - return_dict (
bool
,可選) — 是否返回 ModelOutput 而不是純元組。
返回
transformers.modeling_outputs.Seq2SeqLMOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.Seq2SeqLMOutput 或一個 torch.FloatTensor
元組(如果傳入 return_dict=False
或 config.return_dict=False
時),包含根據配置(SeamlessM4TConfig)和輸入而異的各種元素。
-
loss (
torch.FloatTensor
,形狀為(1,)
,可選,當提供labels
時返回) — 語言建模損失。 -
logits (形狀為
(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。 -
past_key_values (
EncoderDecoderCache
,可選,當傳入use_cache=True
或config.use_cache=True
時返回) — 這是一個 EncoderDecoderCache 例項。更多詳細資訊請參閱我們的 kv 快取指南。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
past_key_values
輸入)加速順序解碼。 -
decoder_hidden_states (
tuple(torch.FloatTensor)
,可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(一個用於嵌入層輸出,如果模型有嵌入層,+ 一個用於每一層輸出),形狀為(batch_size, sequence_length, hidden_size)
。解碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
decoder_attentions (
tuple(torch.FloatTensor)
,可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每一層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。解碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
-
cross_attentions (
tuple(torch.FloatTensor)
,可選,當傳入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)
,可選,當傳入output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(一個用於嵌入層輸出,如果模型有嵌入層,+ 一個用於每一層輸出),形狀為(batch_size, sequence_length, hidden_size)
。編碼器在每一層輸出時的隱藏狀態以及初始嵌入輸出。
-
encoder_attentions (
tuple(torch.FloatTensor)
,可選,當傳入output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每一層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。編碼器的注意力權重,在注意力 softmax 之後,用於計算自注意力頭中的加權平均。
SeamlessM4TTextToUnitForConditionalGeneration 的 forward 方法,覆蓋了 __call__
特殊方法。
儘管前向傳播的實現需要在該函式中定義,但之後應該呼叫 Module
例項,而不是該函式,因為前者負責執行預處理和後處理步驟,而後者會默默地忽略它們。