Transformers 文件
M-CTC-T
並獲得增強的文件體驗
開始使用
M-CTC-T
該模型僅處於維護模式,因此我們不會接受任何更改其程式碼的新 PR。
如果在執行此模型時遇到任何問題,請重新安裝支援此模型的最後一個版本:v4.30.0。您可以透過執行以下命令進行安裝:`pip install -U transformers==4.30.0`。
概述
M-CTC-T 模型由 Loren Lugosch、Tatiana Likhomanenko、Gabriel Synnaeve 和 Ronan Collobert 在 《用於大規模多語言語音識別的偽標籤》中提出。該模型是一個 1B 引數的 Transformer 編碼器,具有一個 CTC 頭,用於 8065 個字元標籤,以及一個語言識別頭,用於 60 個語言 ID 標籤。它在 Common Voice(版本 6.1,2020 年 12 月釋出)和 VoxPopuli 上進行訓練。在 Common Voice 和 VoxPopuli 上訓練之後,模型僅在 Common Voice 上進行訓練。標籤是未標準化的字元級轉錄(未移除標點符號和大小寫)。模型將 16Khz 音訊訊號中的 Mel 濾波器組特徵作為輸入。
論文摘要如下:
透過偽標籤進行的半監督學習已成為最先進單語語音識別系統的主要方法。在這項工作中,我們將偽標籤擴充套件到包含 60 種語言的大規模多語言語音識別。我們提出了一種簡單的偽標籤方案,即使對於低資源語言也效果很好:訓練一個監督多語言模型,使用目標語言的半監督學習對其進行微調,為該語言生成偽標籤,然後使用所有語言的偽標籤訓練最終模型,無論是從頭開始還是透過微調。在 Common Voice 標記資料集和 VoxPopuli 未標記資料集上的實驗表明,我們的方案可以生成一個在許多語言上表現更好並且也能很好地遷移到 LibriSpeech 的模型。
此模型由 cwkeam 貢獻。原始程式碼可以在 此處 找到。
使用技巧
該模型的 PyTorch 版本僅在 torch 1.9 及更高版本中可用。
資源
MCTCTConfig
class transformers.MCTCTConfig
< 來源 >( 詞彙表大小 = 8065 隱藏層大小 = 1536 隱藏層數量 = 36 中間層大小 = 6144 注意力頭數量 = 4 注意力頭維度 = 384 最大位置嵌入 = 920 層歸一化epsilon = 1e-05 層丟棄 = 0.3 隱藏層啟用函式 = 'relu' 初始化範圍 = 0.02 隱藏層dropout機率 = 0.3 注意力機率dropout機率 = 0.3 填充token ID = 1 起始token ID = 0 結束token ID = 2 卷積GLU維度 = 1 卷積dropout = 0.3 卷積層數量 = 1 卷積核 = (7,) 卷積步長 = (3,) 每通道輸入特徵 = 80 輸入通道數 = 1 卷積通道數 = None CTC損失縮減 = 'sum' CTC零無窮大 = False **kwargs )
引數
- vocab_size (
int
, 可選, 預設為 8065) — M-CTC-T 模型的詞彙表大小。定義了在呼叫 MCTCTModel 時透過inputs_ids
表示的不同 token 的數量。 - hidden_size (
int
, 可選, 預設為 1536) — 編碼器層和池化層的維度。 - num_hidden_layers (
int
, 可選, 預設為 36) — Transformer 編碼器中的隱藏層數量。 - intermediate_size (
int
, 可選, 預設為 6144) — Transformer 編碼器中“中間”(即,前饋)層的維度。 - num_attention_heads (
int
, 可選, 預設為 4) — Transformer 編碼器中每個注意力層的注意力頭數量。 - attention_head_dim (
int
, 可選, 預設為 384) — Transformer 編碼器中每個注意力層每個注意力頭的維度。 - max_position_embeddings (
int
, 可選, 預設為 920) — 該模型可能使用的最大序列長度(在對數梅爾頻譜圖提取之後)。 - layer_norm_eps (
float
, 可選, 預設為 1e-05) — 層歸一化層使用的 epsilon 值。 - layerdrop (
float
, 可選, 預設為 0.3) — 訓練期間丟棄編碼器層的機率。預設值 0.3 用於原始實現。 - hidden_act (
str
或function
, 可選, 預設為"relu"
) — 編碼器和池化器中的非線性啟用函式(函式或字串)。如果是字串,支援"gelu"
、"relu"
、"selu"
和"gelu_new"
。 - initializer_range (
float
, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的 truncated_normal_initializer 的標準差。 - hidden_dropout_prob (
float
, 可選, 預設為 0.3) — 嵌入、編碼器和池化器中所有全連線層的 dropout 機率。 - attention_probs_dropout_prob (
float
, 可選, 預設為 0.3) — 注意力機率的 dropout 比率。 - pad_token_id (
int
, 可選, 預設為 1) — 填充 token 的分詞器索引。 - bos_token_id (
int
, 可選, 預設為 0) — 起始 token 的分詞器索引。 - eos_token_id (
int
, 可選, 預設為 2) — 結束 token 的分詞器索引。 - conv_glu_dim (
int
, 可選, 預設為 1) — 在其中應用 GLU 的Conv1dSubsampler
層輸出的維度。儘管原始 Flashlight 程式碼使用 2,但由於轉置差異,此處適配為 1。 - conv_dropout (
int
, 可選, 預設為 0.3) — 訓練期間隨機丟棄Conv1dSubsampler
層的機率。 - num_conv_layers (
int
, 可選, 預設為 1) — 應用 Transformer 編碼器層之前的卷積層數量。 - conv_kernel (
Sequence[int]
, 可選, 預設為(7,)
) — 應用 Transformer 層之前的一維卷積的核大小。len(conv_kernel)
必須等於num_conv_layers
。 - conv_stride (
Sequence[int]
, 可選, 預設為(3,)
) — 應用 Transformer 層之前的一維卷積的步長。len(conv_stride)
必須等於num_conv_layers
。 - input_feat_per_channel (
int
, 可選, 預設為 80) — Conv1D 層輸入的通道特徵維度。 - input_channels (
int
, 可選, 預設為 1) — Conv1D 層輸入的輸入通道數。 - conv_channels (
list[int]
, 可選) — 中間 Conv1D 層的通道大小。 - ctc_loss_reduction (
str
, 可選, 預設為"sum"
) — 指定應用於torch.nn.CTCLoss
輸出的縮減型別。僅在訓練 MCTCTForCTC 例項時相關。 - ctc_zero_infinity (
bool
, 可選, 預設為False
) — 是否將無窮大損失和torch.nn.CTCLoss
相關梯度歸零。無窮大損失主要在輸入太短無法與目標對齊時發生。僅在訓練 MCTCTForCTC 例項時相關。
這是儲存 MCTCTModel 配置的配置類。它用於根據指定的引數例項化一個 M-CTC-T 模型,定義模型架構。使用預設值例項化配置將產生與 M-CTC-T speechbrain/m-ctc-t-large 架構類似的配置。
配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關這些方法的更多資訊,請參閱 PretrainedConfig 的文件。
示例
>>> from transformers import MCTCTConfig, MCTCTModel
>>> # Initializing a M-CTC-T mctct-large style configuration
>>> configuration = MCTCTConfig()
>>> # Initializing a model (with random weights) from the mctct-large style configuration
>>> model = MCTCTModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
MCTCTFeatureExtractor
class transformers.MCTCTFeatureExtractor
< 來源 >( 特徵大小 = 80 取樣率 = 16000 填充值 = 0.0 步長 = 10 窗長 = 25 窗函式 = 'hamming_window' 幀訊號縮放 = 32768.0 預加重係數 = 0.97 梅爾底值 = 1.0 歸一化均值 = True 歸一化方差 = True 返回注意力掩碼 = False **kwargs )
引數
- feature_size (
int
, 預設為 80) — 提取特徵的特徵維度。這是 mel 頻率的數量 - sampling_rate (
int
, 預設為 16000) — 音訊檔案數字化的取樣率,以赫茲 (Hz) 表示。 - padding_value (
float
, 預設為 0.0) — 用於填充值的數值。 - hop_length (
int
, 預設為 10) — 視窗間的音訊樣本數量。在許多論文中也稱為“移位”。 - win_length (
int
, 預設為 25) — 每幀的毫秒數 - win_function (
str
, 預設為"hamming_window"
) — 用於加窗的窗函式名稱,必須透過torch.{win_function}
訪問 - frame_signal_scale (
float
, 預設為 32768.0) — 在應用 DFT 之前建立幀時乘以的常數。 - preemphasis_coeff (
float
, 預設為 0.97) — 在 DFT 之前應用預加重時乘以的常數。 - mel_floor (
float
預設為 1.0) — 梅爾頻率底部的最小值。 - normalize_means (
bool
, 可選, 預設為True
) — 是否對提取的特徵進行零均值歸一化。 - normalize_vars (
bool
, 可選, 預設為True
) — 是否對提取的特徵進行單位方差歸一化。
構建一個 M-CTC-T 特徵提取器。
此特徵提取器繼承自 SequenceFeatureExtractor,其中包含了大部分主要方法。使用者應參考此超類以獲取有關這些方法的更多資訊。此程式碼已從 Flashlight 的 C++ 程式碼改編而來。有關實現的更多資訊,可以參考此 筆記本,它一步一步地向用戶展示了實現過程。
__call__
< 來源 >( raw_speech: typing.Union[numpy.ndarray, list[float], list[numpy.ndarray], list[list[float]]] 填充: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = False 最大長度: typing.Optional[int] = None 截斷: bool = False 填充到倍數: typing.Optional[int] = None 返回注意力掩碼: typing.Optional[bool] = None 返回張量: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None 取樣率: typing.Optional[int] = None **kwargs )
引數
- raw_speech (
torch.Tensor
,np.ndarray
,list[float]
,list[torch.Tensor]
,list[np.ndarray]
,list[list[float]]
) — 要填充的序列或序列批次。每個序列可以是張量、Numpy 陣列、浮點值列表、張量列表、Numpy 陣列列表或浮點值列表的列表。必須是單聲道音訊,而不是立體聲,即每個時間步長一個浮點數。 - padding (
bool
,str
或 PaddingStrategy, 可選, 預設為False
) — 選擇一種策略來填充返回的序列(根據模型的填充側和填充索引),選項包括:True
或'longest'
:填充到批次中最長的序列(如果只提供一個序列,則不填充)。'max_length'
:填充到由引數max_length
指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。False
或'do_not_pad'
(預設):不填充(即可以輸出包含不同長度序列的批次)。
- max_length (
int
, 可選) — 返回列表的最大長度和可選的填充長度(見上文)。 - truncation (
bool
) — 啟用截斷,將長於 *max_length* 的輸入序列截斷到 *max_length*。 - pad_to_multiple_of (
int
, 可選) — 如果設定,將序列填充到所提供值的倍數。這對於在計算能力
>= 7.5
(Volta) 的 NVIDIA 硬體或 TPU 上啟用 Tensor Cores 特別有用,因為它們受益於序列長度是 128 的倍數。 - return_attention_mask (
bool
, 可選) — 是否返回注意力掩碼。如果保留預設值,將根據特定特徵提取器的預設值返回注意力掩碼。 - return_tensors (
str
或 TensorType, 可選) — 如果設定,將返回張量而不是 Python 整數列表。可接受的值為:'tf'
:返回 TensorFlowtf.constant
物件。'pt'
:返回 PyTorchtorch.Tensor
物件。'np'
:返回 Numpynp.ndarray
物件。
- sampling_rate (
int
, 可選) —raw_speech
輸入的取樣率。強烈建議在轉發呼叫時傳入sampling_rate
以防止靜默錯誤。 - padding_value (
float
, 預設為 0.0) —
用於特徵化併為模型準備一個或多個序列的主要方法。它返回輸入音訊的對數梅爾譜圖,如同原始 Flashlight MFSC 特徵提取程式碼中實現的那樣。
MCTCTProcessor
class transformers.MCTCTProcessor
< source >( feature_extractor tokenizer )
引數
- feature_extractor (
MCTCTFeatureExtractor
) — MCTCTFeatureExtractor 的例項。特徵提取器是必需的輸入。 - tokenizer (
AutoTokenizer
) — AutoTokenizer 的例項。分詞器是必需的輸入。
構建一個 MCTCT 處理器,它將 MCTCT 特徵提取器和 MCTCT 分詞器封裝到一個處理器中。
MCTCTProcessor 提供了 MCTCTFeatureExtractor 和 AutoTokenizer 的所有功能。更多資訊請參閱 call() 和 decode()。
在正常模式下使用時,此方法將其所有引數轉發給 MCTCTFeatureExtractor 的 call() 並返回其輸出。如果在 as_target_processor()
上下文中使用,此方法將其所有引數轉發給 AutoTokenizer 的 __call__()
。請參閱上述兩種方法的文件字串以獲取更多資訊。
from_pretrained
< source >( pretrained_model_name_or_path: typing.Union[str, os.PathLike] cache_dir: typing.Union[str, os.PathLike, NoneType] = None force_download: bool = False local_files_only: bool = False token: typing.Union[str, bool, NoneType] = None revision: str = 'main' **kwargs )
引數
- pretrained_model_name_or_path (
str
或os.PathLike
) — 這可以是以下之一:- 一個字串,託管在 huggingface.co 模型倉庫中的預訓練 feature_extractor 的 *模型 ID*。
- 包含使用 save_pretrained() 方法儲存的特徵提取器檔案的 *目錄* 路徑,例如,
./my_model_directory/
。 - 儲存的特徵提取器 JSON *檔案* 的路徑或 URL,例如,
./my_model_directory/preprocessor_config.json
。
- **kwargs — 傳遞給 from_pretrained() 和
~tokenization_utils_base.PreTrainedTokenizer.from_pretrained
的其他關鍵字引數。
例項化與預訓練模型關聯的處理器。
此類方法僅呼叫特徵提取器 from_pretrained()、影像處理器 ImageProcessingMixin 和分詞器 ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained
方法。請參閱上述方法的文件字串以獲取更多資訊。
save_pretrained
< source >( save_directory push_to_hub: bool = False **kwargs )
引數
- save_directory (
str
或os.PathLike
) — 特徵提取器 JSON 檔案和分詞器檔案將儲存的目錄(如果目錄不存在,則會建立)。 - push_to_hub (
bool
, 可選, 預設為False
) — 是否在儲存模型後將其推送到 Hugging Face 模型中心。您可以使用repo_id
指定要推送到的倉庫(預設為您名稱空間中save_directory
的名稱)。 - kwargs (
dict[str, Any]
, 可選) — 傳遞給 push_to_hub() 方法的其他關鍵字引數。
將此處理器(特徵提取器、分詞器…)的屬性儲存到指定目錄中,以便可以使用 from_pretrained() 方法重新載入。
此類別方法僅呼叫 save_pretrained() 和 save_pretrained()。請參閱上述方法的文件字串以獲取更多資訊。
此方法將其所有引數轉發給 AutoTokenizer 的 batch_decode()。有關詳細資訊,請參閱此方法的文件字串。
此方法將其所有引數轉發給 AutoTokenizer 的 decode()。有關詳細資訊,請參閱此方法的文件字串。
MCTCTModel
class transformers.MCTCTModel
< source >( config )
引數
- config (MCTCTConfig) — 包含模型所有引數的模型配置類。使用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法以載入模型權重。
裸 MCTCT 模型 transformer 輸出原始隱藏狀態,頂部沒有任何特定頭部。該模型是 PyTorch torch.nn.Module 子類。將其用作常規 PyTorch 模組,並參閱 PyTorch 文件以獲取所有與一般用法和行為相關的事項。
forward
< source >( input_features: Tensor attention_mask: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.modeling_outputs.BaseModelOutput 或 tuple(torch.FloatTensor)
引數
- input_features (
torch.LongTensor
, 形狀為(batch_size, sequence_length)
) — 詞彙表中輸入序列 token 的索引。可以使用 Wav2Vec2CTCTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
, 形狀為(batch_size, sequence_length)
, 可選) — 避免對填充 token 索引執行注意力操作的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示 token 未被掩碼,
- 0 表示 token 被掩碼。
- head_mask (
torch.FloatTensor
, 形狀為(num_heads,)
或(num_layers, num_heads)
, 可選) — 遮蔽自注意力模組選定頭部的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示頭部未被遮蔽,
- 0 表示頭部被遮蔽。
- output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通元組。
返回
transformers.modeling_outputs.BaseModelOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.BaseModelOutput 或一個 torch.FloatTensor
元組(如果傳遞了 return_dict=False
或 config.return_dict=False
),包含根據配置 (MCTCTConfig) 和輸入的不同元素。
-
last_hidden_state (
torch.FloatTensor
, 形狀為(batch_size, sequence_length, hidden_size)
) — 模型最後一層輸出的隱藏狀態序列。 -
hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(一個用於嵌入層的輸出,如果模型有嵌入層,+ 每個層的輸出一個),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
-
attentions (
tuple(torch.FloatTensor)
, 可選, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
MCTCTModel 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳遞的實現需要在該函式中定義,但隨後應呼叫 Module
例項而不是該函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoProcessor, MCTCTModel
>>> 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("speechbrain/m-ctc-t-large")
>>> model = MCTCTModel.from_pretrained("speechbrain/m-ctc-t-large")
>>> # 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]
[1, 195, 1536]
>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids
>>> # compute loss
>>> loss = model(**inputs).loss
MCTCTForCTC
class transformers.MCTCTForCTC
< source >( config )
引數
- config (MCTCTConfig) — 包含模型所有引數的模型配置類。使用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法以載入模型權重。
帶 language modeling
頭部用於連線主義時間分類(CTC)的 MCTCT 模型。該模型是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參閱 PyTorch 文件以獲取所有與一般用法和行為相關的事項。
forward
< source >( input_features: Tensor attention_mask: typing.Optional[torch.Tensor] = None head_mask: typing.Optional[torch.Tensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None labels: typing.Optional[torch.LongTensor] = None ) → transformers.modeling_outputs.CausalLMOutput 或 tuple(torch.FloatTensor)
引數
- input_features (
torch.LongTensor
, 形狀為({0})
) — 詞彙表中輸入序列 token 的索引。可以使用 Wav2Vec2CTCTokenizer 獲取索引。有關詳細資訊,請參閱 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
, 形狀為({0})
, 可選) — 避免對填充 token 索引執行注意力操作的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示 token 未被掩碼,
- 0 表示 token 被掩碼。
- head_mask (
torch.FloatTensor
, 形狀為(num_heads,)
或(num_layers, num_heads)
, 可選) — 遮蔽自注意力模組選定頭部的掩碼。掩碼值選擇在[0, 1]
之間:- 1 表示頭部未被遮蔽,
- 0 表示頭部被遮蔽。
- output_attentions (
bool
, 可選) — 是否返回所有注意力層的注意力張量。有關詳細資訊,請參閱返回張量下的attentions
。 - output_hidden_states (
bool
, 可選) — 是否返回所有層的隱藏狀態。有關詳細資訊,請參閱返回張量下的hidden_states
。 - return_dict (
bool
, 可選) — 是否返回 ModelOutput 而不是普通元組。 - labels (
torch.LongTensor
, 形狀為(batch_size, target_length)
, 可選) — 用於連線主義時間分類的標籤。請注意,target_length
必須小於或等於輸出 logits 的序列長度。索引選擇在[-100, 0, ..., config.vocab_size - 1]
之間。所有設定為-100
的標籤都會被忽略(遮蔽),損失僅針對[0, ..., config.vocab_size - 1]
中的標籤計算。
返回
transformers.modeling_outputs.CausalLMOutput 或 tuple(torch.FloatTensor)
一個 transformers.modeling_outputs.CausalLMOutput 或一個 torch.FloatTensor
元組(如果傳遞了 return_dict=False
或 config.return_dict=False
),包含根據配置 (MCTCTConfig) 和輸入的不同元素。
-
loss (
torch.FloatTensor
形狀為(1,)
,可選,當提供labels
時返回) — 語言建模損失(用於下一個 token 預測)。 -
logits (形狀為
(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
) — 語言建模頭部的預測分數(SoftMax 之前的每個詞彙標記的分數)。 -
hidden_states (
tuple(torch.FloatTensor)
, 可選, 當傳遞output_hidden_states=True
或config.output_hidden_states=True
時返回) —torch.FloatTensor
元組(一個用於嵌入層的輸出,如果模型有嵌入層,+ 每個層的輸出一個),形狀為(batch_size, sequence_length, hidden_size)
。模型在每個層輸出的隱藏狀態以及可選的初始嵌入輸出。
-
attentions (
tuple(torch.FloatTensor)
, 可選, 當傳遞output_attentions=True
或config.output_attentions=True
時返回) —torch.FloatTensor
元組(每個層一個),形狀為(batch_size, num_heads, sequence_length, sequence_length)
。注意力 softmax 後的注意力權重,用於計算自注意力頭中的加權平均值。
MCTCTForCTC 的前向方法,覆蓋了 __call__
特殊方法。
儘管前向傳遞的實現需要在該函式中定義,但隨後應呼叫 Module
例項而不是該函式,因為前者負責執行預處理和後處理步驟,而後者則默默地忽略它們。
示例
>>> from transformers import AutoProcessor, MCTCTForCTC
>>> 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("speechbrain/m-ctc-t-large")
>>> model = MCTCTForCTC.from_pretrained("speechbrain/m-ctc-t-large")
>>> # 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]
"Mr. Quilter is the apostle of the middle classes, and we're glad to welcome his gospel."
>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids
>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
1885.65