Transformers 文件
SeamlessM4T-v2
並獲得增強的文件體驗
開始使用
SeamlessM4T-v2
概述
SeamlessM4T-v2 模型由 Meta AI 的 Seamless Communication 團隊在 Seamless: Multilingual Expressive and Streaming Speech Translation 中提出。
SeamlessM4T-v2 是一系列旨在提供高質量翻譯的模型集合,讓不同語言社群的人們能夠透過語音和文字輕鬆交流。它是先前版本的改進。有關 v1 和 v2 之間差異的更多詳細資訊,請參閱SeamlessM4T-v1 的差異部分。
SeamlessM4T-v2 可以在不依賴獨立模型的情況下實現多項任務:
- 語音到語音翻譯 (S2ST)
- 語音到文字翻譯 (S2TT)
- 文字到語音翻譯 (T2ST)
- 文字到文字翻譯 (T2TT)
- 自動語音識別 (ASR)
SeamlessM4Tv2Model 可以執行上述所有任務,但每個任務也有其專用的子模型。
論文摘要如下:
自動語音翻譯的最新進展極大地擴充套件了語言覆蓋範圍,改進了多模態能力,並實現了廣泛的任務和功能。儘管如此,當今大規模的自動語音翻譯系統缺乏關鍵功能,這些功能有助於機器輔助通訊在與人與人對話相比時感覺無縫。在這項工作中,我們引入了一系列模型,可以以流式方式實現端到端表達性和多語言翻譯。首先,我們貢獻了大規模多語言多模態 SeamlessM4T 模型 SeamlessM4T v2 的改進版本。這個更新的模型結合了更新的 UnitY2 框架,在更多低資源語言資料上進行了訓練。SeamlessAlign 的擴充套件版本增加了 114,800 小時的自動對齊資料,總共涵蓋 76 種語言。SeamlessM4T v2 為我們最新的兩個模型 SeamlessExpressive 和 SeamlessStreaming 的啟動奠定了基礎。SeamlessExpressive 能夠保留髮聲風格和韻律的翻譯。與先前在表達性語音研究方面的努力相比,我們的工作解決了韻律的某些未充分探索的方面,例如語速和停頓,同時還保留了語音的風格。至於 SeamlessStreaming,我們的模型利用高效單調多頭注意力(EMMA)機制生成低延遲目標翻譯,而無需等待完整的源語句。作為首個此類模型,SeamlessStreaming 支援多種源語言和目標語言的同步語音到語音/文字翻譯。為了瞭解這些模型的效能,我們結合了現有自動度量的新穎和修改版本來評估韻律、延遲和魯棒性。對於人工評估,我們調整了現有協議,以衡量在意義、自然度和表達性保留方面最相關的屬性。為了確保我們的模型可以安全負責地使用,我們實施了多模態機器翻譯的首次已知紅隊演練工作、毒性檢測和緩解系統、性別偏見的系統評估以及旨在削弱深度偽造影響的不可聽區域性水印機制。因此,我們將 SeamlessExpressive 和 SeamlessStreaming 的主要元件結合起來,形成 Seamless,這是第一個公開可用的系統,可實現即時表達性跨語言通訊。總而言之,Seamless 讓我們對將通用語音翻譯器從科幻概念變為現實世界技術所需的技術基礎有了關鍵的瞭解。最後,這項工作中的貢獻——包括模型、程式碼和水印檢測器——已公開發布,可透過以下連結訪問。
用法
在下面的示例中,我們將載入阿拉伯語音訊樣本和英語文字樣本,並將它們轉換為俄語語音和法語文字。
首先,載入處理器和模型檢查點
>>> from transformers import AutoProcessor, SeamlessM4Tv2Model
>>> processor = AutoProcessor.from_pretrained("facebook/seamless-m4t-v2-large")
>>> model = SeamlessM4Tv2Model.from_pretrained("facebook/seamless-m4t-v2-large")
您可以無縫地將此模型用於文字或音訊,以生成翻譯文字或翻譯音訊。
以下是如何使用處理器處理文字和音訊
>>> # 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 text as well
>>> text_inputs = processor(text = "Hello, my dog is cute", src_lang="eng", return_tensors="pt")
語音
SeamlessM4Tv2Model 可以無縫地生成文字或語音,幾乎無需任何更改。讓我們嘗試俄語語音翻譯
>>> 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
傳遞給 SeamlessM4Tv2Model.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. 使用專用模型
SeamlessM4Tv2Model 是 Transformers 頂層模型,用於生成語音和文字,但您也可以使用專用模型來執行任務,而無需額外的元件,從而減少記憶體佔用。例如,您可以將音訊到音訊生成片段替換為專用於 S2ST 任務的模型,其餘程式碼完全相同。
>>> from transformers import SeamlessM4Tv2ForSpeechToSpeech
>>> model = SeamlessM4Tv2ForSpeechToSpeech.from_pretrained("facebook/seamless-m4t-v2-large")
或者,您可以使用專用於 T2TT 任務的模型替換文字到文字生成片段,只需刪除 generate_speech=False
即可。
>>> from transformers import SeamlessM4Tv2ForTextToText
>>> model = SeamlessM4Tv2ForTextToText.from_pretrained("facebook/seamless-m4t-v2-large")
歡迎嘗試 SeamlessM4Tv2ForSpeechToText 和 SeamlessM4Tv2ForTextToSpeech。
2. 改變說話人身份
您可以使用 speaker_id
引數更改用於語音合成的說話人。某些 speaker_id
在某些語言下比其他效果更好!
3. 更改生成策略
您可以對文字生成使用不同的生成策略,例如 .generate(input_ids=input_ids, text_num_beams=4, text_do_sample=True)
將在文字模型上執行多項式束搜尋解碼。請注意,語音生成僅支援貪婪(預設)或多項式取樣,這可以與例如 .generate(..., speech_do_sample=True, speech_temperature=0.6)
一起使用。
4. 同時生成語音和文字
使用 SeamlessM4Tv2Model 的 return_intermediate_token_ids=True
可以同時返回語音和文字!
模型架構
SeamlessM4T-v2 具有多功能架構,可流暢處理文字和語音的順序生成。此設定包含兩個序列到序列 (seq2seq) 模型。第一個模型將輸入模態翻譯成翻譯文字,而第二個模型則從翻譯文字生成語音 token,即“單元 token”。
每種模態都有其自己的專用編碼器,具有獨特的架構。此外,對於語音輸出,在第二個 seq2seq 模型之上放置了一個受 HiFi-GAN 架構啟發的聲碼器。
與 SeamlessM4T-v1 的差異
這個新版本的架構與第一個版本在幾個方面有所不同
第二遍模型的改進
第二個 seq2seq 模型,名為文字到單元模型,現在是非自迴歸的,這意味著它在**單個前向傳播**中計算單元。這一成就得以實現,得益於
- **字元級嵌入**的使用,這意味著預測的翻譯文字的每個字元都有其自己的嵌入,然後用於預測單元 token。
- 使用中間持續時間預測器,該預測器在預測的翻譯文字上以**字元級**預測語音持續時間。
- 使用新的文字到單元解碼器,該解碼器混合了卷積和自注意力以處理更長的上下文。
語音編碼器的差異
語音編碼器,在第一遍生成過程中用於預測翻譯文字,主要透過以下機制與以前的語音編碼器不同:
- 使用分塊注意力掩碼以防止跨塊的注意力,確保每個位置僅關注其自身塊和固定數量的先前塊中的位置。
- 使用相對位置嵌入,該嵌入僅考慮序列元素之間的距離,而不是絕對位置。有關更多詳細資訊,請參閱具有相對位置表示的自注意力 (Shaw et al.)。
- 使用因果深度可分離卷積而不是非因果深度可分離卷積。
生成過程
以下是生成過程的工作方式:
- 輸入文字或語音透過其特定的編碼器進行處理。
- 解碼器以所需語言建立文字 token。
- 如果需要語音生成,第二個 seq2seq 模型會以非自迴歸方式生成單元 token。
- 然後這些單元 token 透過最終的聲碼器生成實際的語音。
此模型由 ylacombe 貢獻。原始程式碼可在 此處 找到。
SeamlessM4Tv2Model
class transformers.SeamlessM4Tv2Model
< source >( config current_modality = 'text' )
引數
- config (SeamlessM4Tv2Model) — 包含模型所有引數的模型配置類。使用配置檔案初始化不載入與模型關聯的權重,只加載配置。請檢視 from_pretrained() 方法載入模型權重。
- current_modality (
str
, 可選, 預設為"text"
) — 預設模態。用於初始化模型。
原始的 SeamlessM4Tv2 模型 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 speaker_id: typing.Optional[int] = 0 generate_speech: typing.Optional[bool] = True **kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]
引數
- input_ids (
torch.LongTensor
形狀(batch_size, sequence_length)
, 可選) — 詞彙表中輸入序列 token 的索引。索引可以使用 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
,還會返回中間生成的文字和單元 token。如果您還想獲取翻譯音訊以及文字,請設定為True
。請注意,如果generate_speech=True
,此引數將被忽略。 - tgt_lang (
str
, 可選) — 用作翻譯目標語言的語言。 - speaker_id (
int
, 可選, 預設為 0) — 用於語音合成的說話人 ID。必須小於config.vocoder_num_spkrs
。 - generate_speech (
bool
, 可選, 預設為True
) — 如果為False
,將僅返回文字 token 且不生成語音。 - kwargs (可選) — 剩餘的關鍵字引數字典,將傳遞給 GenerationMixin.generate()。關鍵字引數分為兩種型別:
- 不帶字首,它們將作為
**kwargs
輸入給每個子模型的generate
方法,除了decoder_input_ids
,它只會透過文字元件傳遞。 - 帶 text_ 或 speech_ 字首,它們將分別作為文字模型和語音模型的
generate
方法的輸入。它優先於不帶字首的關鍵字。
這意味著您可以,例如,為其中一個生成指定生成策略,而不為另一個指定。
- 不帶字首,它們將作為
返回
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]
- 如果為
generate_speech
和return_intermediate_token_ids
,則返回SeamlessM4Tv2GenerationOutput
。 - 如果為
generate_speech
而非return_intermediate_token_ids
,則返回一個由形狀為(batch_size, sequence_length)
的波形和給出每個樣本長度的waveform_lengths
組成的元組。 - 如果
generate_speech=False
,它將返回ModelOutput
。
生成翻譯後的 token ID 和/或翻譯後的音訊波形。
此方法依次呼叫兩個不同子模型的 .generate
函式。您可以在兩個不同級別指定關鍵字引數:將傳遞給兩個模型的通用引數,或將傳遞給其中一個模型的字首引數。
例如,呼叫 .generate(input_ids=input_ids, num_beams=4, speech_do_sample=True)
將依次在文字模型上執行束搜尋解碼,並在語音模型上執行多項式束搜尋取樣。
有關生成策略和程式碼示例的概述,請檢視以下指南。
SeamlessM4Tv2ForTextToSpeech
class transformers.SeamlessM4Tv2ForTextToSpeech
< 源 >( config: SeamlessM4Tv2Config )
引數
- config (SeamlessM4Tv2Config) — 包含模型所有引數的模型配置類。使用配置檔案初始化不載入與模型關聯的權重,只加載配置。請檢視 from_pretrained() 方法載入模型權重。
可用於 T2ST 的文字到語音 SeamlessM4Tv2 模型 Transformer。
此模型繼承自 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 speaker_id: typing.Optional[int] = 0 **kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
引數
- input_ids (
torch.LongTensor
形狀(batch_size, sequence_length)
) — 詞彙表中輸入序列 token 的索引。索引可以使用 SeamlessM4TTokenizer 或 SeamlessM4TProcessor 獲得。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- return_intermediate_token_ids (
bool
, 可選) — 如果為True
,還會返回中間生成的文字和單元 token。如果您還想獲取翻譯音訊以及文字,請設定為True
。 - tgt_lang (
str
, 可選) — 用作翻譯目標語言的語言。 - speaker_id (
int
, 可選, 預設為 0) — 用於語音合成的說話人 ID。必須小於config.vocoder_num_spkrs
。 - kwargs (可選) — 剩餘的關鍵字引數字典,將傳遞給 GenerationMixin.generate()。關鍵字引數分為兩種型別:
- 不帶字首,它們將作為
**kwargs
輸入給每個子模型的generate
方法,除了decoder_input_ids
,它只會透過文字元件傳遞。 - 帶 text_ 或 speech_ 字首,它們將分別作為文字模型和語音模型的
generate
方法的輸入。它優先於不帶字首的關鍵字。
這意味著您可以,例如,為其中一個生成指定生成策略,而不為另一個指定。
- 不帶字首,它們將作為
返回
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
- 如果
return_intermediate_token_ids
為 True,則返回SeamlessM4Tv2GenerationOutput
。 - 如果
return_intermediate_token_ids
為 False,則返回一個由形狀為(batch_size, sequence_length)
的波形和給出每個樣本長度的waveform_lengths
組成的元組。
生成翻譯的音訊波形。
此方法依次呼叫兩個不同子模型的 .generate
函式。您可以在兩個不同級別指定關鍵字引數:將傳遞給兩個模型的通用引數,或將傳遞給其中一個模型的字首引數。
例如,呼叫 .generate(input_ids, num_beams=4, speech_do_sample=True)
將依次在文字模型上執行束搜尋解碼,並在語音模型上執行多項式束搜尋取樣。
有關生成策略和程式碼示例的概述,請檢視以下指南。
SeamlessM4Tv2ForSpeechToSpeech
class transformers.SeamlessM4Tv2ForSpeechToSpeech
< source >( config )
引數
- config (SeamlessM4Tv2ForSpeechToSpeech) — 模型的配置類,包含模型的所有引數。使用配置檔案進行初始化不會載入與模型相關的權重,只加載配置。檢視 from_pretrained() 方法以載入模型權重。
用於S2ST的語音到語音SeamlessM4Tv2模型轉換器。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其用作常規 PyTorch 模組,並參考 PyTorch 文件中與通用用法和行為相關的所有事項。
生成
< source >( input_features: typing.Optional[torch.Tensor] = None return_intermediate_token_ids: typing.Optional[bool] = None tgt_lang: typing.Optional[str] = None speaker_id: typing.Optional[int] = 0 **kwargs ) → Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
引數
- input_features (形狀為
(batch_size, sequence_length, num_banks)
的torch.FloatTensor
) — 輸入音訊特徵。這應該由 SeamlessM4TFeatureExtractor 類或 SeamlessM4TProcessor 類返回。有關詳細資訊,請參閱 SeamlessM4TFeatureExtractor.call()。 - return_intermediate_token_ids (
bool
, 可選) — 如果為True
,則還會返回中間生成的文字和單元令牌。如果您還想獲取翻譯音訊旁邊的文字,請設定為True
。 - tgt_lang (
str
, 可選) — 用於翻譯的目標語言。 - speaker_id (
int
, 可選,預設為 0) — 用於語音合成的說話人ID。必須小於config.vocoder_num_spkrs
。 - kwargs (可選) — 其餘的關鍵字引數字典,將傳遞給 GenerationMixin.generate()。關鍵字引數有兩種型別:
- 無字首的引數將被作為
**kwargs
輸入到每個子模型的generate
方法中,除了decoder_input_ids
只會傳遞給文字元件。 - 帶有 text_ 或 speech_ 字首的引數將分別作為文字模型和語音模型的
generate
方法的輸入。它優先於沒有字首的關鍵字。
這意味著您可以例如為一種生成指定生成策略,而另一種則不指定。
- 無字首的引數將被作為
返回
Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]
- 如果
return_intermediate_token_ids
為 True,則返回SeamlessM4Tv2GenerationOutput
。 - 如果
return_intermediate_token_ids
為 False,則返回一個由形狀為(batch_size, sequence_length)
的波形和給出每個樣本長度的waveform_lengths
組成的元組。
生成翻譯的音訊波形。
此方法依次呼叫兩個不同子模型的 .generate
函式。您可以在兩個不同級別指定關鍵字引數:將傳遞給兩個模型的通用引數,或將傳遞給其中一個模型的字首引數。
例如,呼叫 .generate(input_features, num_beams=4, speech_do_sample=True)
將依次在文字模型上執行波束搜尋解碼,在語音模型上執行多項式波束搜尋取樣。
有關生成策略和程式碼示例的概述,請檢視以下指南。
SeamlessM4Tv2ForTextToText
class transformers.SeamlessM4Tv2ForTextToText
< source >( config: SeamlessM4Tv2Config )
引數
- config (SeamlessM4Tv2Config) — 模型的配置類,包含模型的所有引數。使用配置檔案進行初始化不會載入與模型相關的權重,只加載配置。檢視 from_pretrained() 方法以載入模型權重。
用於 T2TT 的文字到文字 SeamlessM4Tv2 模型轉換器。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其用作常規 PyTorch 模組,並參考 PyTorch 文件中與通用用法和行為相關的所有事項。
forward
< 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]]
, 可選) — 預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於加速順序解碼。這通常包括模型在解碼上一階段返回的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)
的 2 個張量)。這也被稱為舊版快取格式。
模型將輸出與輸入相同的快取格式。如果未傳遞
past_key_values
,則將返回舊版快取格式。如果使用
past_key_values
,使用者可以選擇只輸入形狀為(batch_size, 1)
的最後一個input_ids
(那些沒有將其過去的鍵值狀態提供給此模型的),而不是形狀為(batch_size, sequence_length)
的所有input_ids
。 - 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
時),包含根據配置 (SeamlessM4Tv2Config) 和輸入的不同元素。
-
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 cache 指南。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
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 之後,用於計算自注意力頭中的加權平均。
SeamlessM4Tv2ForTextToText 的 forward 方法,覆蓋了 __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() 且與generation_config
屬性匹配的**kwargs
將覆蓋它們。如果未提供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)
。
有關生成策略和程式碼示例的概述,請檢視以下指南。
SeamlessM4Tv2ForSpeechToText
class transformers.SeamlessM4Tv2ForSpeechToText
< source >( config: SeamlessM4Tv2Config )
引數
- config (SeamlessM4Tv2Config) — 模型的配置類,包含模型的所有引數。使用配置檔案進行初始化不會載入與模型相關的權重,只加載配置。檢視 from_pretrained() 方法以載入模型權重。
用於 S2TT 的語音到文字 SeamlessM4Tv2 模型轉換器。
此模型繼承自 PreTrainedModel。請檢視超類文件,瞭解庫為其所有模型實現的通用方法(例如下載或儲存、調整輸入嵌入大小、修剪頭部等)。
此模型也是 PyTorch torch.nn.Module 子類。將其用作常規 PyTorch 模組,並參考 PyTorch 文件中與通用用法和行為相關的所有事項。
forward
< 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 (
torch.FloatTensor
,形狀為(batch_size, sequence_length, num_banks)
) — 輸入音訊特徵。這應由 SeamlessM4TFeatureExtractor 類或 SeamlessM4TProcessor 類返回。有關詳細資訊,請參閱 SeamlessM4TFeatureExtractor.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 快取指南;
- 長度為
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
。 - 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
時),包含根據配置 (SeamlessM4Tv2Config) 和輸入的不同元素。
-
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 cache 指南。包含預先計算的隱藏狀態(自注意力塊和交叉注意力塊中的鍵和值),可用於(參見
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 之後,用於計算自注意力頭中的加權平均。
SeamlessM4Tv2ForSpeechToText 的 forward 方法重寫了 __call__
特殊方法。
雖然前向傳遞的配方需要在此函式中定義,但在此之後應呼叫 Module
例項,而不是此函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoProcessor, SeamlessM4Tv2ForSpeechToText
>>> 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("""")
>>> model = SeamlessM4Tv2ForSpeechToText.from_pretrained("""")
>>> # 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
, 可選) — 用作生成呼叫基礎引數的生成配置。傳遞給生成與generation_config
屬性匹配的**kwargs
將覆蓋它們。如果未提供generation_config
,將使用預設值,其載入優先順序如下:1) 如果存在,從generation_config.json
模型檔案載入;2) 從模型配置載入。請注意,未指定的引數將繼承 GenerationConfig 的預設值,應查閱其文件以引數化生成。 - logits_processor (
LogitsProcessorList
, 可選) — 補充從引數和生成配置構建的預設 logits 處理器的自定義 logits 處理器。如果傳遞的 logit 處理器已使用引數或生成配置建立,則會丟擲錯誤。此功能適用於高階使用者。 - 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)
。
有關生成策略和程式碼示例的概述,請檢視以下指南。
SeamlessM4Tv2Config
class transformers.SeamlessM4Tv2Config
< 源 >( vocab_size = 256102 t2u_vocab_size = 10082 char_vocab_size = 10943 hidden_size = 1024 initializer_range = 0.02 layer_norm_eps = 1e-05 use_cache = True max_position_embeddings = 4096 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 adaptor_kernel_size = 8 adaptor_stride = 8 adaptor_dropout = 0.1 num_adapter_layers = 1 position_embeddings_type = 'relative_key' conv_depthwise_kernel_size = 31 left_max_position_embeddings = 64 right_max_position_embeddings = 8 speech_encoder_chunk_size = 20000 speech_encoder_left_chunk_num = 128 t2u_bos_token_id = 0 t2u_pad_token_id = 1 t2u_eos_token_id = 2 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 = 4096 t2u_variance_predictor_embed_dim = 1024 t2u_variance_predictor_hidden_dim = 256 t2u_variance_predictor_kernel_size = 3 t2u_variance_pred_dropout = 0.5 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) — SeamlessM4Tv2 模型文字模態的詞彙大小。定義了呼叫 ~SeamlessM4Tv2Model、~SeamlessM4Tv2ForTextToSpeech 或 ~SeamlessM4Tv2ForTextToText 時傳遞的inputs_ids
可以表示的不同令牌的數量。 - t2u_vocab_size (
int
, 可選, 預設為 10082) — SeamlessM4Tv2 模型的單元詞彙大小。定義了呼叫 ~SeamlessM4Tv2Model、~SeamlessM4Tv2ForSpeechToSpeech 或 ~SeamlessM4Tv2ForTextToSpeech 的 Text-To-Units 子模型時傳遞的inputs_ids
可以表示的不同“單元令牌”的數量。 - char_vocab_size (
int
, 可選, 預設為 10943) — SeamlessM4Tv2 模型的字元詞彙大小。定義了呼叫 ~SeamlessM4Tv2Model、~SeamlessM4Tv2ForSpeechToSpeech 或 ~SeamlessM4Tv2ForTextToSpeech 的 Text-To-Units 子模型時傳遞的char_inputs_ids
可以表示的不同字元令牌的數量。
子模型之間共享的引數
- hidden_size (
int
, 可選, 預設為 1024) — 架構中“中間”層的維度。 - initializer_range (
float
, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的截斷正態初始化器的標準差。 - layer_norm_eps (
float
, 可選, 預設為 1e-05) — 層歸一化層使用的 epsilon 值。 - use_cache (
bool
, 可選, 預設為True
) — 模型是否應返回最後一個鍵/值注意力(並非所有模型都使用此功能)。 - max_position_embeddings (
int
, 可選, 預設為 4096) — 此模型文字編碼器和解碼器可能使用的最大序列長度。通常為了以防萬一設定為較大值(例如,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
, optional, defaults to 0.1) — 所有注意力層的 dropout 機率。 - activation_dropout (
float
, optional, defaults to 0.0) — 模型中所有啟用層的 dropout 機率。 - scale_embedding (
bool
, optional, defaults toTrue
) — 透過除以 sqrt(d_model) 來縮放嵌入。
文字編碼器和文字解碼器特定引數
- encoder_layers (
int
, optional, defaults to 24) — Transformer 文字編碼器中的隱藏層數量。 - encoder_ffn_dim (
int
, optional, defaults to 8192) — Transformer 文字編碼器中“中間”(即前饋)層的維度。 - encoder_attention_heads (
int
, optional, defaults to 16) — Transformer 文字編碼器中每個注意力層的注意力頭數量。 - decoder_layers (
int
, optional, defaults to 24) — Transformer 文字解碼器中的隱藏層數量。 - decoder_ffn_dim (
int
, optional, defaults to 8192) — Transformer 文字解碼器中“中間”(即前饋)層的維度。 - decoder_attention_heads (
int
, optional, defaults to 16) — Transformer 文字解碼器中每個注意力層的注意力頭數量。 - decoder_start_token_id (
int
, optional, defaults to 3) — 如果編碼器-解碼器模型以與 bos 不同的標記開始解碼,則該標記的 ID。僅應用於文字解碼器。 - max_new_tokens (
int
, optional, defaults to 256) — 要生成的最大文字標記數量,忽略提示中的標記數量。 - pad_token_id (
int
, optional, defaults to 0) — 填充文字標記的 ID。僅應用於文字解碼器模型。 - bos_token_id (
int
, optional, defaults to 2) — 流開始文字標記的 ID。僅應用於文字解碼器模型。 - eos_token_id (
int
, optional, defaults to 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
或function
, 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 論文] (see https://huggingface.co/papers/1909.11556)。 - feature_projection_input_dim (
int
, optional, defaults to 160) — 語音編碼器輸入特徵投影的輸入維度,即使用 SeamlessM4TFeatureExtractor 處理輸入音訊後的維度。 - 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_key"
) — 可指定為relative_key
。如果保留為None
,則不應用相對位置嵌入。僅應用於語音編碼器。有關"relative_key"
的更多資訊,請參閱 Self-Attention with Relative Position Representations (Shaw et al.)。 - conv_depthwise_kernel_size (
int
, optional, defaults to 31) — Conformer 塊中卷積深度 1D 層的核心大小。僅應用於語音編碼器。 - left_max_position_embeddings (
int
, optional, defaults to 64) — 相對位置的左裁剪值。 - right_max_position_embeddings (
int
, optional, defaults to 8) — 相對位置的右裁剪值。 - speech_encoder_chunk_size (
int
, optional, defaults to 20000) — 每個注意力塊的大小。 - speech_encoder_left_chunk_num (
int
, optional, defaults to 128) — 允許向前看的左側塊數量。
文字到單元 (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_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 4096) — 此模型文字到單元元件可能使用的最大序列長度。通常為了以防萬一設定為較大值(例如 512、1024 或 2048)。 - t2u_variance_predictor_embed_dim (
int
, optional, defaults to 1024) — 文字到單元持續時間預測器的投影維度。 - t2u_variance_predictor_hidden_dim (
int
, optional, defaults to 256) — 文字到單元持續時間預測器的內部維度。 - t2u_variance_predictor_kernel_size (
int
, optional, defaults to 3) — 文字到單元持續時間預測器卷積層的核心大小。 - t2u_variance_pred_dropout (
float
, optional, defaults to 0.5) — 文字到單元持續時間預測器的 dropout 機率。Hifi-Gan Vocoder 特定引數
- sampling_rate (
int
, optional, defaults to 16000) — 輸出音訊的取樣率,以赫茲 (Hz) 表示。 - upsample_initial_channel (
int
, optional, defaults to 512) — hifi-gan 上取樣網路的輸入通道數。僅適用於聲碼器。 - upsample_rates (
tuple[int]
或list[int]
, optional, defaults to[5, 4, 4, 2, 2]
) — 定義聲碼器上取樣網路中每個 1D 卷積層步幅的整數元組。upsample_rates 的長度定義了卷積層的數量,並且必須與 upsample_kernel_sizes 的長度匹配。僅適用於聲碼器。 - upsample_kernel_sizes (
tuple[int]
或list[int]
, optional, defaults to[11, 8, 8, 4, 4]
) — 定義聲碼器上取樣網路中每個 1D 卷積層核心大小的整數元組。upsample_kernel_sizes 的長度定義了卷積層的數量,並且必須與 upsample_rates 的長度匹配。僅適用於聲碼器。 - resblock_kernel_sizes (
tuple[int]
或list[int]
, optional, defaults to[3, 7, 11]
) — 定義多接收場融合 (MRF) 模組中聲碼器 1D 卷積層核心大小的整數元組。僅適用於聲碼器。 - resblock_dilation_sizes (
tuple[tuple[int]]
或list[list[int]]
, optional, defaults to[[1, 3, 5], [1, 3, 5], [1, 3, 5]]
) — 定義多接收場融合 (MRF) 模組中聲碼器擴張 1D 卷積層擴張率的巢狀整數元組。僅適用於聲碼器。 - leaky_relu_slope (
float
, optional, defaults to 0.1) — 聲碼器中 Leaky ReLU 啟用函式使用的負斜率角度。僅適用於聲碼器。 - unit_hifi_gan_vocab_size (
int
, optional, defaults to 10000) — SeamlessM4Tv2 聲碼器的詞彙量。定義了呼叫 ~SeamlessM4Tv2Model、~SeamlessM4Tv2ForSpeechToSpeech 或 ~SeamlessM4Tv2ForTextToSpeech 的聲碼器時,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 偏移此數量以考慮符號標記。僅適用於聲碼器。
這是用於儲存 ~SeamlessM4Tv2Model 配置的配置類。它用於根據指定的引數例項化 SeamlessM4Tv2 模型,定義模型架構。使用預設值例項化配置將產生與 SeamlessM4Tv2 "" 架構相似的配置。
配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關更多資訊,請閱讀 PretrainedConfig 的文件。
>>> from transformers import SeamlessM4Tv2Model, SeamlessM4Tv2Config
>>> # Initializing a SeamlessM4Tv2 "" style configuration
>>> configuration = SeamlessM4Tv2Config()
>>> # Initializing a model from the "" style configuration
>>> model = SeamlessM4Tv2Model(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config