# NeuCodec

## Genel Bakış

NeuCodec modeli, [Finite Scalar Quantization Enables Redundant and Transmission-Robust Neural Audio Compression at Low Bit-rates](https://huggingface.co/papers/2509.09550) makalesinde önerilmiştir.

NeuCodec, XCodec2'yi genişleten sinirsel bir ses kodlayıcısıdır. Aşağıdaki özelliklerden yararlanır:

- Sonlu Skaler Kuantizasyon (FSQ) kuantizasyonu **tek bir kod kitabı** ile sonuçlanır ve bu da onu Ses Dil Modelleri ile aşağı akış modellemesi için ideal kılar.
- Non-Commercial veri kısıtlamalarının **bulunmaması** sağlanacak şekilde CC verileriyle eğitildi.
- 50 token/sn ve token başına 16 bit ile toplam bit hızı **0.8kbps**'tir.
- Kodlayıcı, 16kHz giriş alır ve **örnekleme artırma çözücü** kullanarak **24kHz** çıktı üretir.
- FSQ kodlama şeması, güvenilir olmayan ve gürültülü kanallara uygun, bit düzeyinde hata direnci sağlar.

Orijinal model kodu [burada](https://github.com/neuphonic/neucodec) bulunabilir.

## Kullanım örneği 

Bu modelle bir ses dosyasını kodlama ve çözmeye dair hızlı bir örnek:

```python 
from datasets import Audio, load_dataset
from transformers import AutoFeatureExtractor, AutoModel

model_id = "neuphonic/neucodec"
model = AutoModel.from_pretrained(model_id, device_map="auto")
feature_extractor = AutoFeatureExtractor.from_pretrained(model_id)

dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
dataset = dataset.cast_column("audio", Audio(sampling_rate=feature_extractor.sampling_rate))
audio = dataset[0]["audio"]["array"]
inputs = feature_extractor(audio=audio, sampling_rate=feature_extractor.sampling_rate, return_tensors="pt").to(
    model.device, model.dtype
)
print("Input waveform shape:", inputs["input_values"].shape)
# Input waveform shape: torch.Size([1, 1, 93760])

# encoder and decoder
audio_codes = model.encode(**inputs).audio_codes
print("Audio codes shape:", audio_codes.shape)
# Audio codes shape: torch.Size([1, 1, 292])
audio_values = model.decode(audio_codes).audio_values
print("Audio values shape:", audio_values.shape)

# Equivalently, you can do encoding and decoding in one step
model_output = model(**inputs)
audio_codes = model_output.audio_codes
audio_values = model_output.audio_values
```

### Toplu işleme

Bu uygulama ayrıca toplu (batched) girdiyi de destekler!

```python
from datasets import Audio, load_dataset
from transformers import AutoFeatureExtractor, AutoModel

batch_size = 2
model_id = "neuphonic/neucodec"
model = AutoModel.from_pretrained(model_id, device_map="auto")
feature_extractor = AutoFeatureExtractor.from_pretrained(model_id)

dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
dataset = dataset.cast_column("audio", Audio(sampling_rate=feature_extractor.sampling_rate))
audios = [dataset[i]["audio"]["array"] for i in range(batch_size)]
inputs = feature_extractor(audio=audios, sampling_rate=feature_extractor.sampling_rate, return_tensors="pt").to(
    model.device, model.dtype
)
print("Input waveform shape:", inputs["input_values"].shape)
# Input waveform shape: torch.Size([2, 1, 93760])

# encoder and decoder
encoder_output = model.encode(**inputs)
audio_codes = encoder_output.audio_codes
print("Audio codes shape:", audio_codes.shape)
# Audio codes shape: torch.Size([2, 1, 292])
audio_values = model.decode(audio_codes).audio_values
print("Audio values shape:", audio_values.shape)

# Equivalently, you can do encoding and decoding in one step
model_output = model(**inputs)
audio_codes = model_output.audio_codes
audio_values = model_output.audio_values
```

### `torch.compile` ile hızlandırma

[`torch.compile`](https://pytorch.org/docs/stable/generated/torch.compile.html) ile çıkarımı hızlandırabilirsiniz. Derleme maliyeti nedeniyle ilk birkaç çağrı daha yavaş olacaktır, ancak sonraki çağrılar daha hızlı olacaktır.

```python
import torch
from datasets import Audio, load_dataset
from transformers import AutoFeatureExtractor, AutoModel

batch_size = 4
model_id = "neuphonic/neucodec"
model = AutoModel.from_pretrained(model_id, device_map="auto")
feature_extractor = AutoFeatureExtractor.from_pretrained(model_id)

dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
dataset = dataset.cast_column("audio", Audio(sampling_rate=feature_extractor.sampling_rate))
audios = [dataset[i]["audio"]["array"] for i in range(batch_size)]
inputs = feature_extractor(
    audio=audios, sampling_rate=feature_extractor.sampling_rate, padding=True, return_tensors="pt"
).to(model.device, model.dtype)

compiled_model = torch.compile(model, fullgraph=True)

# Warmup (includes compilation on first call)
for _ in range(10):
    with torch.inference_mode():
        _ = compiled_model(**inputs)

with torch.inference_mode():
    output = compiled_model(**inputs)
print("Audio values shape:", output.audio_values.shape)
```

## NeuCodecConfig[[transformers.NeuCodecConfig]]

#### transformers.NeuCodecConfig[[transformers.NeuCodecConfig]]

```python
transformers.NeuCodecConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, hidden_size: int = 1024, intermediate_size: int = 4096, num_hidden_layers: int = 12, num_attention_heads: int = 16, num_key_value_heads: int = 16, hidden_act: str = 'silu', max_position_embeddings: int = 4096, initializer_range: float = 0.02, rms_norm_eps: float = 1e-06, pad_token_id: int | None = None, tie_word_embeddings: bool = False, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None, attention_bias: bool = False, attention_dropout: int | float | None = 0.0, head_dim: int = 64, encoder_hidden_size: int = 48, downsampling_ratios: list[int] | tuple[int, ...] = (2, 2, 4, 4, 5), semantic_model_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, activation_dropout: float = 0.1, quantization_dim: int = 2048, quantization_levels: list[int] | tuple[int, ...] = (4, 4, 4, 4, 4, 4, 4, 4), input_sampling_rate: int = 16000, output_sampling_rate: int = 24000)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/neucodec/configuration_neucodec.py#L33)

**Parametreler:**

hidden_size (`int`, *isteğe bağlı*, varsayılan `1024`) : Gizli temsillerin boyutu.

intermediate_size (`int`, *isteğe bağlı*, varsayılan `4096`) : MLP temsillerinin boyutu.

num_hidden_layers (`int`, *isteğe bağlı*, varsayılan `12`) : Transformer decoder'ındaki gizli katman sayısı.

num_attention_heads (`int`, *isteğe bağlı*, varsayılan `16`) : Transformer decoder'ındaki her dikkat katmanı için dikkat başı sayısı.

num_key_value_heads (`int`, *isteğe bağlı*, varsayılan `16`) : Grouped Query Attention'ı uygulamak için kullanılması gereken key_value başlarının sayısıdır. `num_key_value_heads=num_attention_heads` ise model Multi Head Attention (MHA) kullanır, `num_key_value_heads=1` ise model Multi Query Attention (MQA) kullanır, aksi halde GQA kullanılır. Çok başlı bir checkpoint'i GQA checkpoint'ine dönüştürürken, her grup key ve value başı, o gruptaki tüm orijinal başların ortalama havuzlanması (meanpooling) ile oluşturulmalıdır. Daha fazla ayrıntı için [bu makaleye](https://huggingface.co/papers/2305.13245) göz atın. Belirtilmezse, varsayılan olarak `num_attention_heads` kullanılır.

hidden_act (`str`, *isteğe bağlı*, varsayılan `silu`) : Dekoderdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, `"gelu"`, `"relu"`, `"silu"` vb.

max_position_embeddings (`int`, *isteğe bağlı*, varsayılan `4096`) : Bu modelin kullanılabileceği maksimum dizi uzunluğu.

initializer_range (`float`, *opsiyonel*, varsayılan `0.02`) : Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.

rms_norm_eps (`float`, *opsiyonel*, varsayılan `1e-06`) : rms normalizasyon katmanları tarafından kullanılan epsilon.

pad_token_id (`int`, *isteğe bağlı*) : Sözlükte dolgu için kullanılan token kimliği.

tie_word_embeddings (`bool`, *isteğe bağlı*, varsayılan `False`) : Ağırlık gömme bağlamalarının, modelin `tied_weights_keys` eşlemesine göre yapılıp yapılmayacağını belirtir.

rope_parameters (`Union[~modeling_rope_utils.RopeParameters, dict]`, *isteğe bağlı*) : RoPE gömme yapılandırma parametrelerini içeren sözlük. Sözlük, `rope_theta` için bir değer içermeli ve daha uzun `max_position_embeddings` ile RoPE kullanmak istiyorsanız ölçekleme için kullanılan parametreleri isteğe bağlı olarak içermelidir.

attention_bias (`bool`, *isteğe bağlı*, varsayılan `False`) : Kendi kendine dikkat (self-attention) sırasında sorgu, anahtar, değer ve çıktı projeksiyon katmanlarında sapma (bias) kullanılıp kullanılmayacağı.

attention_dropout (`Union[int, float]`, *isteğe bağlı*, varsayılan `0.0`) : Dikkat olasılıkları için dropout oranı.

head_dim (`int`, *isteğe bağlı*, varsayılan `64`) : Dikkat başı boyutu. None ise, hidden_size // num_attention_heads varsayılan olarak kullanılır

encoder_hidden_size (`int`, *isteğe bağlı*, varsayılan `48`) : Gizli temsillerin boyutu.

downsampling_ratios (`list[int]`, *isteğe bağlı*, varsayılan `[2, 2, 4, 4, 5]`) : Kodlayıcıda örneklem azaltma oranları.

semantic_model_config (`Union[Dict, Wav2Vec2BertConfig]`, *isteğe bağlı*) : Semantik (Wav2Vec2BertConfig) modelinin yapılandırma nesnesinin bir örneği.

activation_dropout (`float`, *opsiyonel*, varsayılan `0.1`) : Tamamen bağlı katmandaki aktivasyonlar için dropout oranı.

quantization_dim (`int`, *opsiyonel*, varsayılan 2048) : Vektör kuantizasyonu kod kitabı için boyut.

quantization_levels (`list[int]`, *isteğe bağlı*, varsayılan `[4, 4, 4, 4, 4, 4, 4, 4]`) : Vektör kuantizasyonu kod kitabı için seviyeler.

input_sampling_rate (`int`, *isteğe bağlı*, varsayılan 16000) : Kodlayıcının giriş ses dalgasının örneklem hızı, hertz (Hz) cinsinden.

output_sampling_rate (`int`, *isteğe bağlı*, varsayılan 24000) : Çözücünün çıkış ses dalgasının örnekleme hızı, hertz (Hz) cinsinden.

Bu, bir NeuCodecModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Neucodec modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılanlarla bir yapılandırma örneği oluşturmak, [neuphonic/neucodec](https://huggingface.co/neuphonic/neucodec) yapılandırmasına benzer bir yapılandırma üretir.

Yapılandırma nesneleri [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) sınıfından türetilir ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için [PreTrainedConfig](/docs/transformers/main/tr/main_classes/configuration#transformers.PreTrainedConfig) belgesini okuyun.

Örnek:

```python
>>> from transformers import NeuCodecConfig, NeuCodecModel

>>> # Initializing configuration
>>> configuration = NeuCodecConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = NeuCodecModel(configuration)

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

## NeuCodecFeatureExtractor[[transformers.NeuCodecFeatureExtractor]]

#### transformers.NeuCodecFeatureExtractor[[transformers.NeuCodecFeatureExtractor]]

```python
transformers.NeuCodecFeatureExtractor(feature_size = 80, sampling_rate = 16000, padding_value = 1.0, hop_length = 320, **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/neucodec/feature_extraction_neucodec.py#L42)

**Parametreler:**

feature_size (`int`, *isteğe bağlı*, varsayılan 80) : Çıkarılan özelliklerin boyutu.

sampling_rate (`int`, *isteğe bağlı*, varsayılan 16000) : Ses dosyalarının dijitalleştirileceği örneklem hızı, hertz (Hz) cinsinden ifade edilir.

padding_value (`float`, *isteğe bağlı*, varsayılan 1.0) : Mel spektrogram için dolgu vektörlerini doldurmak için kullanılan değer.

hop_length (`int`, *opsiyonel*, varsayılan 320) : Her karede kodlanan ses örneklerinin sayısı. Alt örnekleme oranlarının çarpımına eşittir. Akustik kodlayıcı girdi dolgusu için gereklidir.

NeuCodec özellik çıkarıcısı oluşturur; bu çıkarıcı, anlamsal kodlayıcı için mel-filtre bankası özelliklerini ve akustik kodlayıcı için dolgulu ses verisini hesaplar.

Bu özellik çıkarıcı, ana yöntemlerin çoğunu içeren [SequenceFeatureExtractor](/docs/transformers/main/tr/main_classes/feature_extractor#transformers.SequenceFeatureExtractor) sınıfından devralır. Kullanıcıların bu yöntemler hakkında daha fazla bilgi için bu üst sınıfa başvurması gerekir.

#### __call__[[transformers.NeuCodecFeatureExtractor.__call__]]

```python
__call__(audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']], padding: bool | str | transformers.utils.generic.PaddingStrategy = True, max_length: int | None = None, truncation: bool = False, return_tensors: str | transformers.utils.generic.TensorType | None = None, sampling_rate: int | None = None, device: str = 'cpu', **kwargs)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/neucodec/feature_extraction_neucodec.py#L90)

**Parametreler:**

audio (`np.ndarray`, `torch.Tensor`, `list[np.ndarray]`, `list[torch.Tensor]`) : (num_channels, sequence_length) biçiminde bir Numpy dizisi veya torch tensörü. Bir girdi grubu için bu tür dizilerin veya tensörlerin bir listesi de sağlanabilir.

padding (`bool`, `str` veya [PaddingStrategy](/docs/transformers/main/tr/internal/file_utils#transformers.utils.PaddingStrategy), *opsiyonel*, varsayılan `True`) : Dönen dizilerin dolgusunu (modelin dolgu tarafına ve dolgu indeksine göre) aşağıdakilerden birini seçerek belirleyin: - `True` veya `'longest'`: Batch'teki en uzun diziye kadar dolgu yapın (yalnızca tek bir dizi sağlandıysa dolgu yapılmaz). - `'max_length'`: `max_length` argümanı ile belirtilen maksimum uzunluğa kadar veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kadar dolgu yapın. - `False` veya `'do_not_pad'` (varsayılan): Dolgu yapılmaz (yani, farklı uzunluklarda dizilere sahip bir batch çıktısı verilebilir).

max_length (`int`, *isteğe bağlı*) : Dönen listenin maksimum uzunluğu ve isteğe bağlı dolgu uzunluğu (bkz. yukarıda).

truncation (`bool`) : *max_length*'den uzun giriş dizilerini *max_length* değerine kısaltmak için kesme işlemini etkinleştirir.

return_tensors (`str` veya [TensorType](/docs/transformers/main/tr/internal/file_utils#transformers.TensorType), *isteğe bağlı*) : Ayarlanırsa, Python tamsayı listesi yerine tensörler döndürülür. Kabul edilen değerler:  - `'tf'`: TensorFlow `tf.constant` nesnelerini döndürür. - `'pt'`: PyTorch `torch.Tensor` nesnelerini döndürür. - `'np'`: Numpy `np.ndarray` nesnelerini döndürür.

sampling_rate (`int`, *isteğe bağlı*) : `audio` girdisinin örneklenmiş olduğu örnek hızı. Sessiz hataları önlemek için forward çağrısında `sampling_rate` parametresinin geçirilmesi şiddetle önerilir.

device (`str`, *isteğe bağlı*, varsayılan `"cpu"`) : Mel filtre bankası özellik çıkarımı sırasında PyTorch tensörleri için cihaz.

kwargs (*isteğe bağlı*) : Tokenizer veya özellik çıkarıcıya (feature extractor) iletilecek anahtar kelime argümanlarının kalan sözlüğü.

## NeuCodecModel[[transformers.NeuCodecModel]]

#### transformers.NeuCodecModel[[transformers.NeuCodecModel]]

```python
transformers.NeuCodecModel(config: NeuCodecConfig)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/neucodec/modeling_neucodec.py#L944)

**Parametreler:**

config ([NeuCodecConfig](/docs/transformers/main/tr/model_doc/neucodec#transformers.NeuCodecConfig)) : Modelin tüm parametrelerini içeren model yapılandırma sınıfı. Bir yapılandırma dosyasıyla başlatmak, modelle ilişkili ağırlıkları yüklemez, yalnızca yapılandırmayı yükler. Model ağırlıklarını yüklemek için [from_pretrained()](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel.from_pretrained) yöntemine bakın.

NeuCodec sinirsel ses kodlayıcı modeli.

Bu model [PreTrainedModel](/docs/transformers/main/tr/main_classes/model#transformers.PreTrainedModel) sınıfından devralır. Kütüphanenin tüm modelleri için uyguladığı genel yöntemler (indirme veya kaydetme, giriş gömme boyutlarını yeniden ayarlama, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) alt sınıfıdır. Bunu standart bir PyTorch Module olarak kullanın ve genel kullanım ve davranışla ilgili tüm konular için PyTorch dokümantasyonuna başvurun.

#### decode[[transformers.NeuCodecModel.decode]]

```python
decode(audio_codes: typing.Optional[torch.Tensor] = None, latents: typing.Optional[torch.Tensor] = None, audio_codes_mask: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/neucodec/modeling_neucodec.py#L1028)

**Parametreler:**

audio_codes (`torch.LongTensor`, şekli `(batch_size, 1, codes_length)`) : `model.encode` kullanılarak hesaplanan ayrık kod dizinleri.

latents (`torch.Tensor`, şekli `(batch_size, dimension, time_steps)`, *isteğe bağlı*) : Girdinin kuantize edilmiş sürekli temsili.

audio_codes_mask (`torch.Tensor`, şekli `(batch_size, codes_length)`, *isteğe bağlı*) : `model.encode` tarafından döndürülen, geçerli (doldurma olmayan) konumları işaretleyen maske. Değişken uzunluklu seslerin doğru toplu çözülmesi için gereklidir.

**Dönüş:** `NeuCodecDecoderOutput` veya `tuple(torch.Tensor)`

`NeuCodecDecoderOutput` veya bir `torch.Tensor` demeti (eğer `return_dict=False` geçirildiyse veya `config.return_dict=False` ise), yapılandırmaya (`None`) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

- **audio_values** (`torch.Tensor`, şekli `(batch_size, 1, segment_length)`, *isteğe bağlı*) -- Sürekli ses sinyallerine geri dönüştürülerek elde edilen, zaman alanında çözümlenmiş ses dalgası değerleri. Bu, oynatılabilen yeniden oluşturulmuş sesi temsil eder.

#### encode[[transformers.NeuCodecModel.encode]]

```python
encode(input_values: Tensor, input_features: Tensor, padding_mask: typing.Optional[torch.Tensor] = None, input_features_mask: typing.Optional[torch.Tensor] = None, output_latents: bool = False, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/neucodec/modeling_neucodec.py#L966)

**Parametreler:**

input_values (`torch.Tensor`, şekli `(batch_size, 1, sequence_length)`) : Girdi ses dalgası.

input_features (`torch.Tensor`, şekli `(batch_size, mel_bins, time_steps)`) : Semantik kodlama için girdi ses mel spektrogramı.

padding_mask (`torch.Tensor`, şekli `(batch_size, 1, sequence_length)`) : `input_values` için dolgu yapmakta kullanılan dolgu maskesi.

input_features_mask (`torch.Tensor`, şekli `(batch_size, time_steps)`, *isteğe bağlı*) : Semantik kodlayıcıya giden spektrogram girdisi için dikkat maskesi. Geçerli kareler için `1`, dolgu için `0`.

output_latents (`bool`, *isteğe bağlı*, varsayılan `False`) : Kuantizörden sürekli latent temsilin döndürülüp döndürülmeyeceğini belirtir.

**Dönüş:** `NeuCodecEncoderOutput` veya `tuple(torch.Tensor)`

`NeuCodecEncoderOutput` veya bir `torch.Tensor` demeti (eğer `return_dict=False` geçirildiyse veya `config.return_dict=False` ise), yapılandırmaya (`None`) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

- **audio_codes** (`torch.LongTensor`, şekli `(batch_size, 1, codes_length)`, *isteğe bağlı*) -- `model.encode` kullanılarak hesaplanan ayrık kod gömüleri. Bunlar, depolama, iletim veya üretim için kullanılabilen girdi ses sinyalinin sıkıştırılmış, kuantize edilmiş formunu temsil eder.
- **latents** (`torch.Tensor`, şekli `(batch_size, dimension, time_steps)`) -- Girdinin gömme (embedding) değerlerinin kuantize edilmiş sürekli temsili.
- **audio_codes_mask** (`torch.int32` of shape `(batch_size, 1, codes_length)`, *opsiyonel*) -- `audio_codes` içindeki geçerli ses kodlarını belirtmek için indirgenmiş `padding_mask`.

#### forward[[transformers.NeuCodecModel.forward]]

```python
forward(input_values: Tensor, input_features: Tensor, padding_mask: typing.Optional[torch.Tensor] = None, input_features_mask: typing.Optional[torch.Tensor] = None, output_latents: bool = False, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Kaynak](https://github.com/huggingface/transformers/blob/main/src/transformers/models/neucodec/modeling_neucodec.py#L1064)

**Parametreler:**

input_values (`torch.Tensor`, şekli `(batch_size, 1, sequence_length)`) : `config.input_sampling_rate` örnekleme hızında örneklenmiş giriş ses dalgası.

input_features (`torch.Tensor`, şekli `(batch_size, mel_bins, time_steps)`) : Semantik kodlama için girdi ses mel spektrogramı.

padding_mask (`torch.Tensor`, şekli `(batch_size, 1, sequence_length)`) : `input_values` için dolgu yapmakta kullanılan dolgu maskesi.

input_features_mask (`torch.Tensor`, şekli `(batch_size, time_steps)`, *isteğe bağlı*) : Semantik kodlayıcıya giden spektrogram girdisi için dikkat maskesi. Geçerli kareler için `1`, dolgu için `0`.

output_latents (`bool`, *isteğe bağlı*, varsayılan `False`) : Kuantizörden sürekli latent temsilin döndürülüp döndürülmeyeceğini belirtir.

**Dönüş:** `NeuCodecOutput` veya `tuple(torch.Tensor)`

`NeuCodecOutput` veya bir `torch.Tensor` demeti (eğer `return_dict=False` geçirildiyse veya `config.return_dict=False` ise), yapılandırmaya (`None`) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

[NeuCodecModel](/docs/transformers/main/tr/model_doc/neucodec#transformers.NeuCodecModel) forward metodu, `__call__` özel metodunu geçersiz kılar.

İleri geçiş tarifi bu fonksiyon içinde tanımlanmalı olsa da, sonrasında bunun yerine `Module` örneğini çağırmak gerekir; çünkü ilki ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

- **audio_values** (`torch.Tensor`, şekli `(batch_size, 1, sequence_length)`, *isteğe bağlı*) -- NeuCodec'in decoder kısmı kullanılarak zaman alanında elde edilen, çözümlenmiş ses dalgası değerleri. Bunlar yeniden oluşturulan ses sinyalini temsil eder.
- **audio_codes** (`torch.LongTensor`, şekli `(batch_size, 1, codes_length)`, *isteğe bağlı*) -- `model.encode` kullanılarak hesaplanan ayrık kod gömme değerleri. Bunlar, ileri işleme veya üretim için kullanılan girdi sesinin kuantize edilmiş temsilleridir.
- **latents** (`torch.Tensor`, şekli `(batch_size, dimension, time_steps)`) -- Girdinin gömme (embedding) değerlerinin kuantize edilmiş sürekli temsili.
- **audio_codes_mask** (`torch.int32` of shape `(batch_size, 1, codes_length)`, *opsiyonel*) -- `audio_codes` içindeki geçerli ses kodlarını belirtmek için indirgenmiş `padding_mask`.

Örnekler:

```python
>>> from datasets import load_dataset
>>> from transformers import AutoFeatureExtractor, NeuCodecModel

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> audio = dataset["train"]["audio"][0]["array"]

>>> model_id = "neuphonic/neucodec"
>>> model = NeuCodecModel.from_pretrained(model_id)
>>> feature_extractor = AutoFeatureExtractor.from_pretrained(model_id)

>>> inputs = feature_extractor(audio=audio, sampling_rate=feature_extractor.sampling_rate, return_tensors="pt")

>>> outputs = model(**inputs)
>>> audio_codes = outputs.audio_codes
>>> audio_values = outputs.audio_values  # sampled at 24kHz
```

