# Speech2Text

## Tổng quan

Mô hình Speech2Text được đề xuất trong [fairseq S2T: Fast Speech-to-Text Modeling with fairseq](https://huggingface.co/papers/2010.05171) bởi Changhan Wang, Yun Tang, Xutai Ma, Anne Wu, Dmytro Okhonko, Juan Pino. Đây là mô hình seq2seq (encoder-decoder) dựa trên transformer, được thiết kế cho Nhận dạng giọng nói tự động (ASR) và Dịch giọng nói (ST) theo phương pháp end-to-end. Mô hình sử dụng bộ giảm mẫu tích chập (convolutional downsampler) để giảm độ dài của đầu vào giọng nói đi 3/4 trước khi chúng được đưa vào encoder. Mô hình được huấn luyện bằng tổn thất entropy chéo tự hồi quy (autoregressive cross-entropy loss) tiêu chuẩn và tạo ra các bản ghi âm/bản dịch một cách tự hồi quy. Speech2Text đã được tinh chỉnh (fine-tuned) trên một số bộ dữ liệu cho ASR và ST: [LibriSpeech](http://www.openslr.org/12), [CoVoST 2](https://github.com/facebookresearch/covost), [MuST-C](https://ict.fbk.eu/must-c/).

Mô hình này được đóng góp bởi [valhalla](https://huggingface.co/valhalla). Mã gốc có thể được tìm thấy [tại đây](https://github.com/pytorch/fairseq/tree/master/examples/speech_to_text).

## Suy luận

Speech2Text là một mô hình giọng nói nhận vào một tensor float chứa các đặc trưng log-mel filter-bank được trích xuất từ tín hiệu giọng nói. Đây là một mô hình seq2seq dựa trên transformer, do đó các bản ghi âm/bản dịch được tạo ra theo cách tự hồi quy. Phương thức `generate()` có thể được sử dụng để suy luận.

Lớp [Speech2TextFeatureExtractor](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextFeatureExtractor) chịu trách nhiệm trích xuất các đặc trưng log-mel filter-bank. [Speech2TextProcessor](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextProcessor) đóng gói [Speech2TextFeatureExtractor](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextFeatureExtractor) và [Speech2TextTokenizer](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextTokenizer) thành một thể duy nhất để vừa trích xuất các đặc trưng đầu vào vừa giải mã các id token dự đoán.

Bộ trích xuất đặc trưng phụ thuộc vào `torchaudio` và bộ phân từ phụ thuộc vào `sentencepiece` nên hãy chắc chắn cài đặt các gói đó trước khi chạy các ví dụ. Bạn có thể cài đặt chúng như các phụ thuộc giọng nói bổ sung bằng `pip install transformers"[speech, sentencepiece]"` hoặc cài đặt các gói riêng lẻ bằng `pip install torchaudio sentencepiece`. Ngoài ra, `torchaudio` yêu cầu phiên bản phát triển của gói [libsndfile](http://www.mega-nerd.com/libsndfile/), có thể cài đặt thông qua trình quản lý gói hệ thống. Trên Ubuntu, có thể cài đặt như sau: `apt install libsndfile1-dev`

- ASR và Dịch giọng nói

```python
from datasets import load_dataset

from transformers import Speech2TextForConditionalGeneration, Speech2TextProcessor

model = Speech2TextForConditionalGeneration.from_pretrained("facebook/s2t-small-librispeech-asr", device_map="auto")
processor = Speech2TextProcessor.from_pretrained("facebook/s2t-small-librispeech-asr")

ds = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")

inputs = processor(ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], return_tensors="pt").to(model.device)
generated_ids = model.generate(inputs["input_features"], attention_mask=inputs["attention_mask"])

transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)
transcription
['mister quilter is the apostle of the middle classes and we are glad to welcome his gospel']
```

- Dịch thuật giọng nói đa ngôn ngữ

  Đối với các mô hình dịch giọng nói đa ngôn ngữ, `eos_token_id` được dùng làm `decoder_start_token_id` và id của ngôn ngữ đích được ép buộc là token được sinh ra đầu tiên. Để ép buộc id của ngôn ngữ đích là token được sinh ra đầu tiên, hãy truyền tham số `forced_bos_token_id` vào phương thức `generate()`. Ví dụ dưới đây cho thấy cách dịch giọng nói tiếng Anh sang văn bản tiếng Pháp bằng checkpoint *facebook/s2t-medium-mustc-multilingual-st*.

```python
from datasets import load_dataset

from transformers import Speech2TextForConditionalGeneration, Speech2TextProcessor

model = Speech2TextForConditionalGeneration.from_pretrained("facebook/s2t-medium-mustc-multilingual-st", device_map="auto")
processor = Speech2TextProcessor.from_pretrained("facebook/s2t-medium-mustc-multilingual-st")

ds = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")

inputs = processor(ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], return_tensors="pt").to(model.device)
generated_ids = model.generate(
    inputs["input_features"],
    attention_mask=inputs["attention_mask"],
    forced_bos_token_id=processor.tokenizer.lang_code_to_id["fr"],
)

translation = processor.batch_decode(generated_ids, skip_special_tokens=True)
translation
["(Vidéo) Si M. Kilder est l'apossible des classes moyennes, et nous sommes heureux d'être accueillis dans son évangile."]
```

Xem [model hub](https://huggingface.co/models?filter=speech_to_text) để tìm các checkpoint Speech2Text.

## Speech2TextConfig[[transformers.Speech2TextConfig]]

#### transformers.Speech2TextConfig[[transformers.Speech2TextConfig]]

```python
transformers.Speech2TextConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, is_encoder_decoder: bool = True, vocab_size: int = 10000, encoder_layers: int = 12, encoder_ffn_dim: int = 2048, encoder_attention_heads: int = 4, decoder_layers: int = 6, decoder_ffn_dim: int = 2048, decoder_attention_heads: int = 4, encoder_layerdrop: float | int = 0.0, decoder_layerdrop: float | int = 0.0, use_cache: bool = True, activation_function: str = 'relu', d_model: int = 256, dropout: float | int = 0.1, attention_dropout: float | int = 0.0, activation_dropout: float | int = 0.0, init_std: float = 0.02, decoder_start_token_id: int = 2, scale_embedding: bool = True, pad_token_id: int | None = 1, bos_token_id: int | None = 0, eos_token_id: int | list[int] | None = 2, max_source_positions: int = 6000, max_target_positions: int = 1024, num_conv_layers: int = 2, conv_kernel_sizes: list[int] | tuple[int, ...] = (5, 5), conv_channels: int = 1024, input_feat_per_channel: int = 80, input_channels: int = 1, tie_word_embeddings: bool = True)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/speech_to_text/configuration_speech_to_text.py#L24)

**Tham số:**

is_encoder_decoder (`bool`, *tùy chọn*, mặc định là `True`) : Xác định xem mô hình có được sử dụng như một bộ mã hóa/giải mã hay không.

vocab_size (`int`, *tùy chọn*, mặc định là `10000`) : Kích thước từ vựng của mô hình. Xác định số lượng token khác nhau có thể được biểu diễn bởi `input_ids`.

encoder_layers (`int`, *tuỳ chọn*, mặc định là `12`) : Số lượng lớp ẩn trong bộ mã hóa Transformer. Sẽ sử dụng cùng giá trị với `num_layers` nếu không được đặt.

encoder_ffn_dim (`int`, *optional*, mặc định là `2048`) : Chiều của lớp "intermediate" (thường được gọi là feed-forward) trong encoder.

encoder_attention_heads (`int`, *tuỳ chọn*, mặc định là `4`) : Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ mã hóa Transformer.

decoder_layers (`int`, *tuỳ chọn*, mặc định là `6`) : Số lượng lớp ẩn trong bộ giải mã Transformer. Nếu không được đặt, giá trị này sẽ giống với `num_layers`.

decoder_ffn_dim (`int`, *tuỳ chọn*, mặc định là `2048`) : Độ lớn chiều của lớp "trung gian" (thường được gọi là lớp feed-forward) trong bộ giải mã.

decoder_attention_heads (`int`, *tuỳ chọn*, mặc định là `4`) : Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ giải mã Transformer.

encoder_layerdrop (`Union[float, int]`, *tùy chọn*, mặc định là `0.0`) : Xác suất LayerDrop cho encoder. Xem [bài báo LayerDrop](see https://huggingface.co/papers/1909.11556) để biết thêm chi tiết.

decoder_layerdrop (`Union[float, int]`, *tùy chọn*, mặc định là `0.0`) : Xác suất LayerDrop cho bộ giải mã. Xem [bài báo LayerDrop](see https://huggingface.co/papers/1909.11556) để biết thêm chi tiết.

use_cache (`bool`, *tùy chọn*, mặc định là `True`) : Xác định xem mô hình có nên trả về các chú ý key/values cuối cùng hay không (không được sử dụng bởi tất cả các mô hình). Chỉ liên quan nếu `config.is_decoder=True` hoặc khi mô hình là mô hình sinh chỉ có decoder.

activation_function (`str`, *tùy chọn*, mặc định là `relu`) : Hàm kích hoạt phi tuyến tính (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ, `"gelu"`, `"relu"`, `"silu"`, v.v.

d_model (`int`, *tuỳ chọn*, mặc định là `256`) : Kích thước của các lớp encoder và lớp pooler.

dropout (`Union[float, int]`, *tùy chọn*, mặc định là `0.1`) : Tỷ lệ cho tất cả các lớp dropout.

attention_dropout (`Union[float, int]`, *tùy chọn*, mặc định là `0.0`) : Tỷ lệ dropout cho các xác suất chú ý.

activation_dropout (`Union[float, int]`, *tùy chọn*, mặc định là `0.0`) : Tỷ lệ dropout cho các kích hoạt bên trong lớp liên kết đầy đủ.

init_std (`float`, *optional*, mặc định là `0.02`) : Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số.

decoder_start_token_id (`int`, *optional*, mặc định là `2`) : Nếu một mô hình encoder-decoder bắt đầu giải mã bằng một token khác với `bos`, đây là id của token đó.

scale_embedding (`bool`, *tùy chọn*, mặc định là `True`) : Có nên chia embeddings cho sqrt(d_model) để chuẩn hóa hay không.

pad_token_id (`int`, *tuỳ chọn*, mặc định là `1`) : Id của token được sử dụng để đệm (padding) trong từ vựng.

bos_token_id (`int`, *tuỳ chọn*, mặc định là `0`) : Id của token được dùng cho đầu luồng (beginning-of-stream) trong từ vựng.

eos_token_id (`Union[int, list[int]]`, *tùy chọn*, mặc định là `2`) : Id của token được sử dụng cho end-of-stream trong bảng từ vựng.

max_source_positions (`int`, *tuỳ chọn*, mặc định là 6000) : Độ dài tối đa của chuỗi các đặc trưng log-mel filter-bank mà mô hình này có thể được sử dụng.

max_target_positions (`int`, *tuỳ chọn*, mặc định là 1024) : Độ dài chuỗi tối đa mà mô hình này có thể được sử dụng. Thông thường, hãy đặt giá trị này ở mức lớn để phòng ngừa (ví dụ: 512 hoặc 1024 hoặc 2048).

num_conv_layers (`int`, *tuỳ chọn*, mặc định là 2) : Số lượng lớp tích chập 1D trong module tích chập.

conv_kernel_sizes (`tuple[int]`, *optional*, mặc định là `(5, 5)`) : Một tuple các số nguyên xác định kích thước kernel của từng lớp tích chập 1D trong module conv. Độ dài của `conv_kernel_sizes` phải khớp với `num_conv_layers`.

conv_channels (`int`, *optional*, mặc định là 1024) : Một số nguyên xác định số lượng kênh đầu ra của mỗi lớp tích chập, ngoại trừ lớp cuối cùng trong module tích chập.

input_feat_per_channel (`int`, *optional*, mặc định là 80) : Một số nguyên chỉ định kích thước của vector đặc trưng. Đây cũng là số chiều của các đặc trưng log-mel filter-bank.

input_channels (`int`, *tuỳ chọn*, mặc định là `1`) : Số lượng kênh đầu vào.

tie_word_embeddings (`bool`, *tùy chọn*, mặc định là `True`) : Có nên gắn kết các nhúng trọng số theo ánh xạ `tied_weights_keys` của mô hình hay không.

Đây là lớp cấu hình để lưu trữ cấu hình của một Speech2TextModel. Nó được sử dụng để khởi tạo một mô hình Speech To Text theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của [facebook/s2t-small-librispeech-asr](https://huggingface.co/facebook/s2t-small-librispeech-asr)

Các đối tượng cấu hình kế thừa từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ [PreTrainedConfig](/docs/transformers/main/vi/main_classes/configuration#transformers.PreTrainedConfig) để biết thêm thông tin.

Ví dụ:

```python
>>> from transformers import Speech2TextConfig, Speech2TextModel

>>> # Initializing a Speech2Text s2t_transformer_s style configuration
>>> configuration = Speech2TextConfig()

>>> # Initializing a model (with random weights) from the s2t_transformer_s style configuration
>>> model = Speech2TextModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## Speech2TextTokenizer[[transformers.Speech2TextTokenizer]]

#### transformers.Speech2TextTokenizer[[transformers.Speech2TextTokenizer]]

```python
transformers.Speech2TextTokenizer(vocab_file, spm_file, bos_token = '<s>', eos_token = '</s>', pad_token = '<pad>', unk_token = '<unk>', do_upper_case = False, do_lower_case = False, tgt_lang = None, lang_codes = None, additional_special_tokens = None, sp_model_kwargs: dict[str, typing.Any] | None = None, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/speech_to_text/tokenization_speech_to_text.py#L49)

**Tham số:**

vocab_file (`str`) : Tệp chứa từ vựng.

spm_file (`str`) : Đường dẫn đến tệp mô hình [SentencePiece](https://github.com/google/sentencepiece)

bos_token (`str`, *tùy chọn*, mặc định là `"<s>"`) : Token bắt đầu câu.

eos_token (`str`, *tùy chọn*, mặc định là `"</s>"`) : Token kết thúc câu.

unk_token (`str`, *tùy chọn*, mặc định là `"<unk>"`) : Token không xác định. Một token không có trong từ vựng sẽ không thể được chuyển đổi thành ID và sẽ được gán thành token này thay thế.

pad_token (`str`, *tùy chọn*, mặc định là `"<pad>"`) : Token được sử dụng để đệm, chẳng hạn khi xử lý các lô (batch) các chuỗi có độ dài khác nhau.

do_upper_case (`bool`, *tùy chọn*, mặc định là `False`) : Có nên viết hoa đầu câu của đầu ra khi giải mã hay không.

do_lower_case (`bool`, *tùy chọn*, mặc định là `False`) : Có nên chuyển đầu vào sang chữ thường khi phân tách token hay không.

tgt_lang (`str`, *tùy chọn*) : Một chuỗi đại diện cho ngôn ngữ đích.

sp_model_kwargs (`dict`, *tùy chọn*) : Sẽ được truyền vào phương thức `SentencePieceProcessor.__init__()`. [Python wrapper for SentencePiece](https://github.com/google/sentencepiece/tree/master/python) có thể được sử dụng, trong số nhiều mục đích khác, để thiết lập:  - `enable_sampling`: Bật chuẩn hóa subword. - `nbest_size`: Tham số lấy mẫu cho unigram. Không hợp lệ cho BPE-Dropout.  - `nbest_size = {0,1}`: Không thực hiện lấy mẫu. - `nbest_size > 1`: lấy mẫu từ các kết quả nbest_size. - `nbest_size < 0`: giả định rằng nbest_size là vô hạn và lấy mẫu từ tất cả các giả thuyết (lattice) bằng thuật toán forward-filtering-and-backward-sampling.  - `alpha`: Tham số làm mượt cho việc lấy mẫu unigram, và xác suất dropout của các thao tác merge cho BPE-dropout.

- ****kwargs** : Các đối số từ khóa bổ sung được truyền đến [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend)

Xây dựng một tokenizer Speech2Text.

Tokenizer này kế thừa từ [PreTrainedTokenizer](/docs/transformers/main/vi/main_classes/tokenizer#transformers.PythonBackend), bao gồm một số phương thức chính. Người dùng nên tham khảo lớp cha để biết thêm thông tin về các phương thức này.

#### build_inputs_with_special_tokens[[transformers.Speech2TextTokenizer.build_inputs_with_special_tokens]]

```python
build_inputs_with_special_tokens(token_ids_0, token_ids_1 = None)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/speech_to_text/tokenization_speech_to_text.py#L206)

Xây dựng đầu vào mô hình từ một chuỗi bằng cách thêm eos_token_id.

#### get_special_tokens_mask[[transformers.Speech2TextTokenizer.get_special_tokens_mask]]

```python
get_special_tokens_mask(token_ids_0: list, token_ids_1: list[int] | None = None, already_has_special_tokens: bool = False)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/speech_to_text/tokenization_speech_to_text.py#L213)

**Tham số:**

token_ids_0 (`list[int]`) : Danh sách các ID.

token_ids_1 (`list[int]`, *tuỳ chọn*) : Danh sách ID thứ hai tuỳ chọn cho các cặp chuỗi.

already_has_special_tokens (`bool`, *tùy chọn*, mặc định là `False`) : Xác định xem danh sách token đã được định dạng với các token đặc biệt cho mô hình hay chưa.

**Trả về:** `list[int]`

Một danh sách các số nguyên trong khoảng [0, 1]: 1 cho một token đặc biệt, 0 cho một token chuỗi.

Lấy các id của chuỗi từ một danh sách token chưa được thêm token đặc biệt. Phương thức này được gọi khi thêm token đặc biệt bằng cách sử dụng phương thức `prepare_for_model` của tokenizer.

#### create_token_type_ids_from_sequences[[transformers.Speech2TextTokenizer.create_token_type_ids_from_sequences]]

```python
create_token_type_ids_from_sequences(token_ids_0: list, token_ids_1: list[int] | None = None)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1298)

**Tham số:**

token_ids_0 (`list[int]`) : Danh sách các ID.

token_ids_1 (`list[int]`, *tuỳ chọn*) : Danh sách ID thứ hai tuỳ chọn cho các cặp chuỗi.

**Trả về:** `list[int]`

ID loại token theo mẫu được cấu hình.

Tạo một mask từ hai chuỗi được truyền vào để sử dụng trong một tác vụ phân loại cặp chuỗi.

Phương pháp này xây dựng động các ID loại token dựa trên các thuộc tính cấu hình của tokenizer:
- `token_type_ids_pattern`: Mẫu cần sử dụng ("all_zeros" hoặc "bert_style")
- `token_type_ids_include_special_tokens`: Có tính các token đặc biệt trong tính toán độ dài hay không

Ví dụ:
```python
# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences

# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairs
```

#### save_vocabulary[[transformers.Speech2TextTokenizer.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/speech_to_text/tokenization_speech_to_text.py#L257)

## Speech2TextFeatureExtractor[[transformers.Speech2TextFeatureExtractor]]

#### transformers.Speech2TextFeatureExtractor[[transformers.Speech2TextFeatureExtractor]]

```python
transformers.Speech2TextFeatureExtractor(feature_size = 80, sampling_rate = 16000, num_mel_bins = 80, padding_value = 0.0, dither = 0.0, do_ceptral_normalize = True, normalize_means = True, normalize_vars = True, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/speech_to_text/feature_extraction_speech_to_text.py#L33)

**Tham số:**

feature_size (`int`, *tuỳ chọn*, mặc định là 80) : Kích thước chiều của các đặc trưng đã trích xuất.

sampling_rate (`int`, *optional*, mặc định là 16000) : Tốc độ lấy mẫu (sampling rate) mà các tệp âm thanh nên được số hóa, được biểu diễn bằng hertz (Hz).

num_mel_bins (`int`, *tuỳ chọn*, mặc định là 80) : Số lượng bin tần số Mel.

padding_value (`float`, *tuỳ chọn*, mặc định là 0.0) : Giá trị được dùng để điền vào các vector đệm.

dither (`float`, *optional*, mặc định là 0.0) : Thêm dithering. Nói cách khác, thêm một nhiễu Gaussian nhỏ vào mỗi khung hình. Ví dụ, sử dụng 4.0 để thêm dithering với phân phối chuẩn có tâm tại 0.0 và độ lệch chuẩn là 4.0 (giả sử khoảng [-32k,+32k] của waveform kaldi). Giá trị 0.0 có nghĩa là không có dithering. Dithering có tác dụng tương tự như `mel_floor`. Nó làm giảm các giá trị log_mel_fbank cao cho các tín hiệu có các phần hard-zero, khi có VAD cutoff trong tín hiệu.

do_ceptral_normalize (`bool`, *tùy chọn*, mặc định là `True`) : Có áp dụng chuẩn hóa trung bình và phương sai phổ theo cấp độ câu (utterance-level cepstral mean and variance normalization) cho các đặc trưng đã trích xuất hay không.

normalize_means (`bool`, *tùy chọn*, mặc định là `True`) : Có nên chuẩn hóa trung bình bằng không các đặc trưng đã trích xuất hay không.

normalize_vars (`bool`, *tùy chọn*, mặc định là `True`) : Có thực hiện chuẩn hóa phương sai đơn vị cho các đặc trưng đã trích xuất hay không.

Tạo bộ trích xuất đặc trưng Speech2Text.

Feature extractor này kế thừa từ [Speech2TextFeatureExtractor](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextFeatureExtractor), bao gồm hầu hết các phương thức chính. Người dùng nên tham khảo lớp cha này để biết thêm thông tin về các phương thức đó.

Lớp này trích xuất các đặc trưng mel-filter bank từ giọng nói thô bằng TorchAudio nếu đã được cài đặt, hoặc bằng numpy nếu không, và áp dụng chuẩn hóa trung bình và phương sai cepstral ở cấp độ câu vào các đặc trưng đã trích xuất.

#### __call__[[transformers.Speech2TextFeatureExtractor.__call__]]

```python
__call__(raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]], padding: bool | str | transformers.utils.generic.PaddingStrategy = False, max_length: int | None = None, truncation: bool = False, pad_to_multiple_of: int | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, sampling_rate: int | None = None, return_attention_mask: bool | None = None, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/speech_to_text/feature_extraction_speech_to_text.py#L174)

**Tham số:**

raw_speech (`np.ndarray`, `list[float]`, `list[np.ndarray]`, `list[list[float]]`) : Chuỗi hoặc lô các chuỗi cần được đệm. Mỗi chuỗi có thể là một mảng numpy, một danh sách các giá trị float, một danh sách các mảng numpy hoặc một danh sách các danh sách giá trị float. Phải là âm thanh đơn kênh, không phải stereo, tức là một float duy nhất cho mỗi bước thời gian.

padding (`bool`, `str` hoặc [PaddingStrategy](/docs/transformers/main/vi/internal/file_utils#transformers.utils.PaddingStrategy), *tuỳ chọn*, mặc định là `True`) : Chọn một chiến lược để đệm các chuỗi được trả về (theo phía đệm và chỉ số đệm của mô hình) trong số:  - `True` hoặc `'longest'`: Đệm đến chuỗi dài nhất trong lô (hoặc không đệm nếu chỉ có một chuỗi được cung cấp). - `'max_length'`: Đệm đến độ dài tối đa được chỉ định bằng tham số `max_length` hoặc đến độ dài đầu vào tối đa chấp nhận được cho mô hình nếu tham số đó không được cung cấp. - `False` hoặc `'do_not_pad'` (mặc định): Không đệm (tức là có thể xuất ra một lô với các chuỗi có độ dài khác nhau).

max_length (`int`, *optional*) : Độ dài tối đa của danh sách được trả về và tùy chọn độ dài padding (xem bên trên).

truncation (`bool`) : Kích hoạt việc cắt ngắn để giảm các chuỗi đầu vào dài hơn *max_length* xuống còn *max_length*.

pad_to_multiple_of (`int`, *optional*) : Nếu được đặt, sẽ đệm chuỗi đến một bội số của giá trị được cung cấp. Điều này đặc biệt hữu ích để cho phép sử dụng Tensor Cores trên phần cứng NVIDIA có khả năng tính toán `>= 7.5` (Volta), hoặc trên TPU, nơi mà việc có độ dài chuỗi là bội số của 128 sẽ mang lại lợi ích.

return_attention_mask (`bool`, *optional*) : Có nên trả về attention mask hay không. Nếu để mặc định, sẽ trả về attention mask theo mặc định của feature_extractor cụ thể.  [Attention mask là gì?](../glossary#attention-mask)    Đối với các mô hình Speech2TextTransformer, `attention_mask` luôn phải được truyền vào khi suy luận theo batch, để tránh các lỗi tinh vi.

return_tensors (`str` hoặc [TensorType](/docs/transformers/main/vi/internal/file_utils#transformers.TensorType), *optional*) : Nếu được đặt, sẽ trả về các tensor thay vì danh sách các số nguyên python. Các giá trị chấp nhận được là:  - `'pt'`: Trả về các đối tượng `torch.Tensor` của PyTorch. - `'np'`: Trả về các đối tượng `np.ndarray` của Numpy.

sampling_rate (`int`, *optional*) : Tốc độ lấy mẫu mà đầu vào `raw_speech` được lấy mẫu. Rất khuyến nghị truyền `sampling_rate` trong lời gọi forward để ngăn các lỗi âm thầm.

padding_value (`float`, *tuỳ chọn*, mặc định là 0.0) : Giá trị được sử dụng để điền vào các giá trị / vector đệm.

Phương thức chính để tạo đặc trưng và chuẩn bị một hoặc nhiều chuỗi cho mô hình.

## Speech2TextProcessor[[transformers.Speech2TextProcessor]]

#### transformers.Speech2TextProcessor[[transformers.Speech2TextProcessor]]

```python
transformers.Speech2TextProcessor(feature_extractor, tokenizer)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/speech_to_text/processing_speech_to_text.py#L23)

**Tham số:**

feature_extractor (`Speech2TextFeatureExtractor`) : Bộ trích xuất đặc trưng là một đầu vào bắt buộc.

tokenizer (`Speech2TextTokenizer`) : Tokenizer là một đầu vào bắt buộc.

Tạo một Speech2TextProcessor đóng gói một bộ trích xuất đặc trưng và một bộ phân từ thành một bộ xử lý duy nhất.

[Speech2TextProcessor](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextProcessor) cung cấp đầy đủ các chức năng của [Speech2TextFeatureExtractor](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextFeatureExtractor) và [Speech2TextTokenizer](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextTokenizer). Xem [~Speech2TextFeatureExtractor](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextFeatureExtractor) và [~Speech2TextTokenizer](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextTokenizer) để biết thêm thông tin.

#### __call__[[transformers.Speech2TextProcessor.__call__]]

```python
__call__(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/speech_to_text/processing_speech_to_text.py#L27)

**Tham số:**

return_tensors (`str` hoặc [TensorType](/docs/transformers/main/vi/internal/file_utils#transformers.TensorType), *optional*) : Nếu được đặt, sẽ trả về các tensor của một framework cụ thể. Các giá trị chấp nhận được là:  - `'pt'`: Trả về các đối tượng `torch.Tensor` của PyTorch. - `'np'`: Trả về các đối tượng `np.ndarray` của NumPy.

#### from_pretrained[[transformers.Speech2TextProcessor.from_pretrained]]

```python
from_pretrained(pretrained_model_name_or_path: str | os.PathLike, cache_dir: str | os.PathLike | None = None, force_download: bool = False, local_files_only: bool = False, token: str | bool | None = None, revision: str = 'main', **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/processing_utils.py#L1750)

**Tham số:**

pretrained_model_name_or_path (`str` hoặc `os.PathLike`) : Có thể là một trong các trường hợp sau:  - một chuỗi, *model id* của một feature_extractor được huấn luyện trước và lưu trữ trong kho model trên huggingface.co. - đường dẫn đến một *thư mục* chứa tệp feature extractor đã được lưu bằng phương thức [save_pretrained()](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.FeatureExtractionMixin.save_pretrained), ví dụ: `./my_model_directory/`. - đường dẫn đến tệp JSON *file* của feature extractor đã lưu, ví dụ: `./my_model_directory/preprocessor_config.json`.

- ****kwargs** : Các đối số từ khóa bổ sung được truyền đến cả [from_pretrained()](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.FeatureExtractionMixin.from_pretrained) và `~tokenization_utils_base.PreTrainedTokenizer.from_pretrained`.

Tạo một processor liên kết với một model được huấn luyện trước.

Phương thức lớp này đơn giản là gọi phương thức [from_pretrained()](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.FeatureExtractionMixin.from_pretrained) của bộ trích xuất đặc trưng, [ImageProcessingMixin](/docs/transformers/main/vi/internal/image_processing_utils#transformers.ImageProcessingMixin) của bộ xử lý ảnh và `~tokenization_utils_base.PreTrainedTokenizer.from_pretrained` của bộ phân từ. Vui lòng tham khảo các docstring của các phương thức ở trên để biết thêm thông tin.

#### save_pretrained[[transformers.Speech2TextProcessor.save_pretrained]]

```python
save_pretrained(save_directory, push_to_hub: bool = False, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/processing_utils.py#L1165)

**Tham số:**

save_directory (`str` hoặc `os.PathLike`) : Thư mục nơi tệp JSON của feature extractor và các tệp tokenizer sẽ được lưu (thư mục sẽ được tạo nếu chưa tồn tại).

push_to_hub (`bool`, *tùy chọn*, mặc định là `False`) : Có đẩy mô hình của bạn lên Hugging Face model hub sau khi lưu hay không. Bạn có thể chỉ định kho lưu trữ muốn đẩy đến bằng `repo_id` (mặc định sẽ là tên của `save_directory` trong namespace của bạn).

kwargs (`dict[str, Any]`, *tùy chọn*) : Các đối số từ khóa bổ sung được truyền đến phương thức [push_to_hub()](/docs/transformers/main/vi/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub).

Lưu các thuộc tính của bộ xử lý này (bộ trích xuất đặc trưng, bộ phân từ...) vào thư mục được chỉ định để có thể tải lại bằng phương thức [from_pretrained()](/docs/transformers/main/vi/model_doc/wav2vec2#transformers.Wav2Vec2Processor.from_pretrained).

Phương thức lớp này đơn giản chỉ gọi [save_pretrained()](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.FeatureExtractionMixin.save_pretrained) và [save_pretrained()](/docs/transformers/main/vi/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.save_pretrained). Vui lòng tham khảo docstring của các phương thức ở trên để biết thêm thông tin.

#### batch_decode[[transformers.Speech2TextProcessor.batch_decode]]

```python
batch_decode(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/processing_utils.py#L2005)

Phương pháp này chuyển tiếp tất cả các đối số của nó đến [batch_decode()](/docs/transformers/main/vi/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.batch_decode) của PreTrainedTokenizer. Vui lòng tham khảo docstring của phương pháp này để biết thêm thông tin.

#### decode[[transformers.Speech2TextProcessor.decode]]

```python
decode(*args, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/processing_utils.py#L2014)

Phương pháp này chuyển tiếp tất cả các đối số của nó đến [decode()](/docs/transformers/main/vi/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.decode) của PreTrainedTokenizer. Vui lòng tham khảo docstring của phương pháp này để biết thêm thông tin.

## Speech2TextModel[[transformers.Speech2TextModel]]

#### transformers.Speech2TextModel[[transformers.Speech2TextModel]]

```python
transformers.Speech2TextModel(config: Speech2TextConfig)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/speech_to_text/modeling_speech_to_text.py#L720)

**Tham số:**

config ([Speech2TextConfig](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextConfig)) : Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức [from_pretrained()](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel.from_pretrained) để tải trọng số mô hình.

Mô hình Speech To Text Text cơ bản, xuất ra các hidden-states thô mà không có bất kỳ head cụ thể nào ở phía trên.

Mô hình này kế thừa từ [PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel). Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu ra, v.v.)

Mô hình này cũng là một lớp con của [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

#### forward[[transformers.Speech2TextModel.forward]]

```python
forward(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: tuple[tuple[torch.Tensor]] | None = None, past_key_values: transformers.cache_utils.Cache | None = None, decoder_inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/speech_to_text/modeling_speech_to_text.py#L736)

**Tham số:**

input_features (`torch.LongTensor` có shape `(batch_size, sequence_length, feature_dim)`, *tùy chọn*) : Các tensor tương ứng với các đặc trưng âm thanh đầu vào. Các đặc trưng âm thanh có thể được lấy bằng cách sử dụng [Speech2TextFeatureExtractor](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextFeatureExtractor). Xem [Speech2TextFeatureExtractor.__call__()](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextFeatureExtractor.__call__) để biết chi tiết ([Speech2TextProcessor](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextProcessor) sử dụng [Speech2TextFeatureExtractor](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextFeatureExtractor) để xử lý âm thanh).

attention_mask (`torch.Tensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong `[0, 1]`:  - 1 cho các token **không bị che**, - 0 cho các token **bị che**.  [Mặt nạ chú ý là gì?](../glossary#attention-mask)

decoder_input_ids (`torch.LongTensor` có shape `(batch_size, target_sequence_length)`, *tùy chọn*) : Chỉ số của các token trong chuỗi đầu vào của bộ giải mã trong từ điển.  Các chỉ số có thể được lấy bằng cách sử dụng `SpeechToTextTokenizer`. Xem [PreTrainedTokenizer.encode()](/docs/transformers/main/vi/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) và [PreTrainedTokenizer.__call__()](/docs/transformers/main/vi/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) để biết chi tiết.  [Các ID đầu vào của bộ giải mã là gì?](../glossary#decoder-input-ids)  SpeechToText sử dụng `eos_token_id` làm token bắt đầu cho việc tạo `decoder_input_ids`. Nếu `past_key_values` được sử dụng, tùy chọn chỉ cần nhập `decoder_input_ids` cuối cùng (xem `past_key_values`).

decoder_attention_mask (`torch.LongTensor` có shape `(batch_size, target_sequence_length)`, *tùy chọn*) : Hành vi mặc định: tạo một tensor bỏ qua các pad token trong `decoder_input_ids`. Causal mask cũng sẽ được sử dụng theo mặc định. Nếu bạn muốn thay đổi hành vi padding, bạn nên đọc `modeling_speech_to_text._prepare_decoder_attention_mask` và chỉnh sửa theo nhu cầu. Xem hình 1 trong [bài báo](https://huggingface.co/papers/1910.13461) để biết thêm thông tin về chiến lược mặc định.

encoder_outputs (`tuple[tuple[torch.Tensor]]`, *tùy chọn*) : Tuple bao gồm (`last_hidden_state`, *tùy chọn*: `hidden_states`, *tùy chọn*: `attentions`) `last_hidden_state` có hình dạng `(batch_size, sequence_length, hidden_size)`, *tùy chọn*) là một chuỗi các hidden-states tại đầu ra của lớp cuối cùng của encoder. Được sử dụng trong cross-attention của decoder.

past_key_values (`~cache_utils.Cache`, *tùy chọn*) : Các hidden-states đã tính trước (key và values trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồm `past_key_values` do mô hình trả về ở một giai đoạn giải mã trước đó, khi `use_cache=True` hoặc `config.use_cache=True`.  Chỉ cho phép [Cache](/docs/transformers/main/vi/internal/generation_utils#transformers.Cache) instance làm đầu vào, xem [hướng dẫn kv cache](https://huggingface.co/docs/transformers/en/kv_cache) của chúng tôi. Nếu không truyền `past_key_values`, [DynamicCache](/docs/transformers/main/vi/internal/generation_utils#transformers.DynamicCache) sẽ được khởi tạo theo mặc định.  Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.  Nếu sử dụng `past_key_values`, người dùng được kỳ vọng chỉ nhập các `input_ids` chưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có shape `(batch_size, unprocessed_length)` thay vì tất cả `input_ids` có shape `(batch_size, sequence_length)`.

decoder_inputs_embeds (`torch.Tensor` có shape `(batch_size, target_sequence_length, hidden_size)`, *tùy chọn*) : Tùy chọn, thay vì truyền `decoder_input_ids`, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Nếu `past_key_values` được sử dụng, tùy chọn chỉ cần nhập `decoder_inputs_embeds` cuối cùng (xem `past_key_values`). Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số `decoder_input_ids` thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình. Nếu cả `decoder_input_ids` và `decoder_inputs_embeds` đều không được đặt, `decoder_inputs_embeds` sẽ nhận giá trị của `inputs_embeds`.

use_cache (`bool`, *tùy chọn*) : Nếu được đặt thành `True`, các trạng thái khóa và giá trị `past_key_values` sẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xem `past_key_values`).

**Trả về:** [Seq2SeqLMOutput](/docs/transformers/main/vi/main_classes/output#transformers.modeling_outputs.Seq2SeqLMOutput) hoặc `tuple(torch.Tensor)`

Một [Seq2SeqLMOutput](/docs/transformers/main/vi/main_classes/output#transformers.modeling_outputs.Seq2SeqLMOutput) hoặc một tuple của `torch.Tensor` (nếu `return_dict=False` được truyền hoặc khi `config.return_dict=False`) bao gồm các phần tử khác nhau tùy thuộc vào cấu hình ([Speech2TextConfig](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextConfig)) và đầu vào.

Phương thức forward của [Speech2TextModel](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextModel) ghi đè lên phương thức đặc biệt `__call__`.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, bạn nên gọi instance của `Module` sau đó thay vì gọi hàm này, vì instance `Module` sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ bỏ qua chúng một cách im lặng.

- **loss** (`torch.Tensor` có shape `(1,)`, *tuỳ chọn*, được trả về khi `labels` được cung cấp) -- Loss của language modeling.
- **logits** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, config.vocab_size)`) -- Điểm dự đoán của đầu mô hình hóa ngôn ngữ (điểm cho mỗi token từ vựng trước SoftMax).
- **past_key_values** (`EncoderDecoderCache`, *tùy chọn*, được trả về khi `use_cache=True` được truyền vào hoặc khi `config.use_cache=True`) -- Đây là một instance của [EncoderDecoderCache](/docs/transformers/main/vi/internal/generation_utils#transformers.EncoderDecoderCache). Để biết thêm chi tiết, hãy xem [hướng dẫn về kv cache](https://huggingface.co/docs/transformers/en/kv_cache) của chúng tôi.

  Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention và trong các khối cross-attention) có thể được sử dụng (xem đầu vào `past_key_values`) để tăng tốc độ giải mã tuần tự.
- **decoder_hidden_states** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_hidden_states=True` được truyền vào hoặc khi `config.output_hidden_states=True`) -- Bộ tuple của `torch.Tensor` (một cho đầu ra của các embedding, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng `(batch_size, sequence_length, hidden_size)`.

  Trạng thái ẩn của bộ giải mã tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.
- **decoder_attentions** (`tuple(torch.Tensor)`, *tùy chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).
- **cross_attentions** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý của lớp cross-attention của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý chéo.
- **encoder_last_hidden_state** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, hidden_size)`, *tùy chọn*) -- Chuỗi các trạng thái ẩn tại đầu ra của lớp cuối cùng của bộ mã hóa trong mô hình.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_hidden_states=True` được truyền vào hoặc khi `config.output_hidden_states=True`) -- Bộ tuple các `torch.Tensor` (một cho đầu ra của các embedding, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng `(batch_size, sequence_length, hidden_size)`.

  Trạng thái ẩn của bộ mã hóa tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.
- **encoder_attentions** (`tuple(torch.Tensor)`, *tùy chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý của bộ mã hóa, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự thân.

Ví dụ:

```python
>>> import torch
>>> from transformers import Speech2TextModel, AutoFeatureExtractor
>>> from datasets import load_dataset

>>> model = Speech2TextModel.from_pretrained("facebook/s2t-small-librispeech-asr")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/s2t-small-librispeech-asr")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = feature_extractor(
...     ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], return_tensors="pt"
... )
>>> input_features = inputs.input_features
>>> decoder_input_ids = torch.tensor([[1, 1]]) * model.config.decoder_start_token_id
>>> last_hidden_state = model(input_features, decoder_input_ids=decoder_input_ids).last_hidden_state
>>> list(last_hidden_state.shape)
[1, 2, 256]
```

## Speech2TextForConditionalGeneration[[transformers.Speech2TextForConditionalGeneration]]

#### transformers.Speech2TextForConditionalGeneration[[transformers.Speech2TextForConditionalGeneration]]

```python
transformers.Speech2TextForConditionalGeneration(config: Speech2TextConfig)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/speech_to_text/modeling_speech_to_text.py#L842)

**Tham số:**

config ([Speech2TextConfig](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextConfig)) : Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức [from_pretrained()](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel.from_pretrained) để tải trọng số mô hình.

Mô hình Speech2Text có đầu mô hình ngôn ngữ. Có thể được sử dụng cho việc tóm tắt.

Mô hình này kế thừa từ [PreTrainedModel](/docs/transformers/main/vi/main_classes/model#transformers.PreTrainedModel). Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu ra, v.v.)

Mô hình này cũng là một lớp con của [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

#### forward[[transformers.Speech2TextForConditionalGeneration.forward]]

```python
forward(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: tuple[tuple[torch.Tensor]] | None = None, past_key_values: transformers.cache_utils.Cache | None = None, decoder_inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/speech_to_text/modeling_speech_to_text.py#L855)

**Tham số:**

input_features (`torch.LongTensor` có shape `(batch_size, sequence_length, feature_dim)`, *tùy chọn*) : Các tensor tương ứng với các đặc trưng âm thanh đầu vào. Các đặc trưng âm thanh có thể được lấy bằng cách sử dụng [Speech2TextFeatureExtractor](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextFeatureExtractor). Xem [Speech2TextFeatureExtractor.__call__()](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextFeatureExtractor.__call__) để biết chi tiết ([Speech2TextProcessor](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextProcessor) sử dụng [Speech2TextFeatureExtractor](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextFeatureExtractor) để xử lý âm thanh).

attention_mask (`torch.Tensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong `[0, 1]`:  - 1 cho các token **không bị che**, - 0 cho các token **bị che**.  [Mặt nạ chú ý là gì?](../glossary#attention-mask)

decoder_input_ids (`torch.LongTensor` có shape `(batch_size, target_sequence_length)`, *tùy chọn*) : Chỉ số của các token trong chuỗi đầu vào của bộ giải mã trong từ điển.  Các chỉ số có thể được lấy bằng cách sử dụng `SpeechToTextTokenizer`. Xem [PreTrainedTokenizer.encode()](/docs/transformers/main/vi/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) và [PreTrainedTokenizer.__call__()](/docs/transformers/main/vi/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) để biết chi tiết.  [Các ID đầu vào của bộ giải mã là gì?](../glossary#decoder-input-ids)  SpeechToText sử dụng `eos_token_id` làm token bắt đầu cho việc tạo `decoder_input_ids`. Nếu `past_key_values` được sử dụng, tùy chọn chỉ cần nhập `decoder_input_ids` cuối cùng (xem `past_key_values`).

decoder_attention_mask (`torch.LongTensor` có shape `(batch_size, target_sequence_length)`, *tùy chọn*) : Hành vi mặc định: tạo một tensor bỏ qua các pad token trong `decoder_input_ids`. Causal mask cũng sẽ được sử dụng theo mặc định. Nếu bạn muốn thay đổi hành vi padding, bạn nên đọc `modeling_speech_to_text._prepare_decoder_attention_mask` và chỉnh sửa theo nhu cầu. Xem hình 1 trong [bài báo](https://huggingface.co/papers/1910.13461) để biết thêm thông tin về chiến lược mặc định.

encoder_outputs (`tuple[tuple[torch.Tensor]]`, *tùy chọn*) : Tuple bao gồm (`last_hidden_state`, *tùy chọn*: `hidden_states`, *tùy chọn*: `attentions`) `last_hidden_state` có hình dạng `(batch_size, sequence_length, hidden_size)`, *tùy chọn*) là một chuỗi các hidden-states tại đầu ra của lớp cuối cùng của encoder. Được sử dụng trong cross-attention của decoder.

past_key_values (`~cache_utils.Cache`, *tùy chọn*) : Các hidden-states đã tính trước (key và values trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc giải mã tuần tự. Điều này thường bao gồm `past_key_values` do mô hình trả về ở một giai đoạn giải mã trước đó, khi `use_cache=True` hoặc `config.use_cache=True`.  Chỉ cho phép [Cache](/docs/transformers/main/vi/internal/generation_utils#transformers.Cache) instance làm đầu vào, xem [hướng dẫn kv cache](https://huggingface.co/docs/transformers/en/kv_cache) của chúng tôi. Nếu không truyền `past_key_values`, [DynamicCache](/docs/transformers/main/vi/internal/generation_utils#transformers.DynamicCache) sẽ được khởi tạo theo mặc định.  Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.  Nếu sử dụng `past_key_values`, người dùng được kỳ vọng chỉ nhập các `input_ids` chưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có shape `(batch_size, unprocessed_length)` thay vì tất cả `input_ids` có shape `(batch_size, sequence_length)`.

decoder_inputs_embeds (`torch.Tensor` có shape `(batch_size, target_sequence_length, hidden_size)`, *tùy chọn*) : Tùy chọn, thay vì truyền `decoder_input_ids`, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Nếu `past_key_values` được sử dụng, tùy chọn chỉ cần nhập `decoder_inputs_embeds` cuối cùng (xem `past_key_values`). Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số `decoder_input_ids` thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình. Nếu cả `decoder_input_ids` và `decoder_inputs_embeds` đều không được đặt, `decoder_inputs_embeds` sẽ nhận giá trị của `inputs_embeds`.

labels (`torch.LongTensor` có hình dạng `(batch_size, sequence_length)`, *tùy chọn*) : Nhãn để tính toán tổn thất mô hình hóa ngôn ngữ. Chỉ số phải nằm trong `[0, ..., config.vocab_size]` hoặc -100 (xem docstring của `input_ids`). Các token có chỉ số được đặt thành `-100` sẽ bị bỏ qua (che), tổn thất chỉ được tính cho các token có nhãn nằm trong `[0, ..., config.vocab_size]`.

use_cache (`bool`, *tùy chọn*) : Nếu được đặt thành `True`, các trạng thái khóa và giá trị `past_key_values` sẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xem `past_key_values`).

**Trả về:** [Seq2SeqLMOutput](/docs/transformers/main/vi/main_classes/output#transformers.modeling_outputs.Seq2SeqLMOutput) hoặc `tuple(torch.Tensor)`

Một [Seq2SeqLMOutput](/docs/transformers/main/vi/main_classes/output#transformers.modeling_outputs.Seq2SeqLMOutput) hoặc một tuple của `torch.Tensor` (nếu `return_dict=False` được truyền hoặc khi `config.return_dict=False`) bao gồm các phần tử khác nhau tùy thuộc vào cấu hình ([Speech2TextConfig](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextConfig)) và đầu vào.

Phương thức forward của [Speech2TextForConditionalGeneration](/docs/transformers/main/vi/model_doc/speech_to_text#transformers.Speech2TextForConditionalGeneration) ghi đè lên phương thức đặc biệt `__call__`.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, bạn nên gọi instance của `Module` sau đó thay vì gọi hàm này, vì instance `Module` sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ bỏ qua chúng một cách im lặng.

- **loss** (`torch.Tensor` có shape `(1,)`, *tuỳ chọn*, được trả về khi `labels` được cung cấp) -- Loss của language modeling.
- **logits** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, config.vocab_size)`) -- Điểm dự đoán của đầu mô hình hóa ngôn ngữ (điểm cho mỗi token từ vựng trước SoftMax).
- **past_key_values** (`EncoderDecoderCache`, *tùy chọn*, được trả về khi `use_cache=True` được truyền vào hoặc khi `config.use_cache=True`) -- Đây là một instance của [EncoderDecoderCache](/docs/transformers/main/vi/internal/generation_utils#transformers.EncoderDecoderCache). Để biết thêm chi tiết, hãy xem [hướng dẫn về kv cache](https://huggingface.co/docs/transformers/en/kv_cache) của chúng tôi.

  Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention và trong các khối cross-attention) có thể được sử dụng (xem đầu vào `past_key_values`) để tăng tốc độ giải mã tuần tự.
- **decoder_hidden_states** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_hidden_states=True` được truyền vào hoặc khi `config.output_hidden_states=True`) -- Bộ tuple của `torch.Tensor` (một cho đầu ra của các embedding, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng `(batch_size, sequence_length, hidden_size)`.

  Trạng thái ẩn của bộ giải mã tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.
- **decoder_attentions** (`tuple(torch.Tensor)`, *tùy chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự (self-attention).
- **cross_attentions** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý của lớp cross-attention của bộ giải mã, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý chéo.
- **encoder_last_hidden_state** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, hidden_size)`, *tùy chọn*) -- Chuỗi các trạng thái ẩn tại đầu ra của lớp cuối cùng của bộ mã hóa trong mô hình.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *tuỳ chọn*, được trả về khi `output_hidden_states=True` được truyền vào hoặc khi `config.output_hidden_states=True`) -- Bộ tuple các `torch.Tensor` (một cho đầu ra của các embedding, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng `(batch_size, sequence_length, hidden_size)`.

  Trạng thái ẩn của bộ mã hóa tại đầu ra của mỗi lớp cùng với đầu ra của nhúng ban đầu.
- **encoder_attentions** (`tuple(torch.Tensor)`, *tùy chọn*, được trả về khi `output_attentions=True` được truyền vào hoặc khi `config.output_attentions=True`) -- Bộ tuple của `torch.Tensor` (một cho mỗi lớp) có hình dạng `(batch_size, num_heads, sequence_length, sequence_length)`.

  Trọng số chú ý của bộ mã hóa, sau softmax chú ý, được sử dụng để tính trung bình có trọng số trong các đầu chú ý tự thân.

Ví dụ:

```python
>>> import torch
>>> from transformers import Speech2TextProcessor, Speech2TextForConditionalGeneration
>>> from datasets import load_dataset

>>> model = Speech2TextForConditionalGeneration.from_pretrained("facebook/s2t-small-librispeech-asr")
>>> processor = Speech2TextProcessor.from_pretrained("facebook/s2t-small-librispeech-asr")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")

>>> inputs = processor(
...     ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], return_tensors="pt"
... )
>>> input_features = inputs.input_features

>>> generated_ids = model.generate(inputs=input_features)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> transcription
'mister quilter is the apostle of the middle classes and we are glad to welcome his gospel'
```

