# SeamlessM4T-v2

## 개요

SeamlessM4T-v2 모델은 Meta AI의 Seamless Communication 팀이 [Seamless: Multilingual Expressive and Streaming Speech Translation](https://huggingface.co/papers/2312.05187)에서 제안했습니다.

SeamlessM4T-v2는 다양한 언어 공동체의 사람들이 음성 및 텍스트를 통해 자연스럽게 소통할 수 있도록 고품질 번역을 제공하는 모델 모음입니다. [이전 버전](./seamless_m4t)에서 개선된 모델입니다. v1과 v2의 차이점에 대한 자세한 내용은 [Difference with SeamlessM4T-v1](#difference-with-seamlessm4t-v1) 섹션을 참고하십시오.

SeamlessM4T-v2는 별도의 모델에 의존하지 않고도 여러 작업을 수행할 수 있습니다:

- 음성-음성 번역(S2ST)
- 음성-텍스트 번역(S2TT)
- 텍스트-음성 번역(T2ST)
- 텍스트-대-텍스트 번역(T2TT)
- 자동 음성 인식(ASR)

[SeamlessM4Tv2Model](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model)은 위의 모든 작업을 수행할 수 있지만, 각 작업에는 전용 서브모델이 별도로 존재합니다.

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

*자동 음성 번역 분야의 최근 발전은 언어 커버리지를 크게 확장하고, 멀티모달 기능을 향상시키며, 다양한 작업과 기능을 가능하게 했습니다. 그럼에도 불구하고, 오늘날 대규모 자동 음성 번역 시스템은 인간 간 대화와 비교했을 때 기계 매개 커뮤니케이션이 매끄럽게 느껴지도록 돕는 핵심 기능들이 부족합니다. 본 연구에서는 스트리밍 방식으로 끝에서 끝까지 표현력 있고 다국어인 번역을 가능하게 하는 모델군을 소개합니다. 먼저, 대규모 다국어 및 멀티모달 SeamlessM4T 모델의 개선된 버전인 SeamlessM4T v2를 제공합니다. UnitY2 프레임워크의 업데이트 버전을 통합한 이 새로운 모델은 더 많은 저자원 언어 데이터로 학습되었습니다. 확장된 SeamlessAlign은 총 76개 언어에 대해 114,800시간의 자동 정렬 데이터를 추가합니다. SeamlessM4T v2는 우리의 두 가지 최신 모델인 SeamlessExpressive와 SeamlessStreaming의 기반을 제공합니다. SeamlessExpressive는 음성 스타일과 억양을 보존하는 번역을 가능하게 합니다. 이전의 표현력 있는 음성 연구 노력과 비교할 때, 우리의 연구는 화자의 음성 스타일을 보존하는 동시에 발화 속도나 휴지 같은 억양의 덜 탐구된 측면들을 다룹니다. SeamlessStreaming의 경우, 우리의 모델은 Efficient Monotonic Multihead Attention(EMMA) 메커니즘을 활용하여 완전한 소스 발화를 기다리지 않고도 낮은 지연 시간의 대상 번역을 생성합니다. 그 종류로는 처음인 SeamlessStreaming은 여러 소스 및 대상 언어에 대한 동시 음성-음성/텍스트 번역을 가능하게 합니다. 이러한 모델들의 성능을 이해하기 위해, 우리는 억양, 지연 시간, 견고성을 평가하기 위해 새로운 지표와 기존 자동 지표의 수정된 버전을 결합했습니다. 인간 평가의 경우, 의미, 자연스러움, 표현력의 보존에서 가장 관련성 높은 속성을 측정하도록 조정된 기존 프로토콜을 적용했습니다. 우리의 모델이 안전하고 책임감 있게 사용될 수 있도록 보장하기 위해, 우리는 멀티모달 기계 번역에 대한 최초의 알려진 레드팀링 노력, 추가된 독성(Toxicity)의 탐지 및 완화 시스템, 성별 편향에 대한 체계적 평가, 딥페이크의 영향을 완화하도록 설계된 들리지 않는 로컬라이즈드 워터마킹 메커니즘을 구현했습니다. 결과적으로, 우리는 SeamlessExpressive와 SeamlessStreaming의 주요 구성 요소를 결합하여 실시간으로 표현력 있는 언어 간 커뮤니케이션을 가능하게 하는 최초의 공개 시스템인 Seamless를 형성했습니다. 요약하자면, Seamless는 Universal Speech Translator를 SF 개념에서 현실 세계의 기술로 전환하는 데 필요한 기술적 기반에 대한 중요한 통찰을 제공합니다. 마지막으로, 본 연구의 기여물—모델, 코드, 워터마킹 탐지기를 포함하여—은 공개적으로 릴리스되었으며 아래 링크에서 접근할 수 있습니다.*

## 사용

다음 예제에서는 아랍어 오디오 샘플과 영어 텍스트 샘플을 로드하여 러시아어 음성 및 프랑스어 텍스트로 변환합니다.

먼저, 프로세서와 모델의 체크포인트를 로드합니다:

```python
from transformers import AutoProcessor, SeamlessM4Tv2Model

processor = AutoProcessor.from_pretrained("facebook/seamless-m4t-v2-large")
model = SeamlessM4Tv2Model.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")
```

이 모델은 텍스트 또는 오디오에 대해 자연스럽게 사용할 수 있으며, 번역된 텍스트나 번역된 오디오를 생성할 수 있습니다.

프로세서를 사용하여 텍스트와 오디오를 처리하는 방법은 다음과 같습니다:

```python
# let's load an audio sample from an Arabic speech corpus
from datasets import load_dataset

dataset = load_dataset("halabi2016/arabic_speech_corpus", split="test", streaming=True)
audio_sample = next(iter(dataset))["audio"]

# now, process it
audio_inputs = processor(audio=audio_sample["array"], return_tensors="pt").to(model.device)

# now, process some English text as well
text_inputs = processor(text = "Hello, my dog is cute", src_lang="eng", return_tensors="pt").to(model.device)
```

### 음성

[SeamlessM4Tv2Model](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model)은 거의 또는 전혀 변경하지 않고도 *매끄럽게* 텍스트나 음성 생성이 가능합니다. 러시아어 음성 번역을 목표로 해 보겠습니다:

```python
audio_array_from_text = model.generate(**text_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()
audio_array_from_audio = model.generate(**audio_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()
```

거의 동일한 코드로 영어 텍스트와 아랍어 음성에서 러시아어 음성 샘플을 생성했습니다.

### 텍스트

마찬가지로, 동일한 모델로 오디오 파일이나 텍스트에서 번역된 텍스트를 생성할 수 있습니다. [SeamlessM4Tv2Model.generate()](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model.generate)에 `generate_speech=False`만 전달하면 됩니다. 이번에는 프랑스어로 번역해 보겠습니다.

```python
# from audio
output_tokens = model.generate(**audio_inputs, tgt_lang="fra", generate_speech=False)
translated_text_from_audio = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)

# from text
output_tokens = model.generate(**text_inputs, tgt_lang="fra", generate_speech=False)
translated_text_from_text = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)
```

### 팁

#### 1. 전용 모델 사용

[SeamlessM4Tv2Model](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model)은 음성 및 텍스트 생성을 위한 transformers의 최상위 모델입니다. 하지만 추가 구성 요소 없이 해당 작업을 수행하는 전용 모델을 사용하면 메모리 사용량을 줄일 수 있습니다. 예를 들어, 오디오-오디오 생성 스니펫을 S2ST 작업에 특화된 모델로 대체할 수 있으며, 나머지 코드는 완전히 동일합니다:

```python
from transformers import SeamlessM4Tv2ForSpeechToSpeech

model = SeamlessM4Tv2ForSpeechToSpeech.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")
```

또는 텍스트-텍스트 생성 스니펫을 T2TT 작업에 특화된 모델로 교체할 수 있으며, 이 경우 `generate_speech=False`만 제거하면 됩니다.

```python
from transformers import SeamlessM4Tv2ForTextToText

model = SeamlessM4Tv2ForTextToText.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")
```

[SeamlessM4Tv2ForSpeechToText](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForSpeechToText)와 [SeamlessM4Tv2ForTextToSpeech](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForTextToSpeech)도 자유롭게 사용해 보세요.

#### 2. 화자 ID 변경

`speaker_id` 인수를 사용하여 음성 합성에 사용할 화자를 변경할 수 있습니다. 일부 `speaker_id`는 특정 언어에서 다른 것보다 더 잘 작동합니다!

#### 3. 생성 전략 변경

텍스트 생성에는 다양한 [생성 전략](../generation_strategies)을 사용할 수 있습니다. 예를 들어 `.generate(input_ids=input_ids, text_num_beams=4, text_do_sample=True)`는 텍스트 모델에서 다항 분포 beam-search 디코딩을 수행합니다. 음성 생성은 기본적으로 greedy 또는 다항 분포 샘플링만 지원하며, 예를 들어 `.generate(..., speech_do_sample=True, speech_temperature=0.6)`를 사용하여 적용할 수 있습니다.

#### 4. 음성 및 텍스트를 동시에 생성

`return_intermediate_token_ids=True`를 [SeamlessM4Tv2Model](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model)과 함께 사용하면 음성 및 텍스트를 모두 반환합니다!

## 모델 아키텍처

SeamlessM4T-v2는 텍스트와 음성 순차 생성을 매끄럽게 처리하는 다재다능한 아키텍처를 갖추고 있습니다. 이 구성은 두 개의 sequence-to-sequence (seq2seq) 모델로 이루어져 있습니다. 첫 번째 모델은 입력 모달리티를 번역된 텍스트로 변환하고, 두 번째 모델은 번역된 텍스트에서 "unit tokens"라고 알려진 음성 토큰을 생성합니다.

각 모달리티는 고유한 아키텍처를 가진 전용 인코더를 사용합니다. 또한 음성 출력을 위해, [HiFi-GAN](https://huggingface.co/papers/2010.05646) 아키텍처에서 영감을 받은 보코더가 두 번째 seq2seq 모델 위에 배치됩니다.

### SeamlessM4T-v1과의 차이

이 새로운 버전의 아키텍처는 첫 번째 버전과 몇 가지 측면에서 다릅니다:

#### 2-pass 모델의 개선 사항

두 번째 seq2seq 모델인 text-to-unit 모델은 이제 non-auto regressive 방식이며, 이는 **단일 forward pass**로 units를 계산한다는 것을 의미합니다. 이러한 성과는 다음 요소들로 인해 가능해졌습니다:

- **문자 단위 임베딩**을 사용하여, 예측된 번역 텍스트의 각 문자가 고유한 임베딩을 가지며, 이 임베딩을 이용해 유닛 토큰을 예측합니다.
- 예측된 번역 텍스트에서 **문자 수준**의 음성 길이를 예측하는 중간 길이 예측기를 사용합니다.
- 더 긴 컨텍스트를 처리하기 위해 합성곱과 셀프 어텐션을 혼합한 새로운 텍스트-단위 디코더를 사용합니다.

#### 음성 인코더의 차이

1차 생성 과정에서 번역된 텍스트를 예측하는 데 사용되는 음성 인코더는 이전 음성 인코더와 주로 다음 메커니즘을 통해 차이가 있습니다:

- 각 위치가 자신의 chunk 내 위치와 고정된 수의 이전 chunk에만 attention을 수행하도록 보장하기 위해, chunk 간 attention을 방지하는 chunked attention mask의 사용
- 절대 위치가 아닌 시퀀스 요소 간의 거리만 고려하는 상대 위치 임베딩을 사용합니다. 자세한 내용은 [Self-Attention with Relative Position Representations (Shaw et al.)](https://huggingface.co/papers/1803.02155)를 참고하세요.
- 비인과적 인과적 depth-wise convolution 대신 인과적 depth-wise convolution을 사용하는 것입니다.

### 생성 과정

생성 과정은 다음과 같이 작동합니다:

- 입력 텍스트 또는 음성 데이터는 해당 인코더를 통해 처리됩니다.
- 디코더는 원하는 언어의 텍스트 토큰을 생성합니다.
- 음성 생성이 필요한 경우, 두 번째 seq2seq 모델이 비자기회귀(non auto-regressive) 방식으로 unit token을 생성합니다.
- 이러한 unit token은 최종 vocoder를 통과하여 실제 음성으로 생성됩니다.

이 모델은 [ylacombe](https://huggingface.co/ylacombe)님이 기여했습니다. 원본 코드는 [여기](https://github.com/facebookresearch/seamless_communication)에서 찾을 수 있습니다.

## SeamlessM4Tv2Model[[transformers.SeamlessM4Tv2Model]]

#### transformers.SeamlessM4Tv2Model[[transformers.SeamlessM4Tv2Model]]

```python
transformers.SeamlessM4Tv2Model(config: SeamlessM4Tv2Config, current_modality = 'text')
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L3665)

**매개변수:**

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

current_modality (`str`, *선택 사항*, 기본값 `"text"`) : 기본 모달리티입니다. 모델 초기화에 사용됩니다.

SeamlessM4Tv2의 원래 Model transformer로, 사용 가능한 모든 작업(S2ST, S2TT, T2TT, T2ST)에 사용할 수 있습니다.

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

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

#### generate[[transformers.SeamlessM4Tv2Model.generate]]

```python
generate(input_ids: typing.Optional[torch.Tensor] = None, input_features: typing.Optional[torch.Tensor] = None, return_intermediate_token_ids: bool | None = None, tgt_lang: str | None = None, speaker_id: int | None = 0, generate_speech: bool | None = True, **kwargs)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L3859)

**매개변수:**

input_ids (`torch.LongTensor`, shape `(batch_size, sequence_length)`, *선택 사항*) : 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. [SeamlessM4TTokenizer](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TTokenizer) 또는 [SeamlessM4TProcessor](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor)를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ko/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) 및 [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/ko/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__)를 참조하세요. [입력 ID란 무엇인가요?](../glossary#input-ids)

input_features (`torch.Tensor`, shape `(batch_size, sequence_length, num_banks)`, *선택 사항*) : 입력 오디오 특징. [SeamlessM4TFeatureExtractor](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor) 클래스 또는 [SeamlessM4TProcessor](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor) 클래스에서 반환된 값이어야 합니다. 자세한 내용은 [SeamlessM4TFeatureExtractor.__call__()](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor.__call__)를 참조하세요.

return_intermediate_token_ids (`bool`, *선택 사항*) : `True`인 경우, 중간 생성 텍스트와 유닛 토큰도 반환합니다. 오디오와 함께 번역된 텍스트도 얻고 싶다면 `True`로 설정하세요. `generate_speech=False`인 경우 이 매개변수는 무시되고 텍스트 토큰이 반환됩니다.

tgt_lang (`str`, *선택 사항*) : 번역의 대상 언어로 사용할 언어입니다.

speaker_id (`int`, *선택 사항*, 기본값 0) : 음성 합성에 사용되는 화자의 id입니다. `config.vocoder_num_spkrs`보다 작아야 합니다.

generate_speech (`bool`, *선택 사항*, 기본값 `True`) : `False`인 경우 텍스트 토큰만 반환하고 음성 생성을 수행하지 않습니다.

kwargs (*선택 사항*) : [GenerationMixin.generate()](/docs/transformers/v5.23.0/ko/main_classes/text_generation#transformers.GenerationMixin.generate)에 전달될 나머지 키워드 인자 딕셔너리입니다. 키워드 인자는 두 가지 유형입니다.  - 접두사가 없는 경우, `decoder_input_ids`를 제외하고 각 서브 모델의 `generate` 메서드에 `**kwargs`로 입력됩니다. `decoder_input_ids`는 텍스트 컴포넌트를 통해서만 전달됩니다. - *text_* 또는 *speech_* 접두사가 있는 경우, 각각 텍스트 모델과 음성 모델의 `generate` 메서드에 입력됩니다. 접두사가 없는 키워드보다 우선순위가 높습니다.  즉, 예를 들어 한 생성에는 생성 전략을 지정하고 다른 생성에는 지정하지 않을 수 있습니다.

**반환값:** `Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]`

- `generate_speech`와 `return_intermediate_token_ids`가 True인 경우, `SeamlessM4Tv2GenerationOutput`를 반환합니다.
- `generate_speech`이고 `return_intermediate_token_ids`가 아니면, `(batch_size, sequence_length)` 형태의 웨이브폼과 각 샘플의 길이를 나타내는 `waveform_lengths`로 구성된 튜플을 반환합니다.
- `generate_speech=False`인 경우 `ModelOutput`를 반환합니다.

번역된 토큰 ID 및/또는 번역된 오디오 웨이브폼을 생성합니다.

이 메서드는 두 개의 서로 다른 서브모델의 `.generate` 함수를 순차적으로 호출합니다. 두 가지 다른 수준에서 키워드 인수를 지정할 수 있습니다. 두 모델 모두에 전달되는 일반 인수를 지정하거나, 둘 중 하나에만 전달되는 접두사가 붙은 인수를 지정할 수 있습니다.

예를 들어, `.generate(input_ids=input_ids, num_beams=4, speech_do_sample=True)`를 호출하면 텍스트 모델에는 beam-search decoding을, 음성 모델에는 multinomial beam-search sampling을 순차적으로 수행합니다.

생성 전략 개요와 코드 예제는 [다음 가이드](./generation_strategies)를 참고하세요.

## SeamlessM4Tv2ForTextToSpeech[[transformers.SeamlessM4Tv2ForTextToSpeech]]

#### transformers.SeamlessM4Tv2ForTextToSpeech[[transformers.SeamlessM4Tv2ForTextToSpeech]]

```python
transformers.SeamlessM4Tv2ForTextToSpeech(config: SeamlessM4Tv2Config)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2984)

**매개변수:**

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

T2ST에 사용할 수 있는 텍스트-음성 변환 SeamlessM4Tv2 모델 transformer입니다.

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

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

#### generate[[transformers.SeamlessM4Tv2ForTextToSpeech.generate]]

```python
generate(input_ids: typing.Optional[torch.Tensor] = None, return_intermediate_token_ids: bool | None = None, tgt_lang: str | None = None, speaker_id: int | None = 0, **kwargs)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L3118)

**매개변수:**

input_ids (`torch.LongTensor`, shape `(batch_size, sequence_length)`) : 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. [SeamlessM4TTokenizer](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TTokenizer) 또는 [SeamlessM4TProcessor](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor)를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ko/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) 및 [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/ko/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__)를 참조하세요. [입력 ID란 무엇인가요?](../glossary#input-ids)

return_intermediate_token_ids (`bool`, *선택 사항*) : `True`인 경우, 중간 생성 텍스트와 유닛 토큰도 반환합니다. 오디오와 함께 번역된 텍스트도 얻고 싶다면 `True`로 설정하세요.

tgt_lang (`str`, *선택 사항*) : 번역의 대상 언어로 사용할 언어입니다.

speaker_id (`int`, *선택 사항*, 기본값 0) : 음성 합성에 사용되는 화자의 id입니다. `config.vocoder_num_spkrs`보다 작아야 합니다.

kwargs (*선택 사항*) : [GenerationMixin.generate()](/docs/transformers/v5.23.0/ko/main_classes/text_generation#transformers.GenerationMixin.generate)에 전달될 나머지 키워드 인자 딕셔너리입니다. 키워드 인자는 두 가지 유형입니다.  - 접두사가 없는 경우, `decoder_input_ids`를 제외하고 각 서브 모델의 `generate` 메서드에 `**kwargs`로 입력됩니다. `decoder_input_ids`는 텍스트 컴포넌트를 통해서만 전달됩니다. - *text_* 또는 *speech_* 접두사가 있는 경우, 각각 텍스트 모델과 음성 모델의 `generate` 메서드에 입력됩니다. 접두사가 없는 키워드보다 우선순위가 높습니다.  즉, 예를 들어 한 생성에는 생성 전략을 지정하고 다른 생성에는 지정하지 않을 수 있습니다.

**반환값:** `Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]`

- `return_intermediate_token_ids`가 True인 경우, `SeamlessM4Tv2GenerationOutput`을 반환합니다.
- `return_intermediate_token_ids`가 False인 경우, `(batch_size, sequence_length)` 형태의 웨이브폼과 각 샘플의 길이를 나타내는 `waveform_lengths`로 구성된 튜플을 반환합니다.

번역된 오디오 웨이브폼을 생성합니다.

이 메서드는 두 개의 서로 다른 서브모델의 `.generate` 함수를 순차적으로 호출합니다. 두 가지 다른 수준에서 키워드 인수를 지정할 수 있습니다. 두 모델 모두에 전달되는 일반 인수를 지정하거나, 둘 중 하나에만 전달되는 접두사가 붙은 인수를 지정할 수 있습니다.

예를 들어, `.generate(input_ids, num_beams=4, speech_do_sample=True)`를 호출하면 텍스트 모델에는 beam-search decoding을, 음성 모델에는 multinomial beam-search sampling을 순차적으로 수행합니다.

생성 전략 개요와 코드 예제는 [다음 가이드](./generation_strategies)를 참고하세요.

## SeamlessM4Tv2ForSpeechToSpeech[[transformers.SeamlessM4Tv2ForSpeechToSpeech]]

#### transformers.SeamlessM4Tv2ForSpeechToSpeech[[transformers.SeamlessM4Tv2ForSpeechToSpeech]]

```python
transformers.SeamlessM4Tv2ForSpeechToSpeech(config: SeamlessM4Tv2Config)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L3322)

**매개변수:**

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

S2ST에 사용할 수 있는 음성-음성 SeamlessM4Tv2 모델 transformer입니다.

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

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

#### generate[[transformers.SeamlessM4Tv2ForSpeechToSpeech.generate]]

```python
generate(input_features: typing.Optional[torch.Tensor] = None, return_intermediate_token_ids: bool | None = None, tgt_lang: str | None = None, speaker_id: int | None = 0, **kwargs)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L3455)

**매개변수:**

input_features (`torch.Tensor`, shape `(batch_size, sequence_length, num_banks)`) : 입력 오디오 특징. [SeamlessM4TFeatureExtractor](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor) 클래스 또는 [SeamlessM4TProcessor](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor) 클래스에서 반환된 값이어야 합니다. 자세한 내용은 [SeamlessM4TFeatureExtractor.__call__()](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor.__call__)를 참조하세요.

return_intermediate_token_ids (`bool`, *선택 사항*) : `True`인 경우, 중간 생성 텍스트와 유닛 토큰도 반환합니다. 오디오와 함께 번역된 텍스트도 얻고 싶다면 `True`로 설정하세요.

tgt_lang (`str`, *선택 사항*) : 번역의 대상 언어로 사용할 언어입니다.

speaker_id (`int`, *선택 사항*, 기본값 0) : 음성 합성에 사용되는 화자의 id입니다. `config.vocoder_num_spkrs`보다 작아야 합니다.

kwargs (*선택 사항*) : [GenerationMixin.generate()](/docs/transformers/v5.23.0/ko/main_classes/text_generation#transformers.GenerationMixin.generate)에 전달될 나머지 키워드 인자 딕셔너리입니다. 키워드 인자는 두 가지 유형입니다.  - 접두사가 없는 경우, `decoder_input_ids`를 제외하고 각 서브 모델의 `generate` 메서드에 `**kwargs`로 입력됩니다. `decoder_input_ids`는 텍스트 컴포넌트를 통해서만 전달됩니다. - *text_* 또는 *speech_* 접두사가 있는 경우, 각각 텍스트 모델과 음성 모델의 `generate` 메서드에 입력됩니다. 접두사가 없는 키워드보다 우선순위가 높습니다.  즉, 예를 들어 한 생성에는 생성 전략을 지정하고 다른 생성에는 지정하지 않을 수 있습니다.

**반환값:** `Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]`

- `return_intermediate_token_ids`가 True인 경우, `SeamlessM4Tv2GenerationOutput`을 반환합니다.
- `return_intermediate_token_ids`가 False인 경우, `(batch_size, sequence_length)` 형태의 웨이브폼과 각 샘플의 길이를 나타내는 `waveform_lengths`로 구성된 튜플을 반환합니다.

번역된 오디오 웨이브폼을 생성합니다.

이 메서드는 두 개의 서로 다른 서브모델의 `.generate` 함수를 순차적으로 호출합니다. 두 가지 다른 수준에서 키워드 인수를 지정할 수 있습니다. 두 모델 모두에 전달되는 일반 인수를 지정하거나, 둘 중 하나에만 전달되는 접두사가 붙은 인수를 지정할 수 있습니다.

예를 들어, `.generate(input_features, num_beams=4, speech_do_sample=True)`를 호출하면 텍스트 모델에는 beam-search decoding을, 음성 모델에는 multinomial beam-search sampling을 순차적으로 수행합니다.

생성 전략 개요와 코드 예제는 [다음 가이드](./generation_strategies)를 참고하세요.

## SeamlessM4Tv2ForTextToText[[transformers.SeamlessM4Tv2ForTextToText]]

#### transformers.SeamlessM4Tv2ForTextToText[[transformers.SeamlessM4Tv2ForTextToText]]

```python
transformers.SeamlessM4Tv2ForTextToText(config: SeamlessM4Tv2Config)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2501)

**매개변수:**

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

T2TT에 사용할 수 있는 텍스트-대-텍스트 SeamlessM4Tv2 모델 transformer입니다.

이 모델은 [PreTrainedModel](/docs/transformers/v5.23.0/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.SeamlessM4Tv2ForTextToText.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, decoder_input_ids: typing.Optional[torch.LongTensor] = None, decoder_attention_mask: typing.Optional[torch.LongTensor] = None, encoder_outputs: tuple[tuple[torch.Tensor]] | None = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = 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'>)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2537)

**매개변수:**

input_ids (`torch.LongTensor`, shape `(batch_size, sequence_length)`, *선택 사항*) : 어휘(input sequence tokens)의 인덱스입니다. 기본적으로 패딩은 무시됩니다. [AutoTokenizer](/docs/transformers/v5.23.0/ko/model_doc/auto#transformers.AutoTokenizer)를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ko/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) 및 [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/ko/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__)를 참조하세요. [입력 ID란 무엇인가요?](../glossary#input-ids)

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

decoder_input_ids (`torch.LongTensor`, shape `(batch_size, target_sequence_length)`, *선택 사항*) : 어휘에서 디코더 입력 시퀀스 토큰의 인덱스입니다. [AutoTokenizer](/docs/transformers/v5.23.0/ko/model_doc/auto#transformers.AutoTokenizer)를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ko/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) 및 [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/ko/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__)를 참조하세요. [디코더 입력 ID란 무엇인가요?](../glossary#decoder-input-ids) Bart는 `decoder_input_ids` 생성의 시작 토큰으로 `eos_token_id`를 사용합니다. `past_key_values`를 사용하는 경우, 선택적으로 마지막 `decoder_input_ids`만 입력하면 됩니다(`past_key_values` 참조). 번역 및 요약 학습의 경우 `decoder_input_ids`를 제공해야 합니다. `decoder_input_ids`가 제공되지 않으면, 모델은 논문에 따라 노이즈 제거 사전 학습을 위해 `input_ids`를 오른쪽으로 이동시켜 이 텐서를 생성합니다.

decoder_attention_mask (`torch.LongTensor`, shape `(batch_size, target_sequence_length)`, *선택 사항*) : 기본 동작: `decoder_input_ids`의 pad 토큰을 무시하는 텐서를 생성합니다. 기본적으로 Causal mask도 사용됩니다. 패딩 동작을 변경하려면 `modeling_bart._prepare_decoder_attention_mask`를 읽고 필요에 맞게 수정해야 합니다. 기본 전략에 대한 자세한 내용은 [논문](https://huggingface.co/papers/1910.13461)의 다이어그램 1을 참조하세요.

encoder_outputs (`tuple[tuple[torch.Tensor]]`, *선택 사항*) : (`last_hidden_state`, *선택 사항*: `hidden_states`, *선택 사항*: `attentions`) `last_hidden_state`의 shape은 `(batch_size, sequence_length, hidden_size)`, *선택 사항*)이며, 인코더의 마지막 레이어 출력에서 생성된 hidden-states의 시퀀스입니다. 디코더의 cross-attention에 사용됩니다.

past_key_values (`~cache_utils.Cache`, *선택*) : 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록과 크로스 어텐션 블록의 key 및 value)입니다. 일반적으로 `use_cache=True` 또는 `config.use_cache=True`일 때 모델이 디코딩의 이전 단계에서 반환한 `past_key_values`로 구성됩니다. 입력으로 [Cache](/docs/transformers/v5.23.0/ko/internal/generation_utils#transformers.Cache) 인스턴스만 허용되며, [kv cache 가이드](https://huggingface.co/docs/transformers/en/kv_cache)를 참조하세요. `past_key_values`가 전달되지 않으면 기본적으로 [DynamicCache](/docs/transformers/v5.23.0/ko/internal/generation_utils#transformers.DynamicCache)가 초기화됩니다. 모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다. `past_key_values`를 사용하는 경우, 이 모델에 과거 key value 상태가 제공되지 않은 `input_ids`(처리되지 않은 항목)만 `(batch_size, unprocessed_length)` 형식으로 입력해야 하며, `(batch_size, sequence_length)` 형식의 모든 `input_ids`를 입력하지 않습니다.

inputs_embeds (`torch.Tensor`, shape`(batch_size, sequence_length, hidden_size)`, *선택 사항*) : `input_ids`를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델의 내부 임베딩 조회 행렬보다 `input_ids` 인덱스를 관련 벡터로 변환하는 방식에 대한 더 세밀한 제어가 필요한 경우 유용합니다. labels (`torch.LongTensor`, shape `(batch_size, sequence_length)`, *선택 사항*): 마스킹 언어 모델링 손실을 계산하기 위한 라벨입니다. 인덱스는 `[-100, 0, ..., config.vocab_size]` 범위여야 합니다(`input_ids` 문서 문자열 참조). 인덱스가 `-100`으로 설정된 토큰은 무시(마스킹)되며, 손실은 `[0, ..., config.vocab_size]` 범위의 라벨을 가진 토큰에 대해서만 계산됩니다.

decoder_inputs_embeds (`torch.Tensor`, shape `(batch_size, target_sequence_length, hidden_size)`, *선택 사항*) : `decoder_input_ids`를 전달하는 대신 임베디드 표현을 직접 전달할 수 있습니다. `past_key_values`를 사용하는 경우, 선택적으로 마지막 `decoder_inputs_embeds`만 입력하면 됩니다(`past_key_values` 참조). 모델 내부 임베딩 조회 행렬보다 `decoder_input_ids` 인덱스를 관련 벡터로 변환하는 방식을 더 세밀하게 제어하려는 경우 유용합니다. `decoder_input_ids`와 `decoder_inputs_embeds`가 모두 설정되지 않은 경우, `decoder_inputs_embeds`는 `inputs_embeds`의 값을 취합니다.

labels (`torch.LongTensor`, shape `(batch_size, sequence_length)`, *선택 사항*) : masked language modeling loss를 계산하기 위한 라벨. 인덱스는 `[0, ..., config.vocab_size]` 범위 내이거나 -100이어야 합니다(`input_ids` docstring 참조). 인덱스가 `-100`으로 설정된 토큰은 무시(마스크)되며, loss는 `[0, ..., config.vocab_size]` 범위의 라벨을 가진 토큰에 대해서만 계산됩니다.

use_cache (`bool`, *선택 사항*) : `True`로 설정하면 `past_key_values` 키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(`past_key_values` 참조).

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

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

[SeamlessM4Tv2ForTextToText](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForTextToText)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

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

- **loss** (`torch.Tensor`, shape `(1,)`, *선택*, `labels`이 제공될 때 반환됨) -- 언어 모델링 손실.
- **logits** (`torch.Tensor`, shape `(batch_size, sequence_length, config.vocab_size)`) -- 언어 모델링 헤드에서 생성된 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).
- **past_key_values** (`EncoderDecoderCache`, *선택 사항*, `use_cache=True`가 전달되거나 `config.use_cache=True`인 경우 반환됨) -- [EncoderDecoderCache](/docs/transformers/v5.23.0/ko/internal/generation_utils#transformers.EncoderDecoderCache) 인스턴스입니다. 자세한 내용은 [kv 캐시 가이드](https://huggingface.co/docs/transformers/en/kv_cache)를 참조하세요.

  순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프-어텐션 블록과 크로스-어텐션 블록의 key 및 values)를 포함합니다(입력 `past_key_values` 참조).
- **decoder_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와 초기 임베딩 출력을 더한 값.
- **decoder_attentions** (`tuple(torch.Tensor)`, *선택 사항*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환) -- 각 레이어마다 하나씩 포함된 `torch.Tensor` 튜플이며, shape는 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 decoder의 attention 가중치입니다.
- **cross_attentions** (`tuple(torch.Tensor)`, *선택*, `output_attentions=True`가 전달되거나 `config.output_attentions=True`인 경우 반환) -- 각 레이어마다 하나씩 포함된 `torch.Tensor`의 튜플로, shape는 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
- **encoder_last_hidden_state** (`torch.Tensor`, shape `(batch_size, sequence_length, hidden_size)`, *선택 사항*) -- 모델 인코더의 마지막 레이어 출력의 hidden-state 시퀀스입니다.
- **encoder_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와 초기 임베딩 출력을 더한 값.
- **encoder_attentions** (`tuple(torch.Tensor)`, *선택 사항*, `output_attentions=True`가 전달되거나 `config.output_attentions=True`인 경우 반환) -- 각 레이어에 하나씩 포함된 `torch.Tensor` 튜플로, shape는 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  인코더의 어텐션 가중치입니다. 어텐션 softmax 이후에 self-attention 헤드에서 가중 평균을 계산하는 데 사용됩니다.

#### generate[[transformers.SeamlessM4Tv2ForTextToText.generate]]

```python
generate(input_ids = None, tgt_lang = None, generation_config = None, logits_processor = None, stopping_criteria = None, prefix_allowed_tokens_fn = None, synced_gpus = False, **kwargs)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2619)

**매개변수:**

input_ids (`torch.Tensor`, 모달리티에 따라 형태가 다양하며, *선택 사항*) : 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. 인덱스는 [SeamlessM4TTokenizer](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TTokenizer) 또는 [SeamlessM4TProcessor](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor)를 사용하여 얻을 수 있습니다. 자세한 내용은 [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ko/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) 및 [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/ko/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__)를 참조하세요. [입력 ID란 무엇인가요?](../glossary#input-ids)

tgt_lang (`str`, *선택 사항*) : 번역의 대상 언어로 사용할 언어입니다.

generation_config (`~generation.GenerationConfig`, *선택*) : 생성 호출의 기본 파라미터화로 사용할 생성 구성입니다. `generation_config`의 속성과 일치하는 `**kwargs`가 generate에 전달되면 해당 속성을 덮어씁니다. `generation_config`가 제공되지 않으면 기본값이 사용되며, 이는 다음 로딩 우선순위를 따릅니다: 1) `generation_config.json` 모델 파일이 존재하는 경우 해당 파일에서; 2) 모델 구성에서. 명시되지 않은 파라미터는 [GenerationConfig](/docs/transformers/v5.23.0/ko/main_classes/text_generation#transformers.GenerationConfig)의 기본값을 상속받으므로, 생성을 파라미터화하려면 해당 문서에서 기본값을 확인해야 합니다.

logits_processor (`LogitsProcessorList`, *선택*) : 인자와 generation config에서 생성된 기본 logits processor를 보완하는 사용자 정의 logits processor입니다. 인자 또는 generation config로 이미 생성된 logit processor가 전달되면 오류가 발생합니다. 이 기능은 고급 사용자를 위한 것입니다.

stopping_criteria (`StoppingCriteriaList`, *선택 사항*) : 인자와 generation config에서 기본으로 생성되는 stopping criteria를 보완하는 사용자 정의 stopping criteria입니다. 인자나 generation config로 이미 생성된 stopping criteria가 전달되면 오류가 발생합니다. 이 기능은 고급 사용자를 위해 제공됩니다.

prefix_allowed_tokens_fn (`Callable[[int, torch.Tensor], list[int]]`, *선택*) : 지정된 경우, 이 함수는 각 단계에서 beam search를 허용된 토큰으로만 제한합니다. 지정되지 않으면 제약이 적용되지 않습니다. 이 함수는 2개의 인수를 받습니다: 배치 ID `batch_id`와 `input_ids`. 배치 ID `batch_id`와 이전에 생성된 토큰 `inputs_ids`에 조건부인 다음 생성 단계에 허용되는 토큰의 리스트를 반환해야 합니다. 이 인수는 [Autoregressive Entity Retrieval](https://huggingface.co/papers/2010.00904)에 설명된 바와 같이 접두사에 조건부인 제약 생성에 유용합니다.

synced_gpus (`bool`, *선택 사항*, 기본값 `False`) : `FullyShardedDataParallel` 및 DeepSpeed ZeRO Stage 3과의 데드락을 방지하기 위해 max_length까지 while 루프를 계속 실행할지 여부.

kwargs (`dict[str, Any]`, *선택*) : `generate_config`의 즉석 파라미터화 및/또는 모델의 `forward` 함수로 전달될 추가적인 모델 전용 kwargs입니다.

**반환값:** [ModelOutput](/docs/transformers/v5.23.0/ko/main_classes/output#transformers.utils.ModelOutput) 또는 `torch.LongTensor`

`return_dict_in_generate=True`인 경우 또는 `config.return_dict_in_generate=True`인 경우 [ModelOutput](/docs/transformers/v5.23.0/ko/main_classes/output#transformers.utils.ModelOutput), 아니면 `torch.Tensor`입니다. 가능한 [ModelOutput](/docs/transformers/v5.23.0/ko/main_classes/output#transformers.utils.ModelOutput) 유형은 다음과 같습니다:
- [GenerateEncoderDecoderOutput](/docs/transformers/v5.23.0/ko/internal/generation_utils#transformers.generation.GenerateEncoderDecoderOutput),
- [GenerateBeamEncoderDecoderOutput](/docs/transformers/v5.23.0/ko/internal/generation_utils#transformers.generation.GenerateBeamEncoderDecoderOutput)

토큰 ID의 시퀀스를 생성합니다.

대부분의 생성 제어 매개변수는 `generation_config`에 설정되며, 전달되지 않으면 모델의 기본 생성 구성으로 설정됩니다. `generation_config`의 항목은 generate()에 해당 매개변수를 전달하여 오버라이드할 수 있습니다. 예를 들어 `.generate(inputs, num_beams=4, do_sample=True)`와 같이 사용할 수 있습니다.

생성 전략 개요와 코드 예제는 [다음 가이드](./generation_strategies)를 참고하세요.

## SeamlessM4Tv2ForSpeechToText[[transformers.SeamlessM4Tv2ForSpeechToText]]

#### transformers.SeamlessM4Tv2ForSpeechToText[[transformers.SeamlessM4Tv2ForSpeechToText]]

```python
transformers.SeamlessM4Tv2ForSpeechToText(config: SeamlessM4Tv2Config)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2736)

**매개변수:**

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

S2TT에 사용할 수 있는 음성-텍스트 변환 SeamlessM4Tv2 모델 transformer입니다.

이 모델은 [PreTrainedModel](/docs/transformers/v5.23.0/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.SeamlessM4Tv2ForSpeechToText.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, inputs_embeds: typing.Optional[torch.Tensor] = 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'>)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2774)

**매개변수:**

input_features (`torch.Tensor`, shape `(batch_size, sequence_length, num_banks)`) : 입력 오디오 특징. [SeamlessM4TFeatureExtractor](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor) 클래스 또는 [SeamlessM4TProcessor](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor) 클래스에서 반환된 값이어야 합니다. 자세한 내용은 [SeamlessM4TFeatureExtractor.__call__()](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor.__call__)를 참조하세요.

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

decoder_input_ids (`torch.LongTensor`, shape `(batch_size, target_sequence_length)`, *선택 사항*) : 어휘에서 디코더 입력 시퀀스 토큰의 인덱스입니다. [AutoTokenizer](/docs/transformers/v5.23.0/ko/model_doc/auto#transformers.AutoTokenizer)를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 [PreTrainedTokenizer.encode()](/docs/transformers/v5.23.0/ko/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) 및 [PreTrainedTokenizer.__call__()](/docs/transformers/v5.23.0/ko/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__)를 참조하세요. [디코더 입력 ID란 무엇인가요?](../glossary#decoder-input-ids) Bart는 `decoder_input_ids` 생성의 시작 토큰으로 `eos_token_id`를 사용합니다. `past_key_values`를 사용하는 경우, 선택적으로 마지막 `decoder_input_ids`만 입력하면 됩니다(`past_key_values` 참조). 번역 및 요약 학습의 경우 `decoder_input_ids`를 제공해야 합니다. `decoder_input_ids`가 제공되지 않으면, 모델은 논문에 따라 노이즈 제거 사전 학습을 위해 `input_ids`를 오른쪽으로 이동시켜 이 텐서를 생성합니다.

decoder_attention_mask (`torch.LongTensor`, shape `(batch_size, target_sequence_length)`, *선택 사항*) : 기본 동작: `decoder_input_ids`의 pad 토큰을 무시하는 텐서를 생성합니다. 기본적으로 Causal mask도 사용됩니다. 패딩 동작을 변경하려면 `modeling_bart._prepare_decoder_attention_mask`를 읽고 필요에 맞게 수정해야 합니다. 기본 전략에 대한 자세한 내용은 [논문](https://huggingface.co/papers/1910.13461)의 다이어그램 1을 참조하세요.

encoder_outputs (`tuple[tuple[torch.Tensor]]`, *선택 사항*) : (`last_hidden_state`, *선택 사항*: `hidden_states`, *선택 사항*: `attentions`) `last_hidden_state`의 shape은 `(batch_size, sequence_length, hidden_size)`, *선택 사항*)이며, 인코더의 마지막 레이어 출력에서 생성된 hidden-states의 시퀀스입니다. 디코더의 cross-attention에 사용됩니다.

past_key_values (`~cache_utils.Cache`, *선택*) : 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록과 크로스 어텐션 블록의 key 및 value)입니다. 일반적으로 `use_cache=True` 또는 `config.use_cache=True`일 때 모델이 디코딩의 이전 단계에서 반환한 `past_key_values`로 구성됩니다. 입력으로 [Cache](/docs/transformers/v5.23.0/ko/internal/generation_utils#transformers.Cache) 인스턴스만 허용되며, [kv cache 가이드](https://huggingface.co/docs/transformers/en/kv_cache)를 참조하세요. `past_key_values`가 전달되지 않으면 기본적으로 [DynamicCache](/docs/transformers/v5.23.0/ko/internal/generation_utils#transformers.DynamicCache)가 초기화됩니다. 모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다. `past_key_values`를 사용하는 경우, 이 모델에 과거 key value 상태가 제공되지 않은 `input_ids`(처리되지 않은 항목)만 `(batch_size, unprocessed_length)` 형식으로 입력해야 하며, `(batch_size, sequence_length)` 형식의 모든 `input_ids`를 입력하지 않습니다.

inputs_embeds (`torch.Tensor`, shape`(batch_size, sequence_length, hidden_size)`, *선택 사항*) : `input_ids`를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델의 내부 임베딩 조회 행렬보다 `input_ids` 인덱스를 관련 벡터로 변환하는 방식에 대한 더 세밀한 제어가 필요한 경우 유용합니다. labels (`torch.LongTensor`, shape `(batch_size, sequence_length)`, *선택 사항*): 마스킹 언어 모델링 손실을 계산하기 위한 라벨입니다. 인덱스는 `[-100, 0, ..., config.vocab_size]` 범위여야 합니다(`input_ids` 문서 문자열 참조). 인덱스가 `-100`으로 설정된 토큰은 무시(마스킹)되며, 손실은 `[0, ..., config.vocab_size]` 범위의 라벨을 가진 토큰에 대해서만 계산됩니다.

decoder_inputs_embeds (`torch.Tensor`, shape `(batch_size, target_sequence_length, hidden_size)`, *선택 사항*) : `decoder_input_ids`를 전달하는 대신 임베디드 표현을 직접 전달할 수 있습니다. `past_key_values`를 사용하는 경우, 선택적으로 마지막 `decoder_inputs_embeds`만 입력하면 됩니다(`past_key_values` 참조). 모델 내부 임베딩 조회 행렬보다 `decoder_input_ids` 인덱스를 관련 벡터로 변환하는 방식을 더 세밀하게 제어하려는 경우 유용합니다. `decoder_input_ids`와 `decoder_inputs_embeds`가 모두 설정되지 않은 경우, `decoder_inputs_embeds`는 `inputs_embeds`의 값을 취합니다.

labels (`torch.LongTensor`, shape `(batch_size, sequence_length)`, *선택 사항*) : masked language modeling loss를 계산하기 위한 라벨. 인덱스는 `[0, ..., config.vocab_size]` 범위 내이거나 -100이어야 합니다(`input_ids` docstring 참조). 인덱스가 `-100`으로 설정된 토큰은 무시(마스크)되며, loss는 `[0, ..., config.vocab_size]` 범위의 라벨을 가진 토큰에 대해서만 계산됩니다.

use_cache (`bool`, *선택 사항*) : `True`로 설정하면 `past_key_values` 키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(`past_key_values` 참조).

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

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

[SeamlessM4Tv2ForSpeechToText](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForSpeechToText)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

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

- **loss** (`torch.Tensor`, shape `(1,)`, *선택*, `labels`이 제공될 때 반환됨) -- 언어 모델링 손실.
- **logits** (`torch.Tensor`, shape `(batch_size, sequence_length, config.vocab_size)`) -- 언어 모델링 헤드에서 생성된 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).
- **past_key_values** (`EncoderDecoderCache`, *선택 사항*, `use_cache=True`가 전달되거나 `config.use_cache=True`인 경우 반환됨) -- [EncoderDecoderCache](/docs/transformers/v5.23.0/ko/internal/generation_utils#transformers.EncoderDecoderCache) 인스턴스입니다. 자세한 내용은 [kv 캐시 가이드](https://huggingface.co/docs/transformers/en/kv_cache)를 참조하세요.

  순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프-어텐션 블록과 크로스-어텐션 블록의 key 및 values)를 포함합니다(입력 `past_key_values` 참조).
- **decoder_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와 초기 임베딩 출력을 더한 값.
- **decoder_attentions** (`tuple(torch.Tensor)`, *선택 사항*, `output_attentions=True`가 전달되었거나 `config.output_attentions=True`인 경우 반환) -- 각 레이어마다 하나씩 포함된 `torch.Tensor` 튜플이며, shape는 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  self-attention 헤드에서 가중 평균을 계산하는 데 사용되는, attention softmax 이후의 decoder의 attention 가중치입니다.
- **cross_attentions** (`tuple(torch.Tensor)`, *선택*, `output_attentions=True`가 전달되거나 `config.output_attentions=True`인 경우 반환) -- 각 레이어마다 하나씩 포함된 `torch.Tensor`의 튜플로, shape는 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
- **encoder_last_hidden_state** (`torch.Tensor`, shape `(batch_size, sequence_length, hidden_size)`, *선택 사항*) -- 모델 인코더의 마지막 레이어 출력의 hidden-state 시퀀스입니다.
- **encoder_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와 초기 임베딩 출력을 더한 값.
- **encoder_attentions** (`tuple(torch.Tensor)`, *선택 사항*, `output_attentions=True`가 전달되거나 `config.output_attentions=True`인 경우 반환) -- 각 레이어에 하나씩 포함된 `torch.Tensor` 튜플로, shape는 `(batch_size, num_heads, sequence_length, sequence_length)`입니다.

  인코더의 어텐션 가중치입니다. 어텐션 softmax 이후에 self-attention 헤드에서 가중 평균을 계산하는 데 사용됩니다.

예:

```python
>>> from transformers import AutoProcessor, SeamlessM4Tv2ForSpeechToText
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("facebook/hf-seamless-m4t-medium")
>>> model = SeamlessM4Tv2ForSpeechToText.from_pretrained("facebook/hf-seamless-m4t-medium")

>>> # 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)
...
```

#### generate[[transformers.SeamlessM4Tv2ForSpeechToText.generate]]

```python
generate(input_features = None, tgt_lang = None, generation_config = None, logits_processor = None, stopping_criteria = None, prefix_allowed_tokens_fn = None, synced_gpus = False, **kwargs)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2865)

**매개변수:**

input_features (`torch.Tensor`, shape `(batch_size, sequence_length, num_banks)`) : 입력 오디오 특징. [SeamlessM4TFeatureExtractor](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor) 클래스 또는 [SeamlessM4TProcessor](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor) 클래스에서 반환된 값이어야 합니다. 자세한 내용은 [SeamlessM4TFeatureExtractor.__call__()](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor.__call__)를 참조하세요.

tgt_lang (`str`, *선택 사항*) : 번역의 대상 언어로 사용할 언어입니다.

generation_config (`~generation.GenerationConfig`, *선택*) : 생성 호출의 기본 파라미터화로 사용할 생성 구성입니다. `generation_config`의 속성과 일치하는 `**kwargs`가 generate에 전달되면 해당 속성을 덮어씁니다. `generation_config`가 제공되지 않으면 기본값이 사용되며, 이는 다음 로딩 우선순위를 따릅니다: 1) `generation_config.json` 모델 파일이 존재하는 경우 해당 파일에서; 2) 모델 구성에서. 명시되지 않은 파라미터는 [GenerationConfig](/docs/transformers/v5.23.0/ko/main_classes/text_generation#transformers.GenerationConfig)의 기본값을 상속받으므로, 생성을 파라미터화하려면 해당 문서에서 기본값을 확인해야 합니다.

logits_processor (`LogitsProcessorList`, *선택*) : 인자와 generation config에서 생성된 기본 logits processor를 보완하는 사용자 정의 logits processor입니다. 인자 또는 generation config로 이미 생성된 logit processor가 전달되면 오류가 발생합니다. 이 기능은 고급 사용자를 위한 것입니다.

stopping_criteria (`StoppingCriteriaList`, *선택 사항*) : 인자와 generation config에서 기본으로 생성되는 stopping criteria를 보완하는 사용자 정의 stopping criteria입니다. 인자나 generation config로 이미 생성된 stopping criteria가 전달되면 오류가 발생합니다. 이 기능은 고급 사용자를 위해 제공됩니다.

prefix_allowed_tokens_fn (`Callable[[int, torch.Tensor], list[int]]`, *선택*) : 지정된 경우, 이 함수는 각 단계에서 beam search를 허용된 토큰으로만 제한합니다. 지정되지 않으면 제약이 적용되지 않습니다. 이 함수는 2개의 인수를 받습니다: 배치 ID `batch_id`와 `input_ids`. 배치 ID `batch_id`와 이전에 생성된 토큰 `inputs_ids`에 조건부인 다음 생성 단계에 허용되는 토큰의 리스트를 반환해야 합니다. 이 인수는 [Autoregressive Entity Retrieval](https://huggingface.co/papers/2010.00904)에 설명된 바와 같이 접두사에 조건부인 제약 생성에 유용합니다.

synced_gpus (`bool`, *선택 사항*, 기본값 `False`) : `FullyShardedDataParallel` 및 DeepSpeed ZeRO Stage 3과의 데드락을 방지하기 위해 max_length까지 while 루프를 계속 실행할지 여부.

kwargs (`dict[str, Any]`, *선택*) : `generate_config`의 즉석 파라미터화 및/또는 모델의 `forward` 함수로 전달될 추가적인 모델 전용 kwargs입니다.

**반환값:** [ModelOutput](/docs/transformers/v5.23.0/ko/main_classes/output#transformers.utils.ModelOutput) 또는 `torch.LongTensor`

`return_dict_in_generate=True`인 경우 또는 `config.return_dict_in_generate=True`인 경우 [ModelOutput](/docs/transformers/v5.23.0/ko/main_classes/output#transformers.utils.ModelOutput), 아니면 `torch.Tensor`입니다. 가능한 [ModelOutput](/docs/transformers/v5.23.0/ko/main_classes/output#transformers.utils.ModelOutput) 유형은 다음과 같습니다:
- [GenerateEncoderDecoderOutput](/docs/transformers/v5.23.0/ko/internal/generation_utils#transformers.generation.GenerateEncoderDecoderOutput),
- [GenerateBeamEncoderDecoderOutput](/docs/transformers/v5.23.0/ko/internal/generation_utils#transformers.generation.GenerateBeamEncoderDecoderOutput)

토큰 ID의 시퀀스를 생성합니다.

대부분의 생성 제어 매개변수는 `generation_config`에 설정되며, 전달되지 않으면 모델의 기본 생성 구성으로 설정됩니다. `generation_config`의 항목은 generate()에 해당 매개변수를 전달하여 오버라이드할 수 있습니다. 예를 들어 `.generate(inputs, num_beams=4, do_sample=True)`와 같이 사용할 수 있습니다.

생성 전략 개요와 코드 예제는 [다음 가이드](./generation_strategies)를 참고하세요.

## SeamlessM4Tv2Config[[transformers.SeamlessM4Tv2Config]]

#### transformers.SeamlessM4Tv2Config[[transformers.SeamlessM4Tv2Config]]

```python
transformers.SeamlessM4Tv2Config(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 = 256102, t2u_vocab_size: int = 10082, char_vocab_size: int = 10943, hidden_size: int = 1024, initializer_range: float = 0.02, layer_norm_eps: float = 1e-05, use_cache: bool = True, max_position_embeddings: int = 4096, encoder_layerdrop: float | int = 0.05, decoder_layerdrop: float | int = 0.05, activation_function: str = 'relu', dropout: float | int = 0.1, attention_dropout: float | int = 0.1, activation_dropout: float | int = 0.0, scale_embedding: bool = True, encoder_layers: int = 24, encoder_ffn_dim: int = 8192, encoder_attention_heads: int = 16, decoder_layers: int = 24, decoder_ffn_dim: int = 8192, decoder_attention_heads: int = 16, decoder_start_token_id: int = 3, max_new_tokens: int | None = 256, pad_token_id: int | None = 0, bos_token_id: int | None = 2, eos_token_id: int | list[int] | None = 3, speech_encoder_layers: int = 24, speech_encoder_attention_heads: int = 16, speech_encoder_intermediate_size: int = 4096, speech_encoder_hidden_act: str = 'swish', speech_encoder_dropout: float | int = 0.0, add_adapter: bool = True, speech_encoder_layerdrop: float | int = 0.1, feature_projection_input_dim: int = 160, adaptor_kernel_size: int = 8, adaptor_stride: int = 8, adaptor_dropout: float | int = 0.1, num_adapter_layers: int = 1, position_embeddings_type: str = 'relative_key', conv_depthwise_kernel_size: int = 31, left_max_position_embeddings: int = 64, right_max_position_embeddings: int = 8, speech_encoder_chunk_size: int = 20000, speech_encoder_left_chunk_num: int = 128, t2u_bos_token_id: int | None = 0, t2u_pad_token_id: int | None = 1, t2u_eos_token_id: int | list[int] | None = 2, t2u_encoder_layers: int = 6, t2u_encoder_ffn_dim: int = 8192, t2u_encoder_attention_heads: int = 16, t2u_decoder_layers: int = 6, t2u_decoder_ffn_dim: int = 8192, t2u_decoder_attention_heads: int = 16, t2u_max_position_embeddings: int = 4096, t2u_variance_predictor_embed_dim: int = 1024, t2u_variance_predictor_hidden_dim: int = 256, t2u_variance_predictor_kernel_size: int = 3, t2u_variance_pred_dropout: float | int = 0.5, sampling_rate: int = 16000, upsample_initial_channel: int = 512, upsample_rates: list[int] | tuple[int, ...] = (5, 4, 4, 2, 2), upsample_kernel_sizes: list[int] | tuple[int, ...] = (11, 8, 8, 4, 4), resblock_kernel_sizes: list[int] | tuple[int, ...] = (3, 7, 11), resblock_dilation_sizes: list | tuple = ((1, 3, 5), (1, 3, 5), (1, 3, 5)), leaky_relu_slope: float = 0.1, unit_hifi_gan_vocab_size: int = 10000, unit_embed_dim: int = 1280, lang_embed_dim: int = 256, spkr_embed_dim: int = 256, vocoder_num_langs: int = 36, vocoder_num_spkrs: int = 200, variance_predictor_kernel_size: int = 3, var_pred_dropout: float | int = 0.5, vocoder_offset: int = 4, tie_word_embeddings: bool = True)
```

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/seamless_m4t_v2/configuration_seamless_m4t_v2.py#L24)

**매개변수:**

is_encoder_decoder (`bool`, *선택 사항*, 기본값 `True`) : 모델이 인코더/디코더로 사용되는지 여부.

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

t2u_vocab_size (`int`, *선택 사항*, 기본값 10082) : SeamlessM4Tv2 모델의 단위 어휘 크기입니다. [~SeamlessM4Tv2Model](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model), [~SeamlessM4Tv2ForSpeechToSpeech](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForSpeechToSpeech) 또는 [~SeamlessM4Tv2ForTextToSpeech](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForTextToSpeech)의 Text-To-Units 서브모델을 호출할 때 전달하는 `inputs_ids`로 표현할 수 있는 서로 다른 "unit token"의 수를 정의합니다.

char_vocab_size (`int`, *선택 사항*, 기본값 10943) : SeamlessM4Tv2 모델의 문자 어휘 크기입니다. [~SeamlessM4Tv2Model](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model), [~SeamlessM4Tv2ForSpeechToSpeech](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForSpeechToSpeech) 또는 [~SeamlessM4Tv2ForTextToSpeech](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForTextToSpeech)의 Text-To-Units 서브모델을 호출할 때 전달하는 `char_inputs_ids`로 표현할 수 있는 서로 다른 문자 토큰의 수를 정의합니다.

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

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

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

use_cache (`bool`, *선택 사항*, 기본값 `True`) : 모델이 마지막 key/values attention을 반환할지 여부입니다(모든 모델에서 사용되지 않음). `config.is_decoder=True`인 경우 또는 모델이 decoder-only 생성 모델인 경우에만 관련이 있습니다.

max_position_embeddings (`int`, *선택 사항*, 기본값 `4096`) : 이 모델이 사용될 수 있는 최대 시퀀스 길이입니다.

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

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

activation_function (`str`, *선택 사항*, 기본값 `relu`) : 디코더의 비선형 활성화 함수(함수 또는 문자열). 예를 들어, `"gelu"`, `"relu"`, `"silu"` 등.

dropout (`Union[float, int]`, *선택 사항*, 기본값 `0.1`) : 모든 dropout 레이어의 비율입니다.

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

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

scale_embedding (`bool`, *선택 사항*, 기본값 `True`) : 임베딩을 sqrt(d_model)로 나누어 스케일링할지 여부.

encoder_layers (`int`, *선택 사항*, 기본값 `24`) : Transformer 인코더의 숨겨진 레이어 수입니다. 설정하지 않으면 `num_layers`와 동일한 값을 사용합니다.

encoder_ffn_dim (`int`, *선택 사항*, 기본값 `8192`) : 인코더의 "intermediate"(일반적으로 feed-forward라고도 함) 레이어의 차원.

encoder_attention_heads (`int`, *선택 사항*, 기본값 `16`) : Transformer 인코더의 각 어텐션 레이어에 사용할 어텐션 헤드 수입니다.

decoder_layers (`int`, *선택 사항*, 기본값 `24`) : Transformer decoder의 숨겨진 레이어 수입니다. 설정하지 않으면 `num_layers`와 동일한 값을 사용합니다.

decoder_ffn_dim (`int`, *선택 사항*, 기본값 `8192`) : 디코더의 "intermediate"(일반적으로 feed-forward라고도 함) 레이어의 차원입니다.

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

decoder_start_token_id (`int`, *선택 사항*, 기본값 `3`) : 인코더-디코더 모델이 `bos`와 다른 토큰으로 디코딩을 시작하는 경우, 해당 토큰의 id입니다.

max_new_tokens (`int`, *선택 사항*, 기본값 256) : 프롬프트의 토큰 수를 무시하고 생성할 텍스트 토큰의 최대 개수입니다.

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

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

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

speech_encoder_layers (`int`, *선택 사항*, 기본값 24) : Transformer 음성 인코더의 숨겨진 레이어 수.

speech_encoder_attention_heads (`int`, *선택 사항*, 기본값 16) : Transformer 음성 인코더의 각 어텐션 레이어에 사용할 어텐션 헤드 수입니다.

speech_encoder_intermediate_size (`int`, *선택 사항*, 기본값 4096) : Transformer 음성 인코더의 "중간"(즉, 피드포워드) 레이어의 차원.

speech_encoder_hidden_act (`str` 또는 `function`, *선택 사항*, 기본값 `"swish"`) : 음성 인코더의 비선형 활성화 함수(함수 또는 문자열). 문자열인 경우 `"gelu"`, `"relu"`, `"selu"`, `"swish"`, `"gelu_new"`가 지원됩니다.

speech_encoder_dropout (`float`, *선택 사항*, 기본값 0.0) : 음성 인코더의 모든 레이어에 적용되는 dropout 확률입니다.

add_adapter (`bool`, *선택 사항*, 기본값 `True`) : 음성 인코더 위에 어댑터 레이어를 추가합니다.

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

feature_projection_input_dim (`int`, *선택 사항*, 기본값 160) : 음성 인코더의 입력 특징 투사(input feature projection)의 입력 차원, 즉 [SeamlessM4TFeatureExtractor](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor)로 입력 오디오를 처리한 후의 차원입니다.

adaptor_kernel_size (`int`, *선택 사항*, 기본값 8) : 어댑터 네트워크의 컨볼루션 레이어 커널 크기. `add_adapter is True`인 경우에만 관련이 있습니다.

adaptor_stride (`int`, *선택 사항*, 기본값 8) : 어댑터 네트워크의 컨볼루션 레이어 스트라이드. `add_adapter is True`인 경우에만 관련이 있습니다.

adaptor_dropout (`float`, *선택 사항*, 기본값 0.1) : 음성 어댑터의 모든 레이어에 적용되는 dropout 확률입니다.

num_adapter_layers (`int`, *optional*, 기본값 1) : 어댑터 네트워크에서 사용할 컨볼루션 레이어의 수입니다. `add_adapter is True`인 경우에만 관련이 있습니다.

position_embeddings_type (`str`, *선택 사항*, 기본값 `"relative_key"`) : `relative_key`로 지정할 수 있습니다. `None`으로 두면 상대 위치 임베딩이 적용되지 않습니다. 음성 인코더에만 적용됩니다. `"relative_key"`에 대한 자세한 내용은 [Self-Attention with Relative Position Representations (Shaw et al.)](https://huggingface.co/papers/1803.02155)을 참조하세요.

conv_depthwise_kernel_size (`int`, *선택 사항*, 기본값 31) : Conformer 블록의 convolutional depthwise 1D 레이어의 커널 크기. 음성 인코더에만 적용됩니다.

left_max_position_embeddings (`int`, *선택 사항*, 기본값 64) : 상대 위치의 왼쪽 클리핑 값입니다.

right_max_position_embeddings (`int`, *선택 사항*, 기본값 8) : 상대 위치의 오른쪽 클리핑 값입니다.

speech_encoder_chunk_size (`int`, *선택 사항*, 기본값 20000) : 각 attention chunk의 크기입니다.

speech_encoder_left_chunk_num (`int`, *선택 사항*, 기본값 128) : lookahead가 허용되는 왼쪽의 최대 청크 수.

t2u_bos_token_id (`int`, *선택 사항*, 기본값 0) : _스트림 시작_ 유닛 토큰의 id입니다. 텍스트-투-유닛 seq2seq 모델에만 적용됩니다.

t2u_pad_token_id (`int`, *선택 사항*, 기본값 1) : _padding_ 유닛 토큰의 id입니다. 텍스트-투-유닛 seq2seq 모델에만 적용됩니다.

t2u_eos_token_id (`int`, *선택 사항*, 기본값 2) : _스트림 종료_ 유닛 토큰의 ID입니다. 텍스트-투-유닛 seq2seq 모델에만 적용됩니다.

t2u_encoder_layers (`int`, *선택 사항*, 기본값 6) : Transformer 텍스트-단위 인코더의 숨겨진 레이어 수.

t2u_encoder_ffn_dim (`int`, *선택 사항*, 기본값 8192) : Transformer 텍스트-단위 인코더의 "중간"(즉, 피드포워드) 레이어의 차원.

t2u_encoder_attention_heads (`int`, *선택 사항*, 기본값 16) : Transformer 텍스트-단위 인코더의 각 어텐션 레이어에 사용할 어텐션 헤드 수입니다.

t2u_decoder_layers (`int`, *선택 사항*, 기본값 6) : Transformer 텍스트-단위 디코더의 숨겨진 레이어 수.

t2u_decoder_ffn_dim (`int`, *선택 사항*, 기본값 8192) : Transformer 텍스트-단위 디코더의 "중간"(즉, 피드포워드) 레이어의 차원.

t2u_decoder_attention_heads (`int`, *선택 사항*, 기본값 16) : Transformer 텍스트-단위 디코더의 각 어텐션 레이어에 사용할 어텐션 헤드 수입니다.

t2u_max_position_embeddings (`int`, *선택 사항*, 기본값 4096) : 이 모델의 text-to-unit 구성 요소가 사용될 수 있는 최대 시퀀스 길이입니다. 혹시 모를 상황에 대비하여 일반적으로 큰 값(예: 512 또는 1024 또는 2048)으로 설정합니다.

t2u_variance_predictor_embed_dim (`int`, *선택 사항*, 기본값 1024) : 텍스트-유닛의 지속 시간 예측기의 투영 차원입니다.

t2u_variance_predictor_hidden_dim (`int`, *선택 사항*, 기본값 256) : 텍스트-유닛의 지속 시간 예측기 내부 차원.

t2u_variance_predictor_kernel_size (`int`, *선택 사항*, 기본값 3) : 텍스트-유닛의 duration predictor 컨볼루션 레이어의 커널 크기.

t2u_variance_pred_dropout (`float`, *선택 사항*, 기본값 0.5) : 텍스트-유닛의 길이 예측기(dropout probability)의 드롭아웃 확률입니다.

sampling_rate (`int`, *선택 사항*, 기본값 `16000`) : 오디오 파일을 디지털화할 때 사용할 샘플링 주파수입니다. 헤르츠(Hz) 단위로 표시됩니다.

upsample_initial_channel (`int`, *선택 사항*, 기본값 512) : hifi-gan 업샘플링 네트워크의 입력 채널 수입니다. 보코더에만 적용됩니다.

upsample_rates (`tuple[int]` 또는 `list[int]`, *선택 사항*, 기본값은 `[5, 4, 4, 2, 2]`) : vocoder 업샘플링 네트워크의 각 1D 컨볼루션 레이어의 스트라이드를 정의하는 정수 튜플입니다. *upsample_rates*의 길이는 컨볼루션 레이어의 수를 정의하며 *upsample_kernel_sizes*의 길이와 일치해야 합니다. vocoder에만 적용됩니다.

upsample_kernel_sizes (`tuple[int]` 또는 `list[int]`, *선택 사항*, 기본값은 `[11, 8, 8, 4, 4]`) : vocoder 업샘플링 네트워크의 각 1D 컨볼루션 레이어 커널 크기를 정의하는 정수 튜플입니다. *upsample_kernel_sizes*의 길이는 컨볼루션 레이어의 수를 정의하며 *upsample_rates*의 길이와 일치해야 합니다. vocoder에만 적용됩니다.

resblock_kernel_sizes (`tuple[int]` 또는 `list[int]`, *선택 사항*, 기본값 `[3, 7, 11]`) : multi-receptive field fusion (MRF) 모듈의 vocoder 1D convolutional layer 커널 크기를 정의하는 정수 튜플입니다. vocoder에만 적용됩니다.

resblock_dilation_sizes (`tuple[tuple[int]]` 또는 `list[list[int]]`, *선택 사항*, 기본값은 `[[1, 3, 5], [1, 3, 5], [1, 3, 5]]`) : 다중 수용장 융합(MRF) 모듈의 보코더 확장 1D 컨볼루션 레이어의 확장률을 정의하는 정수의 중첩 튜플입니다. 보코더에만 적용됩니다.

leaky_relu_slope (`float`, *선택 사항*, 기본값 0.1) : vocoder의 leaky ReLU 활성화 함수에 사용되는 음의 기울기의 각도입니다. vocoder에만 적용됩니다.

unit_hifi_gan_vocab_size (`int`, *선택 사항*, 기본값 10000) : SeamlessM4Tv2 보코더의 어휘 크기입니다. [~SeamlessM4Tv2Model](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model), [~SeamlessM4Tv2ForSpeechToSpeech](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForSpeechToSpeech) 또는 [~SeamlessM4Tv2ForTextToSpeech](/docs/transformers/v5.23.0/ko/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForTextToSpeech)의 보코더를 호출할 때 전달하는 `inputs_ids`로 표현할 수 있는 서로 다른 유닛 토큰의 수를 정의합니다.

unit_embed_dim (`int`, *선택 사항*, 기본값 1280) : hifi-gan 보코더에 전달되는 입력 id의 투영 차원입니다. 보코더에만 적용됩니다.

lang_embed_dim (`int`, *선택 사항*, 기본값 256) : hifi-gan 보코더에 전달되는 대상 언어의 투영 차원입니다. 보코더에만 적용됩니다.

spkr_embed_dim (`int`, *선택 사항*, 기본값 256) : hifi-gan vocoder에 전달되는 speaker id의 투영 차원입니다. vocoder에만 적용됩니다.

vocoder_num_langs (`int`, *선택 사항*, 기본값 36) : vocoder가 지원하는 언어의 수입니다. `t2u_num_langs`와 다를 수 있습니다.

vocoder_num_spkrs (`int`, *선택 사항*, 기본값 200) : 보코더가 지원하는 화자 수.

variance_predictor_kernel_size (`int`, *선택 사항*, 기본값 3) : duration predictor의 커널 크기. vocoder에만 적용됩니다.

var_pred_dropout (`float`, *선택 사항*, 기본값 0.5) : duration predictor의 dropout 확률입니다. vocoder에만 적용됩니다.

vocoder_offset (`int`, *선택 사항*, 기본값 4) : 심볼 토큰을 고려하여 유닛 토큰 ID를 이 값만큼 오프셋합니다. 보코더에만 적용됩니다.

tie_word_embeddings (`bool`, *선택 사항*, 기본값 `True`) : 모델의 `tied_weights_keys` 매핑에 따라 가중치 임베딩을 묶을지 여부.

이것은 SeamlessM4Tv2Model의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Seamless M4T V2 모델을 초기화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 초기화하면 [facebook/hf-seamless-m4t-medium](https://huggingface.co/facebook/hf-seamless-m4t-medium)의 구성과 유사한 구성이 생성됩니다.

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

```python
>>> from transformers import SeamlessM4Tv2Model, SeamlessM4Tv2Config

>>> # Initializing a SeamlessM4Tv2 "" style configuration
>>> configuration = SeamlessM4Tv2Config()

>>> # Initializing a model from the "" style configuration
>>> model = SeamlessM4Tv2Model(configuration)

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

