# LASR

## Tổng quan

LASR là kiến trúc đằng sau MedASR, một mô hình chuyển giọng nói thành văn bản từ Google Health AI được huấn luyện trước cho việc đọc y khoa. Nó dựa trên [kiến trúc Conformer](https://huggingface.co/papers/2005.08100) và được thiết kế như một điểm khởi đầu cho các nhà phát triển đang xây dựng công cụ đọc y khoa với thuật ngữ y học, chẳng hạn như đọc y khoa trong lĩnh vực chẩn đoán hình ảnh. MedASR hoạt động tốt với âm thanh y khoa nhưng có thể gặp khó khăn với các thuật ngữ nằm ngoài dữ liệu huấn luyện của nó, chẳng hạn như tên thuốc không theo chuẩn hoặc các tham chiếu thời gian (ngày, giờ hoặc khoảng thời gian).

## Cách sử dụng

### Cách sử dụng cơ bản

```python
from transformers import pipeline

pipe = pipeline("automatic-speech-recognition", model="google/medasr")
out = pipe("path/to/audio.mp3")
print(out)
```

```python
from datasets import Audio, load_dataset

from transformers import AutoModelForCTC, AutoProcessor

processor = AutoProcessor.from_pretrained("google/medasr")
model = AutoModelForCTC.from_pretrained("google/medasr", device_map="auto")

ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
speech_samples = [el['array'] for el in ds["audio"][:5]]

inputs = processor(speech_samples, sampling_rate=processor.feature_extractor.sampling_rate)
inputs.to(model.device, dtype=model.dtype)
outputs = model.generate(**inputs)
print(processor.batch_decode(outputs))
```

### Huấn luyện

Ví dụ dưới đây chuẩn bị một lô dữ liệu âm thanh và văn bản, đưa nó qua mô hình LASR/MedASR và tính toán tổn thất huấn luyện.

```python
from datasets import Audio, load_dataset

from transformers import AutoModelForCTC, AutoProcessor

# Load processor and model
processor = AutoProcessor.from_pretrained("google/medasr")
model = AutoModelForCTC.from_pretrained("google/medasr", device_map="auto")

# Load a small example dataset and prepare batch
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
speech_samples = [el["array"] for el in ds["audio"][:5]]
text_samples = [el for el in ds["text"][:5]]

# Passing `text` to the processor will prepare the `labels`
inputs = processor(audio=speech_samples, text=text_samples, sampling_rate=processor.feature_extractor.sampling_rate)
inputs.to(device, dtype=model.dtype)

outputs = model(**inputs)
outputs.loss.backward()
```

## LasrTokenizer[[transformers.LasrTokenizer]]

#### transformers.LasrTokenizer[[transformers.LasrTokenizer]]

```python
transformers.LasrTokenizer(eos_token = '</s>', unk_token = '<unk>', pad_token = '<pad>', _spm_precompiled_charsmap = None, extra_ids = 100, additional_special_tokens = None, vocab = None, vocab_file = None, **kwargs)
```

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

**Tham số:**

vocab_file (`str`, *tùy chọn*) : tệp [SentencePiece](https://github.com/google/sentencepiece) (thường có phần mở rộng *.spm*) chứa từ vựng cần thiết để khởi tạo một tokenizer.

eos_token (`str`, *tùy chọn*, mặc định là `"</s>"`) : Token kết thúc chuỗi. Khi xây dựng một chuỗi bằng các token đặc biệt, đây không phải là token được dùng cho việc kết thúc chuỗi. Token được dùng là `sep_token`.

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.

extra_ids (`int`, *optional*, mặc định là 100) : Thêm một số lượng id bổ sung vào bảng từ vựng để sử dụng làm sentinel. Các token này có thể truy cập dưới dạng "" trong đó "{%d}" là một số từ 0 đến extra_ids-1. Các token này có thể được lấy bằng cách gọi phương thức get_sentinel_tokens và các id token có thể được lấy bằng cách gọi phương thức get_sentinel_token_ids

additional_special_tokens (`list[str]`, *tùy chọn*) : Các token đặc biệt bổ sung được sử dụng bởi tokenizer.

vocab (`str`, `dict` hoặc `list`, *tùy chọn*) : Từ điển từ vựng tùy chỉnh. Nếu không được cung cấp, một từ vựng tối thiểu sẽ được tạo ra bằng cách sử dụng các token đặc biệt.

Xây dựng bộ phân từ LASR (dựa trên thư viện *tokenizers* của HuggingFace). Được xây dựng dựa trên [Unigram](https://huggingface.co/docs/tokenizers/python/latest/components.html?highlight=unigram#models).

Tokenizer này kế thừa từ [TokenizersBackend](/docs/transformers/main/vi/main_classes/tokenizer#transformers.TokenizersBackend), lớp chứa 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 đó.

#### get_sentinel_token_ids[[transformers.LasrTokenizer.get_sentinel_token_ids]]

```python
get_sentinel_token_ids()
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lasr/tokenization_lasr.py#L157)

Lấy các ID token cho các token sentinel.

#### get_sentinel_tokens[[transformers.LasrTokenizer.get_sentinel_tokens]]

```python
get_sentinel_tokens()
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lasr/tokenization_lasr.py#L151)

Lấy danh sách các token sentinel (token extra_id) từ additional_special_tokens.

## LasrFeatureExtractor[[transformers.LasrFeatureExtractor]]

#### transformers.LasrFeatureExtractor[[transformers.LasrFeatureExtractor]]

```python
transformers.LasrFeatureExtractor(feature_size = 128, sampling_rate = 16000, hop_length = 160, n_fft = 512, win_length = 400, padding_value = 0.0, **kwargs)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lasr/feature_extraction_lasr.py#L70)

**Tham số:**

feature_size (`int`, *tuỳ chọn*, mặc định là 128) : 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).

hop_length (`int`, *optional*, mặc định là 160) : Độ dài của các cửa sổ chồng lấp cho STFT được sử dụng để lấy các hệ số Mel Frequency.

n_fft (`int`, *tuỳ chọn*, mặc định là 512) : Kích thước của phép biến đổi Fourier.

win_length (`int`, *tuỳ chọn*, mặc định là 400) : Độ dài cửa sổ cho phép tính STFT.

padding_value (`float`, *optional*, mặc định là 0.0) : Giá trị đệm được sử dụng để đệm âm thanh. Nên tương ứng với các khoảng im lặng.

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

Feature extractor này kế thừa từ [SequenceFeatureExtractor](/docs/transformers/main/vi/main_classes/feature_extractor#transformers.SequenceFeatureExtractor), 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 cách sử dụng một cài đặt numpy tùy chỉnh của `Short Time Fourier Transform`, vốn nên khớp với tương đương `torch.stft` của pytorch.

#### __call__[[transformers.LasrFeatureExtractor.__call__]]

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

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lasr/feature_extraction_lasr.py#L142)

**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.

truncation (`bool`, *tùy chọn*, mặc định là `True`) : 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*, mặc định là None) : Nếu được đặt, sẽ đệm (pad) 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 Parakeet, `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à:  - `'tf'`: Trả về các đối tượng `tf.constant` của TensorFlow. - `'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` tại cuộc gọi forward để ngăn các lỗi âm thầm và cho phép pipeline nhận dạng giọng nói tự động.

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.

do_normalize (`bool`, *tùy chọn*, mặc định là `False`) : Có nên chuẩn hóa đầu vào theo phương pháp trung bình bằng không và phương sai đơn vị hay không. Việc chuẩn hóa có thể giúp cải thiện đáng kể hiệu suất của mô hình.

device (`str`, *tùy chọn*, mặc định là `'cpu'`) : Xác định thiết bị để tính toán phổ log-mel của tín hiệu âm thanh trong phương thức `_torch_extract_fbank_features`. (ví dụ: "cpu", "cuda")

return_token_timestamps (`bool`, *tùy chọn*, mặc định là `None`) : Đã bị hủy bỏ. Hãy sử dụng `return_attention_mask` thay thế, từ đó có thể suy ra số lượng khung hình. Xác định có trả về số lượng khung hình của input raw_speech hay không. Các num_frames này có thể được mô hình sử dụng để tính toán mốc thời gian ở cấp độ từ.

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. Việc triển khai sử dụng PyTorch cho phép tính toán STFT nếu khả dụng, nếu không sẽ dùng phương án dựa trên NumPy chậm hơn.

## LasrProcessor[[transformers.LasrProcessor]]

#### transformers.LasrProcessor[[transformers.LasrProcessor]]

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

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

**Tham số:**

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

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

Tạo một LasrProcessor đó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.

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

#### __call__[[transformers.LasrProcessor.__call__]]

```python
__call__(audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']], text: str | list[str] | list[list[str]] | None = None, sampling_rate: int | None = None, **kwargs: *<class 'transformers.processing_utils.ProcessingKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lasr/processing_lasr.py#L50)

**Tham số:**

audio (`Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]]`) : Âm thanh hoặc lô âm thanh cần được chuẩn bị. Mỗi âm thanh có thể là mảng NumPy hoặc tensor PyTorch. Trong trường hợp là mảng NumPy/tensor PyTorch, mỗi âm thanh nên có hình dạng (C, T), trong đó C là số kênh và T là độ dài mẫu của âm thanh.

text (`Union[str, list[str], list[list[str]]]`, *tùy chọn*) : Chuỗi hoặc lô các chuỗi cần được mã hóa. Mỗi chuỗi có thể là một chuỗi ký tự hoặc một danh sách các chuỗi ký tự (chuỗi đã được tách token trước). Nếu bạn truyền vào đầu vào đã tách token trước, hãy đặt `is_split_into_words=True` để tránh nhầm lẫn với các đầu vào dạng lô.

sampling_rate (`int`, *optional*) : Tần số lấy mẫu của âm thanh đầu vào, tính bằng Hz. Giá trị này phải khớp với tần số lấy mẫu mà bộ trích xuất đặc trưng kỳ vọng (mặc định là 16000 Hz). Nếu được cung cấp, nó sẽ được kiểm tra đối chiếu với tần số lấy mẫu kỳ vọng của bộ xử lý, và một lỗi sẽ được phát sinh nếu chúng không khớp. Nếu không được cung cấp, một cảnh báo sẽ được phát ra và tần số lấy mẫu mặc định sẽ được giả định.

return_mm_token_type_ids (`bool`, *kwargs*) : Có nên trả về các id loại token đa phương thức chỉ định vị trí của các token placeholder đa phương thức hay không.

return_text_replacement_offsets (`bool`, *kwargs*) : Có nên trả về các vị trí ký tự cho mỗi placeholder đa phương thức và phần thay thế của nó hay không.

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.

- ****kwargs** ([ProcessingKwargs](/docs/transformers/main/vi/main_classes/processors#transformers.ProcessingKwargs), *optional*) : Các tùy chọn xử lý bổ sung cho từng phương thức (text, images, videos, audio). Các tham số cụ thể của model được liệt kê ở trên; xem lớp TypedDict để biết danh sách đầy đủ các đối số được hỗ trợ.

#### batch_decode[[transformers.LasrProcessor.batch_decode]]

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

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

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.LasrProcessor.decode]]

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

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

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.

## LasrEncoderConfig[[transformers.LasrEncoderConfig]]

#### transformers.LasrEncoderConfig[[transformers.LasrEncoderConfig]]

```python
transformers.LasrEncoderConfig(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, is_encoder_decoder: bool = False, 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, hidden_size: int = 512, num_hidden_layers: int = 17, num_attention_heads: int = 8, intermediate_size: int = 2048, hidden_act: str = 'silu', attention_bias: bool = False, convolution_bias: bool = False, conv_kernel_size: int = 32, subsampling_conv_channels: int = 256, num_mel_bins: int = 128, subsampling_conv_kernel_size: int = 5, subsampling_conv_stride: int = 2, dropout: float | int = 0.1, dropout_positions: float | int = 0.0, layerdrop: float | int = 0.1, activation_dropout: float | int = 0.1, attention_dropout: float | int = 0.1, max_position_embeddings: int = 10000, initializer_range: float = 0.02, layer_norm_eps: float = 1e-06, feed_forward_residual_weights: list[float] | tuple[float, ...] = (1.5, 0.5), conv_residual_weights: list[float] | tuple[float, ...] = (2.0, 1.0), batch_norm_momentum: float = 0.01, rope_parameters: dict | None = None)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lasr/configuration_lasr.py#L29)

**Tham số:**

hidden_size (`int`, *tuỳ chọn*, mặc định là `512`) : Kích thước của các biểu diễn ẩn.

num_hidden_layers (`int`, *tuỳ chọn*, mặc định là `17`) : Số lượng lớp ẩn trong bộ giải mã Transformer.

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

intermediate_size (`int`, *tuỳ chọn*, mặc định là `2048`) : Kích thước của các biểu diễn MLP.

hidden_act (`str`, *tùy chọn*, mặc định là `silu`) : 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.

attention_bias (`bool`, *tùy chọn*, mặc định là `False`) : Có sử dụng bias trong các lớp chiếu query, key, value và output trong quá trình tự chú ý hay không.

convolution_bias (`bool`, *tùy chọn*, mặc định là `False`) : Có sử dụng bias trong các phép convolution của module convolution trong conformer hay không.

conv_kernel_size (`int`, *optional*, mặc định là 32) : Kích thước kernel của các lớp convolution trong khối Conformer.

subsampling_conv_channels (`int`, *tuỳ chọn*, mặc định là 256) : Số lượng kênh trong các lớp tích chập lấy mẫu con.

num_mel_bins (`int`, *tuỳ chọn*, mặc định là `128`) : Số lượng đặc trưng mel được sử dụng cho mỗi khung đầu vào. Cần khớp với giá trị được dùng trong lớp `AutoFeatureExtractor`.

subsampling_conv_kernel_size (`int`, *tuỳ chọn*, mặc định là 5) : Kích thước kernel của các lớp tích chập lấy mẫu con.

subsampling_conv_stride (`int`, *tuỳ chọn*, mặc định là 2) : Bước nhảy (stride) của các lớp tích chập lấy mẫu con (subsampling).

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.

dropout_positions (`float`, *tuỳ chọn*, mặc định là 0.0) : Tỷ lệ dropout cho các vị trí trong chuỗi đầu vào.

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

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

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

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

initializer_range (`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ố.

layer_norm_eps (`float`, *tuỳ chọn*, mặc định là `1e-06`) : Epsilon được sử dụng bởi các lớp chuẩn hóa lớp (layer normalization).

feed_forward_residual_weights (`tuple[float, float]`, *tuỳ chọn*, mặc định là `[1.5, 0.5]`) : Các trọng số phần dư cho các lớp truyền thẳng.

conv_residual_weights (`tuple[float, float]`, *không bắt buộc*, mặc định là `[2.0, 1.0]`) : Các trọng số phần dư cho các lớp tích chập.

batch_norm_momentum (`float`, *tuỳ chọn*, mặc định là 0.01) : Động lượng cho các lớp chuẩn hóa lô

rope_parameters (`dict`, *tùy chọn*) : Từ điển chứa các tham số cấu hình cho các embedding RoPE. Từ điển phải chứa một giá trị cho `rope_theta` và tùy chọn các tham số được sử dụng để mở rộng trong trường hợp bạn muốn sử dụng RoPE với `max_position_embeddings` dài hơn.

Đây là lớp cấu hình để lưu trữ cấu hình của một LasrModel. Nó được sử dụng để khởi tạo một mô hình Lasr theo các đối số được chỉ định, xác định kiến trúc 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 [google/medasr](https://huggingface.co/google/medasr)

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 LasrEncoderModel, LasrEncoderConfig

>>> # Initializing a `LasrEncoder` configuration
>>> configuration = LasrEncoderConfig()

>>> # Initializing a model from the configuration
>>> model = LasrEncoderModel(configuration)

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

Lớp cấu hình này dựa trên kiến trúc LasrEncoder từ Google Health AI. Bạn có thể tìm thêm chi tiết và các mô hình được huấn luyện trước tại [google/medasr](https://huggingface.co/google/medasr).

## LasrCTCConfig[[transformers.LasrCTCConfig]]

#### transformers.LasrCTCConfig[[transformers.LasrCTCConfig]]

```python
transformers.LasrCTCConfig(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, is_encoder_decoder: bool = False, 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, vocab_size: int = 512, ctc_loss_reduction: str = 'mean', ctc_zero_infinity: bool = True, encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, pad_token_id: int = 0)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lasr/configuration_lasr.py#L103)

**Tham số:**

vocab_size (`int`, *tùy chọn*, mặc định là `512`) : 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`.

ctc_loss_reduction (`str`, *tùy chọn*, mặc định là `"mean"`) : Xác định phép giảm (reduction) áp dụng cho đầu ra của `torch.nn.CTCLoss`. Chỉ liên quan khi huấn luyện một instance của [LasrForCTC](/docs/transformers/main/vi/model_doc/lasr#transformers.LasrForCTC).

ctc_zero_infinity (`bool`, *tuỳ chọn*, mặc định là `True`) : Có nên đặt bằng không các tổn thất vô hạn và các gradient liên quan của `torch.nn.CTCLoss` hay không. Tổn thất vô hạn chủ yếu xảy ra khi các đầu vào quá ngắn để có thể căn chỉnh với các mục tiêu. Chỉ liên quan khi huấn luyện một instance của [LasrForCTC](/docs/transformers/main/vi/model_doc/lasr#transformers.LasrForCTC).

encoder_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`, *tùy chọn*) : Đối tượng config hoặc từ điển của bộ khung encoder.

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

Đây là lớp cấu hình để lưu trữ cấu hình của một LasrModel. Nó được sử dụng để khởi tạo một mô hình Lasr theo các đối số được chỉ định, xác định kiến trúc 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 [google/medasr](https://huggingface.co/google/medasr)

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 LasrForCTC, LasrCTCConfig
>>> # Initializing a Lasr configuration
>>> configuration = LasrCTCConfig()
>>> # Initializing a model from the configuration
>>> model = LasrForCTC(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
```

Lớp cấu hình này dựa trên kiến trúc Lasr CTC từ Google Health AI. Bạn có thể tìm thêm chi tiết và các mô hình được huấn luyện trước tại [google/medasr](https://huggingface.co/google/medasr).

## LasrEncoder[[transformers.LasrEncoder]]

#### transformers.LasrEncoder[[transformers.LasrEncoder]]

```python
transformers.LasrEncoder(config: LasrEncoderConfig)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lasr/modeling_lasr.py#L465)

**Tham số:**

config ([LasrEncoderConfig](/docs/transformers/main/vi/model_doc/lasr#transformers.LasrEncoderConfig)) : 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 LasrEncoder, dựa trên kiến trúc Conformer](https://arxiv.org/abs/2005.08100).

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.LasrEncoder.forward]]

```python
forward(input_features: Tensor, attention_mask: typing.Optional[torch.Tensor] = None, output_attention_mask: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lasr/modeling_lasr.py#L486)

**Tham số:**

input_features (`torch.Tensor` có shape `(batch_size, sequence_length, feature_dim)`) : 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 `feature_extractor_class`. Xem `feature_extractor_class.__call__` để biết chi tiết (`processor_class` sử dụng `feature_extractor_class` để 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)

output_attention_mask (`bool`, *tùy chọn*) : Có trả về mặt nạ chú ý đầu ra hay không.

**Trả về:** `LasrEncoderModelOutput` hoặc `tuple(torch.Tensor)`

Một `LasrEncoderModelOutput` 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 (`None`) và đầu vào.

Phương thức forward của [LasrEncoder](/docs/transformers/main/vi/model_doc/lasr#transformers.LasrEncoder) 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.

- **last_hidden_state** (`torch.Tensor` có hình dạng `(batch_size, sequence_length, hidden_size)`) -- Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.
- **pooler_output** (`torch.Tensor` có hình dạng `(batch_size, hidden_size)`) -- Trạng thái ẩn của lớp cuối cùng cho token đầu tiên của chuỗi (token phân loại) sau khi được xử lý thêm thông qua các lớp dùng cho tác vụ tiền huấn luyện bổ trợ. Ví dụ, đối với các mô hình thuộc họ BERT, giá trị này trả về token phân loại sau khi được xử lý qua một lớp tuyến tính và một hàm kích hoạt tanh. Trọng số của lớp tuyến tính được huấn luyện từ mục tiêu dự đoán câu tiếp theo (phân loại) trong quá trình tiền huấn luyện.
- **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 mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
- **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ú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.
- **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 sau khi nén chuỗi. Được trả về vì độ dài chuỗi có thể khác với độ dài chuỗi đầu vào. 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**.

Ví dụ:

```python
>>> from transformers import AutoProcessor, LasrEncoder
>>> from datasets import load_dataset, Audio

>>> model_id = "google/medasr"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> encoder = ParakeetEncoder.from_pretrained(model_id)

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

>>> inputs = processor(ds[0]["audio"]["array"])
>>> encoder_outputs = encoder(**inputs)

>>> print(encoder_outputs.last_hidden_state.shape)
```

## LasrForCTC[[transformers.LasrForCTC]]

#### transformers.LasrForCTC[[transformers.LasrForCTC]]

```python
transformers.LasrForCTC(config: LasrCTCConfig)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lasr/modeling_lasr.py#L601)

**Tham số:**

config ([LasrCTCConfig](/docs/transformers/main/vi/model_doc/lasr#transformers.LasrCTCConfig)) : 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.

Lasr Encoder với đầu Connectionist Temporal Classification (CTC).

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.LasrForCTC.forward]]

```python
forward(input_features: Tensor, attention_mask: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lasr/modeling_lasr.py#L612)

**Tham số:**

input_features (`torch.Tensor` có shape `(batch_size, sequence_length, feature_dim)`) : 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 `feature_extractor_class`. Xem `feature_extractor_class.__call__` để biết chi tiết (`processor_class` sử dụng `feature_extractor_class` để 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)

labels (`torch.Tensor` có shape `(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ữ có che (masked language modeling loss). 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]`.

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

Một [CausalLMOutput](/docs/transformers/main/vi/main_classes/output#transformers.modeling_outputs.CausalLMOutput) 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 thành phần khác nhau tùy thuộc vào cấu hình (`None`) và đầu vào.

Phương thức forward của [LasrForCTC](/docs/transformers/main/vi/model_doc/lasr#transformers.LasrForCTC) 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,)`, *optional*, được trả về khi `labels` được cung cấp) -- Loss của language modeling (cho next-token prediction).
- **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).
- **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 mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
- **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ú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

Ví dụ:

```python
>>> from transformers import AutoProcessor, LasrForCTC
>>> from datasets import load_dataset, Audio

>>> model_id = "nvidia/lasr-ctc-1.1b"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = LasrForCTC.from_pretrained(model_id)

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

>>> inputs = processor(ds[0]["audio"]["array"], text=ds[0]["text"])
>>> outputs = model(**inputs)

>>> print(outputs.loss)
```

#### generate[[transformers.LasrForCTC.generate]]

```python
generate(input_features: Tensor, attention_mask: typing.Optional[torch.Tensor] = None, return_dict_in_generate: bool = False, compile_config: transformers.generation.configuration_utils.CompileConfig | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Nguồn](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lasr/modeling_lasr.py#L672)

Ví dụ:

```python
>>> from transformers import AutoProcessor, LasrForCTC
>>> from datasets import load_dataset, Audio

>>> model_id = "google/medasr"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = LasrForCTC.from_pretrained(model_id)

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

>>> inputs = processor(ds[0]["audio"]["array"], text=ds[0]["text"])
>>> predicted_ids = model.generate(**inputs)
>>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)

>>> print(transcription)
```

