# UniSpeech-SAT

## 개요

UniSpeech-SAT 모델은 Sanyuan Chen, Yu Wu, Chengyi Wang, Zhengyang Chen, Zhuo Chen, Shujie Liu, Jian Wu, Yao Qian, Furu Wei, Jinyu Li, Xiangzhan Yu가 [UniSpeech-SAT: Universal Speech Representation Learning with Speaker Aware Pre-Training](https://huggingface.co/papers/2110.05752)에서 제안했습니다.

해당 논문의 초록은 다음과 같습니다:

*자기 지도 학습(SSL)은 대규모 무라벨 데이터를 활용하고 광범위한 인간 라벨링을 피할 수 있어 음성 처리 분야에서 오랫동안 추구되어 온 목표입니다. 최근 몇 년간 음성 인식에 자기 지도 학습을 적용하는 데 큰 성공을 거두었지만, 화자 특성 모델링에 SSL을 적용하는 데는 제한적인 탐구만 이루어졌습니다. 본 논문에서는 화자 표현 학습을 위한 기존 SSL 프레임워크를 개선하는 것을 목표로 합니다. 비지도 화자 정보 추출을 강화하기 위해 두 가지 방법을 소개합니다. 첫째, 현재 SSL 프레임워크에 다중 작업 학습을 적용하여 발화 단위 대조적 손실을 SSL 목적 함수에 통합합니다. 둘째, 더 나은 화자 판별을 위해 데이터 증강을 위한 발화 혼합 전략을 제안하며, 여기서 추가된 겹치는 발화들을 비지도 방식으로 생성하여 학습 중에 통합합니다. 제안된 방법들을 HuBERT 프레임워크에 통합했습니다. SUPERB 벤치마크에 대한 실험 결과는 제안된 시스템이 보편적 표현 학습, 특히 화자 식별 지향 작업에서 최첨단 성능을 달성함을 보여줍니다. 각 제안된 방법의 유효성을 검증하기 위해 아블레이션 연구가 수행되었습니다. 마지막으로, 학습 데이터셋을 94,000시간의 공개 오디오 데이터로 확장하여 모든 SUPERB 작업에서 추가적인 성능 향상을 달성했습니다.*

이 모델은 [patrickvonplaten](https://huggingface.co/patrickvonplaten)님이 기여했습니다. 저자의 코드는 [여기](https://github.com/microsoft/UniSpeech/tree/main/UniSpeech-SAT)에서 찾을 수 있습니다.

## 사용 팁

- UniSpeechSat은 음성 신호의 원시 웨이브폼에 해당하는 float 배열을 입력으로 받는 음성 모델입니다. 특징 추출에는 [Wav2Vec2Processor](/docs/transformers/main/ko/model_doc/wav2vec2#transformers.Wav2Vec2Processor)를 사용하세요.
- UniSpeechSat 모델은 connectionist temporal classification(CTC)을 사용하여 fine-tune할 수 있으므로 모델 출력을 [Wav2Vec2CTCTokenizer](/docs/transformers/main/ko/model_doc/wav2vec2#transformers.Wav2Vec2CTCTokenizer)를 사용하여 디코딩해야 합니다.
- UniSpeechSat는 화자 인증, 화자 식별, 화자 분리 작업에서 특히 뛰어난 성능을 발휘합니다.

## 리소스

- [오디오 분류 작업 가이드](../tasks/audio_classification)
- [자동 음성 인식 작업 가이드](../tasks/asr)

## UniSpeechSatConfig[[transformers.UniSpeechSatConfig]]

#### transformers.UniSpeechSatConfig[[transformers.UniSpeechSatConfig]]

```python
transformers.UniSpeechSatConfig(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 = 32, hidden_size: int = 768, num_hidden_layers: int = 12, num_attention_heads: int = 12, intermediate_size: int = 3072, hidden_act: str = 'gelu', hidden_dropout: float | int = 0.1, activation_dropout: float | int = 0.1, attention_dropout: float | int = 0.1, feat_proj_dropout: float | int = 0.0, feat_quantizer_dropout: float | int = 0.0, final_dropout: float | int = 0.1, layerdrop: float | int = 0.1, initializer_range: float = 0.02, layer_norm_eps: float = 1e-05, feat_extract_norm: str = 'group', feat_extract_activation: str = 'gelu', conv_dim: list[int] | tuple[int, ...] = (512, 512, 512, 512, 512, 512, 512), conv_stride: list[int] | tuple[int, ...] = (5, 2, 2, 2, 2, 2, 2), conv_kernel: list[int] | tuple[int, ...] = (10, 3, 3, 3, 3, 2, 2), conv_bias: bool = False, num_conv_pos_embeddings: int = 128, num_conv_pos_embedding_groups: int = 16, do_stable_layer_norm: bool = False, apply_spec_augment: bool = True, mask_time_prob: float | int = 0.05, mask_time_length: int = 10, mask_time_min_masks: int = 2, mask_feature_prob: float | int = 0.0, mask_feature_length: int = 10, mask_feature_min_masks: int = 0, num_codevectors_per_group: int = 320, num_codevector_groups: int = 2, contrastive_logits_temperature: float = 0.1, num_negatives: int = 100, codevector_dim: int = 256, proj_codevector_dim: int = 256, diversity_loss_weight: float = 0.1, ctc_loss_reduction: str = 'mean', ctc_zero_infinity: bool = False, use_weighted_layer_sum: bool = False, classifier_proj_size: int = 256, tdnn_dim: list[int] | tuple[int, ...] = (512, 512, 512, 512, 1500), tdnn_kernel: list[int] | tuple[int, ...] = (5, 3, 3, 1, 1), tdnn_dilation: list[int] | tuple[int, ...] = (1, 2, 3, 1, 1), xvector_output_dim: int = 512, pad_token_id: int = 0, bos_token_id: int = 1, eos_token_id: int = 2, num_clusters: int = 504)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/configuration_unispeech_sat.py#L27)

**매개변수:**

vocab_size (`int`, *선택 사항*, 기본값 `32`) : 모델의 어휘 크기입니다. `input_ids`로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다.

hidden_size (`int`, *선택 사항*, 기본값 `768`) : 숨겨진 표현의 차원.

num_hidden_layers (`int`, *선택 사항*, 기본값 `12`) : Transformer decoder의 숨겨진 레이어 수입니다.

num_attention_heads (`int`, *선택 사항*, 기본값 `12`) : Transformer decoder의 각 attention layer에 사용되는 attention head의 수입니다.

intermediate_size (`int`, *선택 사항*, 기본값 `3072`) : MLP 표현의 차원.

hidden_act (`str`, *선택 사항*, 기본값 `gelu`) : 디코더에서 사용되는 비선형 활성화 함수(함수 또는 문자열). 예를 들어, `"gelu"`, `"relu"`, `"silu"` 등이 있습니다.

hidden_dropout (`Union[float, int]`, *선택 사항*, 기본값 `0.1`) : 임베딩, 인코더, 풀러의 모든 완전 연결 계층에 적용되는 dropout 확률입니다.

activation_dropout (`Union[float, int]`, *선택 사항*, 기본값 `0.1`) : 완전 연결 계층 내부 활성화의 dropout 비율입니다.

attention_dropout (`Union[float, int]`, *선택 사항*, 기본값 `0.1`) : attention 확률에 적용할 dropout 비율입니다.

feat_proj_dropout (`float`, *선택 사항*, 기본값 0.0) : feature encoder 출력의 dropout 확률입니다.

feat_quantizer_dropout (`float`, *선택 사항*, 기본값 0.0) : 양자화기에 사용되는 특징 인코더의 출력에 적용되는 dropout 확률입니다.

final_dropout (`float`, *선택 사항*, 기본값 0.1) : [UniSpeechSatForCTC](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatForCTC)의 최종 투영 레이어에 대한 dropout 확률입니다.

layerdrop (`Union[float, int]`, *선택 사항*, 기본값 `0.1`) : LayerDrop 확률입니다. 자세한 내용은 [LayerDrop 논문](see https://huggingface.co/papers/1909.11556)을 참고하세요.

initializer_range (`float`, *선택 사항*, 기본값 `0.02`) : 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.

layer_norm_eps (`float`, *선택 사항*, 기본값 `1e-05`) : layer normalization 레이어에서 사용되는 epsilon 값입니다.

feat_extract_norm (`str`, *선택 사항*, 기본값 `"group"`) : feature encoder의 1D convolutional layer에 적용할 norm입니다. 첫 번째 1D convolutional layer에만 group normalization을 적용하는 `"group"` 또는 모든 1D convolutional layer에 layer normalization을 적용하는 `"layer"` 중 하나입니다.

feat_extract_activation (`str, *optional*, defaults to `"gelu"`) : The non-linear activation function (function or string) in the 1D convolutional layers of the feature extractor. If string, `"gelu"`, `"relu"`, `"selu"` and `"gelu_new"` are supported.

conv_dim (`tuple[int]` 또는 `list[int]`, *선택 사항*, 기본값은 `(512, 512, 512, 512, 512, 512, 512)`) : 특징 인코더의 각 1D 합성곱 레이어의 입력 및 출력 채널 수를 정의하는 정수 튜플입니다. *conv_dim*의 길이는 1D 합성곱 레이어의 수를 정의합니다.

conv_stride (`tuple[int]` 또는 `list[int]`, *선택 사항*, 기본값은 `(5, 2, 2, 2, 2, 2, 2)`) : 특징 인코더의 각 1D 컨볼루션 레이어의 스트라이드를 정의하는 정수 튜플입니다. *conv_stride*의 길이는 컨볼루션 레이어의 수를 정의하며 *conv_dim*의 길이와 일치해야 합니다.

conv_kernel (`tuple[int]` 또는 `list[int]`, *선택 사항*, 기본값은 `(10, 3, 3, 3, 3, 2, 2)`) : 특징 인코더의 각 1D 합성곱 레이어의 커널 크기를 정의하는 정수 튜플입니다. *conv_kernel*의 길이는 합성곱 레이어의 수를 정의하며 *conv_dim*의 길이와 일치해야 합니다.

conv_bias (`bool`, *선택 사항*, 기본값 `False`) : 1D 컨볼루션 레이어에 bias가 있는지 여부.

num_conv_pos_embeddings (`int`, *선택 사항*, 기본값 128) : 합성곱 위치 임베딩의 수. 1차원 합성곱 위치 임베딩 레이어의 커널 크기를 정의합니다.

num_conv_pos_embedding_groups (`int`, *선택 사항*, 기본값 16) : 1D 컨볼루션 위치 임베딩 레이어의 그룹 수.

do_stable_layer_norm (`bool`, *선택 사항*, 기본값 `False`) : Transformer 인코더의 *안정적인* layer norm 아키텍처를 적용할지 여부. `do_stable_layer_norm is True`는 attention 레이어 전에 layer norm을 적용하는 것을 의미하고, `do_stable_layer_norm is False`는 attention 레이어 후에 layer norm을 적용하는 것을 의미합니다.

apply_spec_augment (`bool`, *선택 사항*, 기본값 `True`) : feature encoder의 출력에 *SpecAugment* 데이터 증강을 적용할지 여부. 참고로 [SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition](https://huggingface.co/papers/1904.08779)를 확인하세요.

mask_time_prob (`float`, *선택 사항*, 기본값 0.05) : 시간 축을 따라 모든 특징 벡터 중 마스킹될 비율(0에서 1 사이). 마스킹 절차는 해당 축에 대해 ''mask_time_prob*len(time_axis)/mask_time_length''개의 독립적인 마스킹을 생성합니다. 마스킹될 벡터 스팬의 시작점으로 선택될 각 특징 벡터의 확률로부터 추론한다면, *mask_time_prob*는 `prob_vector_start*mask_time_length`여야 합니다. 겹침으로 인해 실제 마스킹된 벡터의 비율이 감소할 수 있습니다. 이는 `apply_spec_augment is True`인 경우에만 관련이 있습니다.

mask_time_length (`int`, *선택 사항*, 기본값 10) : 시간 축을 따라 벡터가 확장되는 길이.

mask_time_min_masks (`int`, *선택 사항*, 기본값 2) : `mask_feature_prob`와 무관하게, 각 시간 단계에서 시간 축을 따라 생성되는 길이 `mask_feature_length`인 최소 마스크 수입니다. ''mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks''인 경우에만 관련이 있습니다.

mask_feature_prob (`float`, *선택 사항*, 기본값 0.0) : feature 축을 따라 모든 feature 벡터 중 마스킹될 비율(0에서 1 사이). 마스킹 절차는 해당 축에 대해 ''mask_feature_prob*len(feature_axis)/mask_time_length''개의 독립적인 마스크를 생성합니다. 각 feature 벡터가 마스킹될 벡터 스팬의 시작점으로 선택될 확률로부터 추론한다면, *mask_feature_prob*은 `prob_vector_start*mask_feature_length`여야 합니다. 겹침(overlap)으로 인해 실제 마스킹된 벡터의 비율이 감소할 수 있습니다. 이는 `apply_spec_augment is True`인 경우에만 관련이 있습니다.

mask_feature_length (`int`, *선택 사항*, 기본값 10) : feature 축을 따라 벡터가 확장되는 길이.

mask_feature_min_masks (`int`, *선택 사항*, 기본값 0) : `mask_feature_prob`와 무관하게, 각 시간 단계마다 feature 축을 따라 생성되는 길이 `mask_feature_length`인 최소 마스크 수입니다. ''mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks''인 경우에만 관련이 있습니다.

num_codevectors_per_group (`int`, *선택 사항*, 기본값 320) : 각 양자화 코드북(그룹)의 항목 수

num_codevector_groups (`int`, *선택 사항*, 기본값 2) : product codevector quantization을 위한 codevector 그룹 수.

contrastive_logits_temperature (`float`, *선택 사항*, 기본값 0.1) : 대조적 손실(contrastive loss)의 온도 *kappa*입니다.

num_negatives (`int`, *선택 사항*, 기본값 100) : 대조적 손실에 사용할 음의 샘플 수.

codevector_dim (`int`, *선택 사항*, 기본값 256) : 양자화된 특징 벡터의 차원입니다.

proj_codevector_dim (`int`, *선택 사항*, 기본값 256) : 양자화된 특징과 transformer 특징 모두의 최종 투영 차원입니다.

diversity_loss_weight (`int`, *선택 사항*, 기본값 0.1) : 코드북 다양성 손실 구성 요소의 가중치입니다.

ctc_loss_reduction (`str`, *선택 사항*, 기본값 `mean`) : `torch.nn.CTCLoss`의 출력에 적용할 리덕션을 지정합니다. 학습 시에만 관련이 있습니다.

ctc_zero_infinity (`bool`, *선택 사항*, 기본값 `False`) : `torch.nn.CTCLoss`의 무한 손실과 관련 그래디언트를 0으로 설정할지 여부입니다. 무한 손실은 주로 입력이 대상과 정렬하기에 너무 짧을 때 발생합니다. [UniSpeechSatForCTC](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatForCTC) 인스턴스를 학습하는 경우에만 관련이 있습니다.

use_weighted_layer_sum (`bool`, *선택 사항*, 기본값 `False`) : 학습된 가중치를 사용하여 레이어 출력의 가중 평균을 사용할지 여부. [UniSpeechSatForSequenceClassification](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatForSequenceClassification) 인스턴스를 사용할 때만 관련이 있습니다.

classifier_proj_size (`int`, *선택 사항*, 기본값 256) : 분류를 위한 토큰 평균 풀링 전에 투영의 차원.

tdnn_dim (`tuple[int]` 또는 `list[int]`, *선택 사항*, 기본값은 `(512, 512, 512, 512, 1500)`) : *XVector* 모델의 *TDNN* 모듈에서 각 1D 컨볼루션 레이어의 출력 채널 수를 정의하는 정수 튜플입니다. *tdnn_dim*의 길이는 *TDNN* 레이어의 수를 정의합니다.

tdnn_kernel (`tuple[int]` 또는 `list[int]`, *선택 사항*, 기본값은 `(5, 3, 3, 1, 1)`) : *XVector* 모델의 *TDNN* 모듈에서 각 1D 컨볼루션 레이어의 커널 크기를 정의하는 정수 튜플입니다. *tdnn_kernel*의 길이는 *tdnn_dim*의 길이와 일치해야 합니다.

tdnn_dilation (`tuple[int]` 또는 `list[int]`, *선택 사항*, 기본값은 `(1, 2, 3, 1, 1)`) : *XVector* 모델의 *TDNN* 모듈에서 각 1D 컨볼루션 레이어의 팽창 계수를 정의하는 정수 튜플입니다. *tdnn_dilation*의 길이는 *tdnn_dim*의 길이와 일치해야 합니다.

xvector_output_dim (`int`, *선택 사항*, 기본값 512) : *XVector* 임베딩 벡터의 차원입니다.

pad_token_id (`int`, *선택 사항*, 기본값 `0`) : 어휘에서 패딩에 사용되는 토큰 ID입니다.

bos_token_id (`int`, *선택 사항*, 기본값 `1`) : 어휘에서 스트림 시작에 사용되는 토큰 ID입니다.

eos_token_id (`int`, *선택 사항*, 기본값 `2`) : 어휘에서 스트림 종료에 사용되는 토큰 ID입니다.

num_clusters (`int`, *선택 사항*, 기본값 504) : 약한 라벨링을 위한 클러스터 수. [UniSpeechSatForPreTraining](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatForPreTraining) 인스턴스를 사용할 때만 관련이 있습니다.

이것은 Unispeech SatModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Unispeech Sat 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 [microsoft/unispeech-sat-base-100h-libri-ft](https://huggingface.co/microsoft/unispeech-sat-base-100h-libri-ft)와 유사한 구성이 생성됩니다.

Configuration 객체는 [PreTrainedConfig](/docs/transformers/main/ko/main_classes/configuration#transformers.PreTrainedConfig)를 상속하며, 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 [PreTrainedConfig](/docs/transformers/main/ko/main_classes/configuration#transformers.PreTrainedConfig)의 문서를 참고하세요.

예:

```python
>>> from transformers import UniSpeechSatModel, UniSpeechSatConfig

>>> # Initializing a UniSpeechSat microsoft/unispeech-sat-base-100h-libri-ft style configuration
>>> configuration = UniSpeechSatConfig()

>>> # Initializing a model from the microsoft/unispeech-sat-base-100h-libri-ft style configuration
>>> model = UniSpeechSatModel(configuration)

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

## UniSpeechSat의 특정 출력[[transformers.models.unispeech_sat.modeling_unispeech_sat.UniSpeechSatForPreTrainingOutput]]

#### transformers.models.unispeech_sat.modeling_unispeech_sat.UniSpeechSatForPreTrainingOutput[[transformers.models.unispeech_sat.modeling_unispeech_sat.UniSpeechSatForPreTrainingOutput]]

```python
transformers.models.unispeech_sat.modeling_unispeech_sat.UniSpeechSatForPreTrainingOutput(loss: typing.Optional[torch.Tensor] = None, logits: typing.Optional[torch.Tensor] = None, projected_states: typing.Optional[torch.Tensor] = None, projected_quantized_states: typing.Optional[torch.Tensor] = None, codevector_perplexity: typing.Optional[torch.Tensor] = None, hidden_states: tuple[torch.Tensor] | None = None, attentions: tuple[torch.Tensor] | None = None)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/modeling_unispeech_sat.py#L65)

**매개변수:**

loss (`*optional*`, 모델이 train 모드일 때 반환되며, `torch.Tensor`의 shape은 `(1,)`) : [공식 논문](https://huggingface.co/papers/2006.11477)에 명시된 대로, contrastive loss(L_m)와 diversity loss(L_d)의 합으로 계산된 총 손실.

logits (`torch.Tensor`, shape `(batch_size, sequence_length, config.proj_codevector_dim)`, *선택 사항*) : 대조적 손실 모델의 예측 점수, 즉 최종 softmax 이전의 모델 출력입니다.

projected_states (`torch.Tensor`, shape `(batch_size, sequence_length, config.proj_codevector_dim)`) : *config.proj_codevector_dim*으로 투영된 모델의 hidden-states. 마스킹된 투영 양자화 상태를 예측하는 데 사용할 수 있습니다.

projected_quantized_states (`torch.Tensor`, shape `(batch_size, sequence_length, config.proj_codevector_dim)`) : contrastive loss의 양(positive) 대상 벡터를 나타내는 *config.proj_codevector_dim*으로 투영된 양자화 추출 특징 벡터

codevector_perplexity (`torch.Tensor`, shape `(1,)`) : codevector 분포의 perplexity로, codebook의 다양성을 측정하는 데 사용됩니다.

hidden_states (`tuple[torch.Tensor]`, *선택 사항*, `output_hidden_states=True`가 전달되거나 `config.output_hidden_states=True`인 경우 반환됨) : `torch.Tensor`의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은 `(batch_size, sequence_length, hidden_size)`입니다. 각 레이어 출력 시점의 모델 hidden-states와 선택적인 초기 임베딩 출력을 포함합니다.

attentions (`tuple[torch.Tensor]`, *선택 사항*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환됨) : `torch.Tensor`의 튜플(레이어당 하나), shape은 `(batch_size, num_heads, sequence_length, sequence_length)`입니다. attention softmax 이후의 attention 가중치로, self-attention 헤드에서 가중 평균을 계산하는 데 사용됩니다.

`UniSpeechSatForPreTrainingOutput`의 출력 유형으로, 잠재적 hidden states와 attentions를 포함합니다.

## UniSpeechSatModel[[transformers.UniSpeechSatModel]]

#### transformers.UniSpeechSatModel[[transformers.UniSpeechSatModel]]

```python
transformers.UniSpeechSatModel(config: UniSpeechSatConfig)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/modeling_unispeech_sat.py#L878)

**매개변수:**

config ([UniSpeechSatConfig](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

특정 헤드가 위에 없는 상태에서 원시 hidden-states를 출력하는 기본 Unispeech Sat Model입니다.

이 모델은 [PreTrainedModel](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel)에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대해서는 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법과 동작에 관한 모든 사항은 PyTorch 문서를 참조하세요.

#### forward[[transformers.UniSpeechSatModel.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/modeling_unispeech_sat.py#L941)

**매개변수:**

input_values (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*) : 입력 원시 음성 파형의 부동 소수점 값. `.flac` 또는 `.wav` 오디오 파일을 `list[float]`, `numpy.ndarray` 또는 `torch.Tensor` 타입의 배열로 로드하여 값을 얻을 수 있습니다. *예를 들어*, torchcodec 라이브러리 (`pip install torchcodec`) 또는 soundfile 라이브러리 (`pip install soundfile`)를 통해 가능합니다. `input_values`로 배열을 준비하려면 패딩 및 `torch.Tensor` 타입의 텐서 변환을 위해 [AutoProcessor](/docs/transformers/main/ko/model_doc/auto#transformers.AutoProcessor)를 사용해야 합니다. 자세한 내용은 [Wav2Vec2Processor.__call__()](/docs/transformers/main/ko/model_doc/wav2vec2#transformers.Wav2Vec2Processor.__call__)를 참조하세요.

attention_mask (`torch.Tensor`, shape `(batch_size, sequence_length)`, *선택 사항*) : 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크입니다. `[0, 1]`에서 선택된 마스크 값: - **마스크되지 않은** 토큰은 1, - **마스크된** 토큰은 0. [attention 마스크란?](../glossary#attention-mask)

mask_time_indices (`torch.BoolTensor`, shape `(batch_size, sequence_length)`, *선택 사항*) : 대조적 손실을 위해 추출된 특징을 가리기 위한 인덱스입니다. 학습 모드일 때, 모델은 *config.proj_codevector_dim* 공간에서 가려진 추출된 특징을 예측하도록 학습합니다.

**반환값:** [Wav2Vec2BaseModelOutput](/docs/transformers/main/ko/model_doc/wav2vec2#transformers.modeling_outputs.Wav2Vec2BaseModelOutput) 또는 `tuple(torch.Tensor)`

구성([UniSpeechSatConfig](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatConfig))과 입력에 따라 다양한 요소를 포함하는 [Wav2Vec2BaseModelOutput](/docs/transformers/main/ko/model_doc/wav2vec2#transformers.modeling_outputs.Wav2Vec2BaseModelOutput) 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우).

[UniSpeechSatModel](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatModel)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **last_hidden_state** (`torch.Tensor`, shape `(batch_size, sequence_length, hidden_size)`) -- 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.
- **extract_features** (`torch.Tensor`, shape `(batch_size, sequence_length, conv_dim[-1])`) -- 모델의 마지막 컨볼루션 레이어에서 추출된 특징 벡터의 시퀀스.
- **hidden_states** (`tuple(torch.Tensor)`, *선택*, `output_hidden_states=True`가 전달되었거나 `config.output_hidden_states=True`일 때 반환) -- shape가 `(batch_size, sequence_length, hidden_size)`인 `torch.Tensor`의 튜플 (임베딩 출력 1개 + 각 레이어 출력 1개).

  각 레이어의 출력에서 모델의 Hidden-states와 초기 임베딩 출력을 더한 값.
- **attentions** (`tuple(torch.Tensor)`, *선택 사항*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환됨) -- 각 레이어마다 하나씩 포함된 `torch.Tensor`의 튜플로, 모양은 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치입니다.

## UniSpeechSatForCTC[[transformers.UniSpeechSatForCTC]]

#### transformers.UniSpeechSatForCTC[[transformers.UniSpeechSatForCTC]]

```python
transformers.UniSpeechSatForCTC(config: UniSpeechSatConfig, target_lang: str | None = None)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/modeling_unispeech_sat.py#L1093)

**매개변수:**

config ([UniSpeechSatConfig](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

target_lang (`str`, *선택 사항*) : 어댑터 가중치의 언어 ID입니다. 어댑터 가중치는 adapter..safetensors 또는 adapter..bin 형식으로 저장됩니다. 어댑터를 사용하는 [UniSpeechSatForCTC](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatForCTC) 인스턴스를 사용할 때만 관련이 있습니다. 기본값은 'eng'입니다.

Connectionist Temporal Classification(CTC)을 위해 `language modeling` 헤드를 최상단에 적용한 UniSpeechSat 모델입니다.

이 모델은 [PreTrainedModel](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel)에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대해서는 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법과 동작에 관한 모든 사항은 PyTorch 문서를 참조하세요.

#### forward[[transformers.UniSpeechSatForCTC.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/modeling_unispeech_sat.py#L1162)

**매개변수:**

input_values (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*) : 입력 원시 음성 파형의 부동 소수점 값. `.flac` 또는 `.wav` 오디오 파일을 `list[float]`, `numpy.ndarray` 또는 `torch.Tensor` 타입의 배열로 로드하여 값을 얻을 수 있습니다. *예를 들어*, torchcodec 라이브러리 (`pip install torchcodec`) 또는 soundfile 라이브러리 (`pip install soundfile`)를 통해 가능합니다. `input_values`로 배열을 준비하려면 패딩 및 `torch.Tensor` 타입의 텐서 변환을 위해 [AutoProcessor](/docs/transformers/main/ko/model_doc/auto#transformers.AutoProcessor)를 사용해야 합니다. 자세한 내용은 [Wav2Vec2Processor.__call__()](/docs/transformers/main/ko/model_doc/wav2vec2#transformers.Wav2Vec2Processor.__call__)를 참조하세요.

attention_mask (`torch.Tensor`, shape `(batch_size, sequence_length)`, *선택 사항*) : 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크입니다. `[0, 1]`에서 선택된 마스크 값: - **마스크되지 않은** 토큰은 1, - **마스크된** 토큰은 0. [attention 마스크란?](../glossary#attention-mask)

labels (`torch.LongTensor`, shape `(batch_size, target_length)`, *선택 사항*) : Connectionist Temporal Classification용 라벨. `target_length`은 출력 logits의 시퀀스 길이보다 작거나 같아야 합니다. 인덱스는 `[-100, 0, ..., config.vocab_size - 1]`에서 선택됩니다. `-100`으로 설정된 모든 라벨은 무시(마스크)되며, 손실은 `[0, ..., config.vocab_size - 1]`에 있는 라벨에 대해서만 계산됩니다.

**반환값:** [CausalLMOutput](/docs/transformers/main/ko/main_classes/output#transformers.modeling_outputs.CausalLMOutput) 또는 `tuple(torch.Tensor)`

구성([UniSpeechSatConfig](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatConfig))과 입력에 따라 다양한 요소를 포함하는 [CausalLMOutput](/docs/transformers/main/ko/main_classes/output#transformers.modeling_outputs.CausalLMOutput) 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우).

[UniSpeechSatForCTC](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatForCTC)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **loss** (`torch.Tensor`, shape `(1,)`, *선택 사항*, `labels`가 제공될 때 반환됨) -- 언어 모델링 손실(다음 토큰 예측용).
- **logits** (`torch.Tensor`, shape `(batch_size, sequence_length, config.vocab_size)`) -- 언어 모델링 헤드에서 생성된 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).
- **hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`가 전달되었거나 `config.output_hidden_states=True`인 경우 반환됨) -- `torch.Tensor`의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 형태는 `(batch_size, sequence_length, hidden_size)`입니다.

  각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
- **attentions** (`tuple(torch.Tensor)`, *선택 사항*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환됨) -- 각 레이어마다 하나씩 포함된 `torch.Tensor`의 튜플로, 모양은 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치입니다.

예:

```python
>>> from transformers import AutoProcessor, UniSpeechSatForCTC
>>> 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("microsoft/unispeech-sat-base-100h-libri-ft")
>>> model = UniSpeechSatForCTC.from_pretrained("microsoft/unispeech-sat-base-100h-libri-ft")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)

>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...

>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids

>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...
```

## UniSpeechSatForSequenceClassification[[transformers.UniSpeechSatForSequenceClassification]]

#### transformers.UniSpeechSatForSequenceClassification[[transformers.UniSpeechSatForSequenceClassification]]

```python
transformers.UniSpeechSatForSequenceClassification(config: UniSpeechSatConfig)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/modeling_unispeech_sat.py#L1220)

**매개변수:**

config ([UniSpeechSatConfig](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

SUPERB Keyword Spotting와 같은 작업을 위해, 풀링된 출력 위에 선형 레이어를 적용한 시퀀스 분류 헤드를 갖춘 UniSpeechSat 모델

이 모델은 [PreTrainedModel](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel)에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대해서는 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법과 동작에 관한 모든 사항은 PyTorch 문서를 참조하세요.

#### forward[[transformers.UniSpeechSatForSequenceClassification.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/modeling_unispeech_sat.py#L1253)

**매개변수:**

input_values (`torch.Tensor`, shape `(batch_size, sequence_length)`) : 입력 원시 음성 웨이브폼의 부동소수점 값. `.flac` 또는 `.wav` 오디오 파일을 `list[float]`, `numpy.ndarray` 또는 `torch.Tensor` 타입의 배열로 로드하여 값을 얻을 수 있습니다. 예를 들어, torchcodec 라이브러리(`pip install torchcodec`) 또는 soundfile 라이브러리(`pip install soundfile`)를 통해 *예를 들어* 가능합니다. `input_values` 배열을 준비하려면 패딩 및 `torch.Tensor` 타입의 텐서 변환을 위해 [AutoProcessor](/docs/transformers/main/ko/model_doc/auto#transformers.AutoProcessor)를 사용해야 합니다. 자세한 내용은 `UniSpeechSatProcessor.__call__`를 참조하세요.

attention_mask (`torch.Tensor`, shape `(batch_size, sequence_length)`, *선택 사항*) : 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크입니다. `[0, 1]`에서 선택된 마스크 값: - **마스크되지 않은** 토큰은 1, - **마스크된** 토큰은 0. [attention 마스크란?](../glossary#attention-mask)

labels (`torch.LongTensor`, shape `(batch_size,)`, *선택 사항*) : 시퀀스 분류/회귀 손실을 계산하는 데 사용되는 라벨. 인덱스는 `[0, ..., config.num_labels - 1]` 범위에 있어야 합니다. `config.num_labels == 1`인 경우 회귀 손실(평균 제곱 오차)이 계산되고, `config.num_labels > 1`인 경우 분류 손실(교차 엔트로피)이 계산됩니다.

**반환값:** [SequenceClassifierOutput](/docs/transformers/main/ko/main_classes/output#transformers.modeling_outputs.SequenceClassifierOutput) 또는 `tuple(torch.Tensor)`

구성([UniSpeechSatConfig](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatConfig))과 입력에 따라 다양한 요소를 포함하는 [SequenceClassifierOutput](/docs/transformers/main/ko/main_classes/output#transformers.modeling_outputs.SequenceClassifierOutput) 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우).

[UniSpeechSatForSequenceClassification](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatForSequenceClassification)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **loss** (`torch.Tensor`, shape `(1,)`, *선택*, `labels`이 제공될 때 반환됨) -- 분류(또는 config.num_labels==1인 경우 회귀) 손실.
- **logits** (`torch.Tensor`, shape `(batch_size, config.num_labels)`) -- SoftMax 적용 전 분류(또는 config.num_labels==1인 경우 회귀) 점수.
- **hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`가 전달되었거나 `config.output_hidden_states=True`인 경우 반환됨) -- `torch.Tensor`의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 형태는 `(batch_size, sequence_length, hidden_size)`입니다.

  각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
- **attentions** (`tuple(torch.Tensor)`, *선택 사항*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환됨) -- 각 레이어마다 하나씩 포함된 `torch.Tensor`의 튜플로, 모양은 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치입니다.

단일 레이블 분류의 예시:

```python
>>> import torch
>>> from transformers import AutoTokenizer, UniSpeechSatForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/unispeech-sat-base-100h-libri-ft")
>>> model = UniSpeechSatForSequenceClassification.from_pretrained("microsoft/unispeech-sat-base-100h-libri-ft")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = UniSpeechSatForSequenceClassification.from_pretrained("microsoft/unispeech-sat-base-100h-libri-ft", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...
```

다중 레이블 분류의 예시:

```python
>>> import torch
>>> from transformers import AutoTokenizer, UniSpeechSatForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/unispeech-sat-base-100h-libri-ft")
>>> model = UniSpeechSatForSequenceClassification.from_pretrained("microsoft/unispeech-sat-base-100h-libri-ft", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = UniSpeechSatForSequenceClassification.from_pretrained(
...     "microsoft/unispeech-sat-base-100h-libri-ft", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss
```

## UniSpeechSatForAudioFrameClassification[[transformers.UniSpeechSatForAudioFrameClassification]]

#### transformers.UniSpeechSatForAudioFrameClassification[[transformers.UniSpeechSatForAudioFrameClassification]]

```python
transformers.UniSpeechSatForAudioFrameClassification(config: UniSpeechSatConfig)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/modeling_unispeech_sat.py#L1313)

**매개변수:**

config ([UniSpeechSatConfig](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

Speaker Diarization과 같은 작업을 위해 프레임 분류 헤드가 위에 있는 Unispeech Sat 모델.

이 모델은 [PreTrainedModel](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel)에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대해서는 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법과 동작에 관한 모든 사항은 PyTorch 문서를 참조하세요.

#### forward[[transformers.UniSpeechSatForAudioFrameClassification.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/modeling_unispeech_sat.py#L1345)

**매개변수:**

input_values (`torch.Tensor`, shape `(batch_size, sequence_length)`) : 입력 원시 음성 웨이브폼의 부동소수점 값. `.flac` 또는 `.wav` 오디오 파일을 `list[float]`, `numpy.ndarray` 또는 `torch.Tensor` 타입의 배열로 로드하여 값을 얻을 수 있습니다. 예를 들어, torchcodec 라이브러리(`pip install torchcodec`) 또는 soundfile 라이브러리(`pip install soundfile`)를 통해 *예를 들어* 가능합니다. `input_values` 배열을 준비하려면 패딩 및 `torch.Tensor` 타입의 텐서 변환을 위해 [AutoProcessor](/docs/transformers/main/ko/model_doc/auto#transformers.AutoProcessor)를 사용해야 합니다. 자세한 내용은 `UniSpeechSatProcessor.__call__`를 참조하세요.

attention_mask (`torch.Tensor`, shape `(batch_size, sequence_length)`, *선택 사항*) : 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크입니다. `[0, 1]`에서 선택된 마스크 값: - **마스크되지 않은** 토큰은 1, - **마스크된** 토큰은 0. [attention 마스크란?](../glossary#attention-mask)

labels (`torch.LongTensor`, shape `(batch_size,)`, *선택 사항*) : 시퀀스 분류/회귀 손실을 계산하는 데 사용되는 라벨. 인덱스는 `[0, ..., config.num_labels - 1]` 범위에 있어야 합니다. `config.num_labels == 1`인 경우 회귀 손실(평균 제곱 오차)이 계산되고, `config.num_labels > 1`인 경우 분류 손실(교차 엔트로피)이 계산됩니다.

**반환값:** [TokenClassifierOutput](/docs/transformers/main/ko/main_classes/output#transformers.modeling_outputs.TokenClassifierOutput) 또는 `tuple(torch.Tensor)`

구성([UniSpeechSatConfig](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatConfig))과 입력에 따라 다양한 요소를 포함하는 [TokenClassifierOutput](/docs/transformers/main/ko/main_classes/output#transformers.modeling_outputs.TokenClassifierOutput) 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우).

[UniSpeechSatForAudioFrameClassification](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatForAudioFrameClassification)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **loss** (`torch.Tensor`, shape `(1,)`, *선택 사항*, `labels`가 제공될 때 반환됨) -- 분류 손실.
- **logits** (`torch.Tensor`, shape `(batch_size, sequence_length, config.num_labels)`) -- SoftMax 적용 전 분류 점수.
- **hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`가 전달되었거나 `config.output_hidden_states=True`인 경우 반환됨) -- `torch.Tensor`의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 형태는 `(batch_size, sequence_length, hidden_size)`입니다.

  각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
- **attentions** (`tuple(torch.Tensor)`, *선택 사항*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환됨) -- 각 레이어마다 하나씩 포함된 `torch.Tensor`의 튜플로, 모양은 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치입니다.

예:

```python
>>> from transformers import AutoFeatureExtractor, UniSpeechSatForAudioFrameClassification
>>> 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

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("microsoft/unispeech-sat-base-100h-libri-ft")
>>> model = UniSpeechSatForAudioFrameClassification.from_pretrained("microsoft/unispeech-sat-base-100h-libri-ft")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(dataset[0]["audio"]["array"], return_tensors="pt", sampling_rate=sampling_rate)
>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> probabilities = torch.sigmoid(logits[0])
>>> # labels is a one-hot array of shape (num_frames, num_speakers)
>>> labels = (probabilities > 0.5).long()
>>> labels[0].tolist()
...
```

## UniSpeechSatForXVector[[transformers.UniSpeechSatForXVector]]

#### transformers.UniSpeechSatForXVector[[transformers.UniSpeechSatForXVector]]

```python
transformers.UniSpeechSatForXVector(config: UniSpeechSatConfig)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/modeling_unispeech_sat.py#L1459)

**매개변수:**

config ([UniSpeechSatConfig](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

Speaker Verification와 같은 작업을 위해 XVector feature extraction head를 상단에 결합한 UniSpeechSat Model입니다.

이 모델은 [PreTrainedModel](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel)에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대해서는 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법과 동작에 관한 모든 사항은 PyTorch 문서를 참조하세요.

#### forward[[transformers.UniSpeechSatForXVector.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/modeling_unispeech_sat.py#L1509)

**매개변수:**

input_values (`torch.Tensor`, shape `(batch_size, sequence_length)`) : 입력 원시 음성 웨이브폼의 부동소수점 값. `.flac` 또는 `.wav` 오디오 파일을 `list[float]`, `numpy.ndarray` 또는 `torch.Tensor` 타입의 배열로 로드하여 값을 얻을 수 있습니다. 예를 들어, torchcodec 라이브러리(`pip install torchcodec`) 또는 soundfile 라이브러리(`pip install soundfile`)를 통해 *예를 들어* 가능합니다. `input_values` 배열을 준비하려면 패딩 및 `torch.Tensor` 타입의 텐서 변환을 위해 [AutoProcessor](/docs/transformers/main/ko/model_doc/auto#transformers.AutoProcessor)를 사용해야 합니다. 자세한 내용은 `UniSpeechSatProcessor.__call__`를 참조하세요.

attention_mask (`torch.Tensor`, shape `(batch_size, sequence_length)`, *선택 사항*) : 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크입니다. `[0, 1]`에서 선택된 마스크 값: - **마스크되지 않은** 토큰은 1, - **마스크된** 토큰은 0. [attention 마스크란?](../glossary#attention-mask)

labels (`torch.LongTensor`, shape `(batch_size,)`, *선택 사항*) : 시퀀스 분류/회귀 손실을 계산하는 데 사용되는 라벨. 인덱스는 `[0, ..., config.num_labels - 1]` 범위에 있어야 합니다. `config.num_labels == 1`인 경우 회귀 손실(평균 제곱 오차)이 계산되고, `config.num_labels > 1`인 경우 분류 손실(교차 엔트로피)이 계산됩니다.

**반환값:** [XVectorOutput](/docs/transformers/main/ko/main_classes/output#transformers.modeling_outputs.XVectorOutput) 또는 `tuple(torch.Tensor)`

구성([UniSpeechSatConfig](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatConfig))과 입력에 따라 다양한 요소를 포함하는 [XVectorOutput](/docs/transformers/main/ko/main_classes/output#transformers.modeling_outputs.XVectorOutput) 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우).

[UniSpeechSatForXVector](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatForXVector)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **loss** (`torch.Tensor`, shape `(1,)`, *선택 사항*, `labels`가 제공될 때 반환됨) -- 분류 손실.
- **logits** (shape `(batch_size, config.xvector_output_dim)`인 `torch.Tensor`) -- AMSoftmax 적용 전 분류 hidden states.
- **embeddings** (`torch.Tensor`, shape `(batch_size, config.xvector_output_dim)`) -- 벡터 유사도 기반 검색에 사용되는 발화 임베딩.
- **hidden_states** (`tuple(torch.Tensor)`, *선택*, `output_hidden_states=True`가 전달되었거나 `config.output_hidden_states=True`일 때 반환) -- shape가 `(batch_size, sequence_length, hidden_size)`인 `torch.Tensor`의 튜플 (임베딩 출력 1개 + 각 레이어 출력 1개).

  각 레이어의 출력에서 모델의 Hidden-states와 초기 임베딩 출력을 더한 값.
- **attentions** (`tuple(torch.Tensor)`, *선택 사항*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환됨) -- 각 레이어마다 하나씩 포함된 `torch.Tensor`의 튜플로, 모양은 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치입니다.

예:

```python
>>> from transformers import AutoFeatureExtractor, UniSpeechSatForXVector
>>> 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

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("microsoft/unispeech-sat-base-100h-libri-ft")
>>> model = UniSpeechSatForXVector.from_pretrained("microsoft/unispeech-sat-base-100h-libri-ft")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(
...     [d["array"] for d in dataset[:2]["audio"]], sampling_rate=sampling_rate, return_tensors="pt", padding=True
... )
>>> with torch.no_grad():
...     embeddings = model(**inputs).embeddings

>>> embeddings = torch.nn.functional.normalize(embeddings, dim=-1).cpu()

>>> # the resulting embeddings can be used for cosine similarity-based retrieval
>>> cosine_sim = torch.nn.CosineSimilarity(dim=-1)
>>> similarity = cosine_sim(embeddings[0], embeddings[1])
>>> threshold = 0.7  # the optimal threshold is dataset-dependent
>>> if similarity < threshold:
...     print("Speakers are not the same!")
>>> round(similarity.item(), 2)
...
```

## UniSpeechSatForPreTraining[[transformers.UniSpeechSatForPreTraining]]

#### transformers.UniSpeechSatForPreTraining[[transformers.UniSpeechSatForPreTraining]]

```python
transformers.UniSpeechSatForPreTraining(config: UniSpeechSatConfig)
```

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/modeling_unispeech_sat.py#L987)

**매개변수:**

config ([UniSpeechSatConfig](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

벡터 양자화 모듈과 ctc 손실을 사용하여 사전 학습을 수행하는 UniSpeechSat 모델.

이 모델은 [PreTrainedModel](/docs/transformers/main/ko/main_classes/model#transformers.PreTrainedModel)에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대해서는 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법과 동작에 관한 모든 사항은 PyTorch 문서를 참조하세요.

#### forward[[transformers.UniSpeechSatForPreTraining.forward]]

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

[소스](https://github.com/huggingface/transformers/blob/main/src/transformers/models/unispeech_sat/modeling_unispeech_sat.py#L1043)

**매개변수:**

input_values (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*) : 입력 원시 음성 파형의 부동 소수점 값. `.flac` 또는 `.wav` 오디오 파일을 `list[float]`, `numpy.ndarray` 또는 `torch.Tensor` 타입의 배열로 로드하여 값을 얻을 수 있습니다. *예를 들어*, torchcodec 라이브러리 (`pip install torchcodec`) 또는 soundfile 라이브러리 (`pip install soundfile`)를 통해 가능합니다. `input_values`로 배열을 준비하려면 패딩 및 `torch.Tensor` 타입의 텐서 변환을 위해 [AutoProcessor](/docs/transformers/main/ko/model_doc/auto#transformers.AutoProcessor)를 사용해야 합니다. 자세한 내용은 [Wav2Vec2Processor.__call__()](/docs/transformers/main/ko/model_doc/wav2vec2#transformers.Wav2Vec2Processor.__call__)를 참조하세요.

attention_mask (`torch.Tensor`, shape `(batch_size, sequence_length)`, *선택 사항*) : 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크입니다. `[0, 1]`에서 선택된 마스크 값: - **마스크되지 않은** 토큰은 1, - **마스크된** 토큰은 0. [attention 마스크란?](../glossary#attention-mask)

**반환값:** [UniSpeechSatForPreTrainingOutput](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.models.unispeech_sat.modeling_unispeech_sat.UniSpeechSatForPreTrainingOutput) 또는 `tuple(torch.Tensor)`

구성([UniSpeechSatConfig](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatConfig))과 입력에 따라 다양한 요소를 포함하는 [UniSpeechSatForPreTrainingOutput](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.models.unispeech_sat.modeling_unispeech_sat.UniSpeechSatForPreTrainingOutput) 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우).

[UniSpeechSatForPreTraining](/docs/transformers/main/ko/model_doc/unispeech-sat#transformers.UniSpeechSatForPreTraining)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **loss** (`*optional*`, 모델이 train 모드일 때 반환됨, `(1,)` 형태의 `torch.Tensor`) -- [공식 논문](https://huggingface.co/papers/2006.11477)에 명시된 대로, 대조적 손실(L_m)과 다양성 손실(L_d)의 합으로 계산된 총 손실.
- **logits** (`torch.Tensor`, shape `(batch_size, sequence_length, config.proj_codevector_dim)`, *선택 사항*) -- 대조적 손실 모델의 예측 점수, 즉 최종 softmax 이전의 모델 출력입니다.
- **projected_states** (`torch.Tensor`, shape `(batch_size, sequence_length, config.proj_codevector_dim)`) -- *config.proj_codevector_dim* 차원으로 투영된 모델의 hidden-states로, masked projected quantized states를 예측하는 데 사용할 수 있습니다.
- **projected_quantized_states** (`torch.Tensor`, shape `(batch_size, sequence_length, config.proj_codevector_dim)`) -- 대조적 손실(contrastive loss)의 양(positive) 대상 벡터를 나타내는, 추출된 특징 벡터를 양자화한 후 *config.proj_codevector_dim*으로 투영한 값
- **codevector_perplexity** (`torch.Tensor`, shape `(1,)`) -- 코드북의 다양성을 측정하는 데 사용되는 코드벡터 분포의 퍼플렉시티입니다.
- **hidden_states** (`tuple[torch.Tensor]`, *선택*, `output_hidden_states=True`가 전달되었거나 `config.output_hidden_states=True`인 경우 반환됨) -- `torch.Tensor`의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력용 1개 + 각 레이어의 출력용 1개)로, 모양은 `(batch_size, sequence_length, hidden_size)`입니다.

  각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
- **attentions** (`tuple[torch.Tensor]`, *선택*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환됨) -- 각 레이어마다 하나씩 포함된 `torch.Tensor`의 튜플로, 모양은 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치입니다.

예:

```python
>>> import torch
>>> from transformers import AutoFeatureExtractor, UniSpeechSatForPreTraining
>>> from transformers.models.unispeech_sat.modeling_unispeech_sat import _compute_mask_indices

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("microsoft/unispeech-sat-base")
>>> model = UniSpeechSatForPreTraining.from_pretrained("microsoft/unispeech-sat-base")
>>> # TODO: Add full pretraining example
```

