Transformers documentation

Pocket TTS

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Bu model, 2026-10-20 tarihinde Hugging Face Transformers'a katkıda bulunulmuştur.

Pocket TTS

Genel Bakış

Pocket TTS, Kyutai’nin 100M parametreli metinden sese modelidir; CPU üzerinde gerçek zamanlıdan daha hızlı çalışan bir Continuous Audio Language Model’dür. Neden-sonuç (causal) bir transformer, tek adımlı bir akış (flow) başlığı aracılığıyla her kare için (12.5 Hz) bir sürekli ses latent’i üretir ve konuşma sonu (end-of-speech) başlığı ne zaman durulacağına karar verir.

İşleyici, sesli istekleri kodlayıp üretilen latentleri 24 kHz ses olarak çözen, Mimi tabanlı bir codec olan Pocket TTS audio tokenizer bileşenini barındırır. Hazır sesler KV önbellekleri olarak (voices/) dağıtılır.

İki akış başlığı yayınlanmıştır: Lagrangian öz-distilasyon (flow_type="lsd", varsayılan) ve sürüklenen (flow_type="drifting", english_drifting_26-09). İnce ayar (finetuning) desteklenmektedir, bkz. Eğitim.

Bu model Eustache Le Bihan tarafından katkıda bulunmuştur. Orijinal kod kyutai-labs/pocket-tts'tir.

Kullanım ipuçları

  • Girdileri apply_chat_template() ile hazırlayın (her metin için bir user mesajı, add_generation_prompt=True). Tokenizer'ın normalizer'ı, metni checkpoint'in dil ayarlarıyla orijinalindeki gibi hazırlar.
  • generate, audio_latents ve audio_latents_mask değerlerini döndürür; bunları PocketTTSProcessor.decode() ile çözümlersiniz.
  • max_new_tokens, metin uzunluğuna dayalı bir bütçeye göre varsayılan olarak ayarlanır ve üretim, konuşma sonu logiti eos_threshold değerini aştıktan kısa bir süre sonra durur.
  • do_sample=False, sıcaklık 0'da orijinal ile eşleşir. Örnekleme kullanıldığında, temperature (varsayılan 0.3) akışın başlangıç gürültüsünün varyansıdır.
  • Uzun metni PocketTTSProcessor.split_text() ile bölün, her parça bir konuşma içersin.

Kullanım

Ses

Ses üç farklı şekilde verilebilir.

1. Bir kaydın kopyalanması: konuşmadaki bir audio öğesi.

from transformers import AutoModelForTextToWaveform, AutoProcessor

model_id = "eustlb/pocket-tts"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")

url = "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/en-Alice_woman.wav"
conversation = [
    {
        "role": "user",
        "content": [
            {"type": "audio", "url": url},
            {"type": "text", "text": "Hello world. I am Kyutai's Pocket TTS."},
        ],
    }
]
inputs = processor.apply_chat_template(
    conversation, tokenize=True, return_dict=True, add_generation_prompt=True
).to(model.device)

outputs = model.generate(**inputs)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio(audio, "cloned.wav")

2. Ön hesaplanmış latentler: latentler işlemciye geçirilen boş bir audio öğesi.

from transformers import AutoModelForTextToWaveform, AutoProcessor
from transformers.audio_utils import load_audio

model_id = "eustlb/pocket-tts"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")

# e.g. a recording encoded once by the processor's audio tokenizer,
# to reuse without re-encoding it
url = "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/en-Alice_woman.wav"
features = processor.feature_extractor(
    load_audio(url, sampling_rate=24000), sampling_rate=24000
).to(processor.audio_tokenizer.device)
# (num_frames, latent_dim)
voice = processor.audio_tokenizer.encode(**features).latents[0]

conversation = [
    {
        "role": "user",
        "content": [
            {"type": "audio"},
            {"type": "text", "text": "Hello world. I am Kyutai's Pocket TTS."},
        ],
    }
]
inputs = processor.apply_chat_template(
    conversation,
    tokenize=True,
    return_dict=True,
    add_generation_prompt=True,
    processor_kwargs={"audio_prompt_latents": [voice]},
).to(model.device)

outputs = model.generate(**inputs)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio(audio, "latents.wav")

3. Önbelleğe alınmış bağlam: sesli istemin KV önbelleği, past_key_values olarak geçirilir. Dağıtılan sesler (voices/) bu biçimi kullanır.

from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
from transformers import AutoModelForTextToWaveform, AutoProcessor, DynamicCache

model_id = "eustlb/pocket-tts"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")

voice = load_file(hf_hub_download(model_id, "voices/alba.safetensors"))
layers = []
for i, layer in enumerate(model.model.layers):
    # each layer's cache on that layer's device
    device = layer.self_attn.k_proj.weight.device
    layers.append(
        (voice[f"layers.{i}.keys"].to(device), voice[f"layers.{i}.values"].to(device))
    )
voice_cache = DynamicCache(layers, config=model.config)

conversation = [
    {
        "role": "user",
        "content": [{"type": "text", "text": "Hello world. I am Kyutai's Pocket TTS."}],
    }
]
inputs = processor.apply_chat_template(
    conversation, tokenize=True, return_dict=True, add_generation_prompt=True
).to(model.device)

outputs = model.generate(**inputs, past_key_values=voice_cache)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio(audio, "cached.wav")

Partiler ve uzun metin

Birkaç metni ve sesi toplu olarak işleyin, uzun metinleri parçalara ayırın:

import torch
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
from transformers import AutoModelForTextToWaveform, AutoProcessor, DynamicCache

model_id = "eustlb/pocket-tts"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")


def load_voices(names):
    """The shipped voices, one per conversation, as one cache, left-padded to the
    longest voice, and the mask of their positions.

    `generate` extends the cache: load it for every call.
    """
    voices = [
        load_file(hf_hub_download(model_id, f"voices/{name}.safetensors"))
        for name in names
    ]
    lengths = [voice["layers.0.keys"].shape[2] for voice in voices]
    length = max(lengths)
    layers = []
    for i, layer in enumerate(model.model.layers):
        device = layer.self_attn.k_proj.weight.device
        keys, values = (
            torch.cat(
                [
                    torch.nn.functional.pad(voice[f"layers.{i}.{kind}"], (0, 0, length - n, 0))
                    for voice, n in zip(voices, lengths)
                ]
            ).to(device)
            for kind in ("keys", "values")
        )
        layers.append((keys, values))
    mask = torch.tensor([[0] * (length - n) + [1] * n for n in lengths])
    return DynamicCache(layers, config=model.config), mask


text = (
    "A first sentence that is long enough to be worth splitting. "
    "Then a second one, and a third one for good measure."
)
chunks = processor.split_text(text)
conversations = [
    [{"role": "user", "content": [{"type": "text", "text": chunk}]}]
    for chunk in chunks + ["Hello world"]
]
inputs = processor.apply_chat_template(
    conversations, tokenize=True, return_dict=True, add_generation_prompt=True
).to(model.device)

voice_cache, voice_mask = load_voices(["alba"] * len(chunks) + ["jean"])
# the mask covers the cached voices too
inputs["attention_mask"] = torch.cat(
    [voice_mask.to(inputs["attention_mask"]), inputs["attention_mask"]], dim=-1
)
outputs = model.generate(**inputs, past_key_values=voice_cache)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio(
    [torch.cat(audio[: len(chunks)]), audio[-1]], ["long.wav", "hello.wav"]
)

Sapma kontrol noktası

Aynı kullanım, kontrol noktasının kendi sesleriyle:

from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
from transformers import AutoModelForTextToWaveform, AutoProcessor, DynamicCache

model_id = "eustlb/pocket-tts-english-drifting"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")

voice = load_file(hf_hub_download(model_id, "voices/alba.safetensors"))
layers = []
for i, layer in enumerate(model.model.layers):
    device = layer.self_attn.k_proj.weight.device
    layers.append(
        (voice[f"layers.{i}.keys"].to(device), voice[f"layers.{i}.values"].to(device))
    )

conversation = [
    {
        "role": "user",
        "content": [{"type": "text", "text": "Hello world. I am Kyutai's Pocket TTS."}],
    }
]
inputs = processor.apply_chat_template(
    conversation, tokenize=True, return_dict=True, add_generation_prompt=True
).to(model.device)

outputs = model.generate(
    **inputs, past_key_values=DynamicCache(layers, config=model.config)
)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio(audio, "drifting.wav")

Eğitim

Hedef ses dosyasını assistant turuna yerleştirin. İşleyici, latentlerini labels olarak döndürür ve model, orijinalin kaybını (LSD akış kaybı ile config.eos_loss_weight çarpısı konuşma sonu kaybı) döndürür. Ses istemi, genellikle aynı ifadenin başlangıcıdır.

import torch
from transformers import AutoModelForTextToWaveform, AutoProcessor

model_id = "eustlb/pocket-tts"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")
model.train()

conversation = [
    {
        "role": "user",
        "content": [
            {"type": "audio", "audio": voice_prompt},
            {"type": "text", "text": target_text},
        ],
    },
    {"role": "assistant", "content": [{"type": "audio", "audio": target_audio}]},
]
inputs = processor.apply_chat_template(
    conversation, tokenize=True, return_dict=True
).to(model.device)
loss = model(**inputs).loss
loss.backward()
  • Sesi bir kayıt veya latents olarak verin, bir önbellek olarak değil.
  • Sınıfsız yönlendirme (classifier-free guidance) için, user turundaki audio veya text öğesini kaldırın (orijinal uygulama, her birini 0,2 olasılıkla düşürür).
  • Önceden hesaplanmış latents, processor_kwargs={"audio_prompt_latents": [...], "labels": [...]} içine yerleştirilir; boş {"type": "audio"} öğeleri yer tutucu olarak kullanılır.
  • Orijinal tarife: AdamW, learning_rate=2e-5 (yeni bir dil için 2e-4), adam_beta2=0.95, weight_decay=0.1, max_grad_norm=1.0, 1000 ısınma adımı ardından sabit, ağırlıkların EMA'sı (sönümleme 0.999).

PocketTTSConfig

sınıf transformers.PocketTTSConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneflow_head_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonevocab_size: int = 4004hidden_size: int = 1024num_hidden_layers: int = 6num_attention_heads: int = 16num_key_value_heads: int | None = Nonehead_dim: int | None = Noneintermediate_size: int = 4096hidden_act: str = 'gelu_pytorch_tanh'layer_norm_eps: float = 1e-05attention_bias: bool = Falseattention_dropout: float = 0.0max_position_embeddings: int = 8192rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Nonelatent_dim: int = 32pad_token_id: int = 3bos_token_id: int | None = Noneeos_token_id: int | None = Noneaudio_prompt_token_id: int = 4000audio_latent_token_id: int = 4001audio_prompt_bos_token_id: int = 4002audio_bos_token_id: int = 4003frame_rate: float = 12.5initializer_range: float = 0.02use_cache: bool = Trueeos_loss_weight: float = 0.1flow_loss_num_samples: int = 4lsd_distill_probability: float = 0.25lsd_diagonal_weight: float = 0.75lsd_time_logit_mean: float = 0.4lsd_time_logit_std: float = 1.0latent_stats_ema_steps: int = 1000latent_stats_ema_decay: float = 0.999 )

Parametreler

  • flow_head_config (Union[PocketTTSFlowHeadConfig, dict], isteğe bağlı) — Her latent'i omurga gizli durumundan örnekleyen akış başlığının yapılandırması.
  • vocab_size (int, isteğe bağlı, varsayılan 4004) — Modelin sözlük boyutu. input_ids ile temsil edilebilecek farklı token sayısını belirler.
  • hidden_size (int, isteğe bağlı, varsayılan 1024) — Gizli temsillerin boyutu.
  • num_hidden_layers (int, isteğe bağlı, varsayılan 6) — Transformer çözücüdeki 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ı) — Bu, Grouped Query Attention uygulamasında kullanılacak 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 göz atın. Belirtilmezse, varsayılan olarak num_attention_heads kullanılır.
  • head_dim (int, isteğe bağlı) — Dikkat başı boyutu. None ise, varsayılan olarak hidden_size // num_attention_heads değerini alır.
  • intermediate_size (int, isteğe bağlı, varsayılan 4096) — MLP temsillerinin boyutu.
  • hidden_act (str, isteğe bağlı, varsayılan gelu_pytorch_tanh) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • layer_norm_eps (float, isteğe bağlı, varsayılan 1e-05) — Omurganın katman normalizasyonlarının epsilon değeri.
  • attention_bias (bool, isteğe bağlı, varsayılan False) — Öz-dikkat sırasında sorgu, anahtar, değer ve çıktı projeksiyon katmanlarında önyargı (bias) kullanılıp kullanılmayacağı.
  • attention_dropout (float, isteğe bağlı, varsayılan 0.0) — Dikkat olasılıkları için dropout oranı.
  • max_position_embeddings (int, isteğe bağlı, varsayılan 8192) — Bu modelin kullanılabileceği en uzun dizi uzunluğu.
  • 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 ve daha uzun max_position_embeddings ile RoPE kullanmak istiyorsanız ölçekleme için kullanılan isteğe bağlı parametreleri içermelidir.
  • latent_dim (int, isteğe bağlı, varsayılan 32) — Gövdenin girdi olarak aldığı ses latentlerinin boyutu (audio_prompt_latents, audio_latents); akış başlığının ve ses belirleyicisinin latent_dim değeriyle eşittir.
  • pad_token_id (int, isteğe bağlı, varsayılan 3) — Sözlükte dolgu için kullanılan token kimliği.
  • bos_token_id (int, isteğe bağlı) — Sözlükte akış başlangıcı için kullanılan token kimliği.
  • eos_token_id (int, isteğe bağlı) — Sözlükte akış sonu için kullanılan token kimliği.
  • audio_prompt_token_id (int, isteğe bağlı, varsayılan 4000) — input_ids içindeki ses-istemi karelerinin yer tutucu token kimliği.
  • audio_latent_token_id (int, isteğe bağlı, varsayılan 4001) — input_ids içindeki ses latent konumlarının yer tutucu token kimliği.
  • audio_prompt_bos_token_id (int, isteğe bağlı, varsayılan 4002) — Ses promptunun önüne yerleştirilen token kimliği; gömme değeri, orijinalin sesin başına eklediği öğrenilmiş vektördür.
  • audio_bos_token_id (int, isteğe bağlı, varsayılan 4003) — İlk ses konumunun token kimliği, istemi kapatır: öğrenilen BOS latentini barındırır ve ilk kare bundan üretilir.
  • frame_rate (float, isteğe bağlı, varsayılan 12.5) — Saniye başına ses latent sayısı: generate, varsayılan çerçeve bütçesini buradan türetir.
  • initializer_range (float, isteğe bağlı, varsayılan 0.02) — Tüm ağırlık matrislerini başlatmak için kullanılan truncated_normal_initializer'ın standart sapması.
  • use_cache (bool, isteğe bağlı, varsayılan True) — Modelin son anahtar/değer dikkatlerini (tüm modellerde kullanılmaz) döndürüp döndürmeyeceği. Yalnızca config.is_decoder=True olduğunda veya model yalnızca çözücü tabanlı üretken bir model olduğunda geçerlidir.
  • eos_loss_weight (float, isteğe bağlı, varsayılan 0.1) — Eğitim kaybında konuşma sonu (end-of-speech) kaybının ağırlığı.
  • flow_loss_num_samples (int, isteğe bağlı, varsayılan 4) — Akış kaybında hedef kare başına gürültü örneklem sayısı.
  • lsd_distill_probability (float, isteğe bağlı, varsayılan 0.25) — LSD kaybının öz-distilasyon teriminin hesaplanma olasılığı (beklenen kaybı korumak için yeniden ağırlıklandırılmış); 1 değeri her adımda hesaplanmasını sağlar.
  • lsd_diagonal_weight (float, opsiyonel, varsayılan 0.75) — LSD kaybının çapraz (anlık akış) teriminin ağırlığı; kendinden damıtma terimi kalan kısmı tartar.
  • lsd_time_logit_mean (float, isteğe bağlı, varsayılan 0.4) — LSD kaybının çektiği akış sürelerinin logit-normal dağılımının ortalaması.
  • lsd_time_logit_std (float, isteğe bağlı, varsayılan 1.0) — LSD kaybının çektiği akış sürelerinin logit-normal dağılımının standart sapması.
  • latent_stats_ema_steps (int, isteğe bağlı, varsayılan 1000) — Hedef latentlerin üstel hareketli ortalamasını takip eden latent_mean ve latent_std için ilk eğitim adımlarının sayısı; 0 değeri bunları dondurur.
  • latent_stats_ema_decay (float, isteğe bağlı, varsayılan 0.999) — Bu hareketli ortalamanın sönümleme katsayısı.

Bu, bir PocketTTSModel'in yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Pocket Tts modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, eustlb/pocket-tts modelinin yapılandırmasına benzer bir yapılandırma üretir.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

PocketTTSFlowHeadConfig

sınıf transformers.PocketTTSFlowHeadConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 512num_hidden_layers: int = 6latent_dim: int = 32condition_dim: int = 1024frequency_embedding_size: int = 256hidden_act: str = 'silu'layer_norm_eps: float = 1e-06rms_norm_eps: float = 1e-05max_period: float = 10000.0flow_type: typing.Literal['lsd', 'drifting'] = 'lsd'loss_weighting_hidden_size: int = 32loss_weighting_num_layers: int = 3 )

Parametreler

  • hidden_size (int, isteğe bağlı, varsayılan 512) — Gizli temsillerin boyutu.
  • num_hidden_layers (int, isteğe bağlı, varsayılan 6) — Transformer çözücüdeki gizli katman sayısı.
  • latent_dim (int, isteğe bağlı, varsayılan 32) — Başın tahmin ettiği sürekli ses latentlerinin boyutu (ses tokenizer'ının latent boyutu).
  • condition_dim (int, isteğe bağlı, varsayılan 1024) — Başlığın koşullandığı omurga gizli durumunun boyutu (omurga hidden_size).
  • frequency_embedding_size (int, isteğe bağlı, varsayılan 256) — Akış zamanlarının sinüzoidal gömme boyutu.
  • hidden_act (str, isteğe bağlı, varsayılan silu) — Çözücüdeki doğrusal olmayan aktivasyon fonksiyonu (fonksiyon veya dize). Örneğin, "gelu", "relu", "silu" vb.
  • layer_norm_eps (float, isteğe bağlı, varsayılan 1e-06) — Artık blokların içindeki ve son katmandaki katman normalizasyonlarının epsilon değeri.
  • rms_norm_eps (float, isteğe bağlı, varsayılan 1e-05) — Zaman gömmelemelerini kapatan normalizasyonun epsilon değeri.
  • max_period (float, isteğe bağlı, varsayılan 10000.0) — Kontrol noktasının freqs olarak sakladığı sinüzoidal zaman gömme (embedding) için maksimum periyot.
  • flow_type (str, isteğe bağlı, varsayılan "lsd") — Başlığın eğitildiği hedef, bu başlığın nasıl koşullandırıldığını ve örneklemesinin nasıl yapıldığını belirler. "lsd" (Lagrangian self-distillation): bir akış adımının başlangıç ve bitiş zamanlarına koşullandırılır, Gauss gürültüsünden Euler adımlarıyla örneklenir. "drifting": zaman koşullandırması yoktur, başlık gürültüyü tek çağrıda latent'e eşler.
  • loss_weighting_hidden_size (int, isteğe bağlı, varsayılan 32) — LSD kayıp terimlerinin belirsizlik ağırlıklarını akış zamanlarından öğrenen MLP'nin genişliği (yalnızca eğitim).
  • loss_weighting_num_layers (int, isteğe bağlı, varsayılan 3) — Söz konusu MLP'nin gizli katman sayısı.

Bu, bir PocketTTSModel'in yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. Belirtilen argümanlara göre bir Pocket Tts modelini örneklemek ve model mimarisini tanımlamak için kullanılır. Varsayılan değerlerle bir yapılandırma örneği oluşturmak, eustlb/pocket-tts modelinin yapılandırmasına benzer bir yapılandırma üretir.

Yapılandırma nesneleri PreTrainedConfig sınıfından devralır ve model çıktılarını kontrol etmek için kullanılabilir. Daha fazla bilgi için PreTrainedConfig belgesini okuyun.

PocketTTSFeatureExtractor

sınıf transformers.PocketTTSFeatureExtractor

< >

( feature_size = 1sampling_rate = 24000padding_value = 0.0frame_size = 1920pad_to_multiple_of = 1920end_on_pause = Truepause_duration = 0.08fade_out_duration = 0.02silence_floor_db = 35.0analysis_frame_duration = 0.02**kwargs )

Parametreler

  • feature_size (int, isteğe bağlı, varsayılan 1) — Kanal sayısı.
  • sampling_rate (int, isteğe bağlı, varsayılan 24000) — Ses dalgasının dijitalleştirilmesi gereken örnekleme hızı, hertz (Hz) cinsinden ifade edilir.
  • padding_value (float, isteğe bağlı, varsayılan 0.0) — Doldurma için kullanılan değer.
  • frame_size (int, isteğe bağlı, varsayılan 1920) — Ses tokenizer'ının gizli çerçevesi başına ses örnek sayısı (onun frame_size değeri).
  • pad_to_multiple_of (int, isteğe bağlı, varsayılan 1920) — Ses verisini bu değerin katına doldurur; frame_size'in katı, tüm latent karelerin bütünlüğünü korur.
  • end_on_pause (bool, isteğe bağlı, varsayılan True) — Her ses dalgasının tam olarak pause_duration saniyelik sessizlikle sonlandırılıp sonlandırılmayacağı: en yüksek sesin silence_floor_db dB altında kalan sonda sessizlik (süreleri analysis_frame_duration saniyeyi aşan kareler) kesilir, kalan son fade_out_duration saniye sönümlendirilir ve pause_duration saniyelik sıfır eklenir.
  • pause_duration (float, isteğe bağlı, varsayılan 0.08) — end_on_pause tarafından eklenen sessizliğin süresi, saniye cinsinden.
  • fade_out_duration (float, isteğe bağlı, varsayılan 0.02) — end_on_pause tarafından duraklamadan önce uygulanan fade-out süresi, saniye cinsinden.
  • silence_floor_db (float, isteğe bağlı, varsayılan 35.0) — En yüksek analiz çerçevesinin altındaki seviye, dB cinsinden; end_on_pause bu değerin altındaki son kısımları sessizlik olarak değerlendirir.
  • analysis_frame_duration (float, isteğe bağlı, varsayılan 0.02) — end_on_pause'ün seviyesini ölçtüğü karelerin süresi, saniye cinsinden.

Ses istemci dalga formlarını ses belirteçleyicisinin kodlayıcısı için hazırlayan bir Pocket TTS özellik çıkarıcısı oluşturur.

Her dalga formu isteğe bağlı olarak kısa bir sessizlikle sona erer (orijinaldeki end_on_pause: eğitim istemleri iki kelime arasındaki sessizliğin içinde biter, konuşmada duran bir istem modeli devam ettirmeye teşvik eder ve uzun bir sessizlikle biten bir istem başlangıcı geciktirir), ardından batch, tokenizer’ın çerçeve boyutunun katına sağdan doldurulur.

__call__

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]sampling_rate: int | None = Noneend_on_pause: bool | None = Nonepadding: bool | str | transformers.utils.generic.PaddingStrategy | None = Truepad_to_multiple_of: int | None = Nonemax_length: int | None = Nonereturn_attention_mask: bool | None = Truereturn_tensors: str | None = 'pt'**kwargs )

Parametreler

  • audio (np.ndarray, torch.Tensor, list[np.ndarray], list[torch.Tensor]) — Ses istemlerinin mono dalga formu veya mono dalga formu partisi.
  • sampling_rate (int, isteğe bağlı) — audio girdisinin örneklenmiş olduğu örneklem hızı. Sessiz hataları önlemek için ileri çağrıda sampling_rate değerini geçmek şiddetle önerilir.
  • end_on_pause (bool, isteğe bağlı) — Her dalga formunun kısa bir duraklamayla sonlandırılıp sonlandırılmayacağını belirtir; sınıf docstring'ine bakın. Varsayılan değer self.end_on_pause'tür.
  • padding (bool, str veya PaddingStrategy, isteğe bağlı, varsayılan True) — Toplu işlemin dolgu stratejisi, bkz. pad().
  • pad_to_multiple_of (int, isteğe bağlı) — Toplu işlemi bu değerin katına doldurur. Varsayılan olarak self.pad_to_multiple_of kullanılır.

PocketTTSProcessor

sınıf transformers.PocketTTSProcessor

< >

( feature_extractortokenizeraudio_tokenizer = Nonechat_template = Noneshort_text_max_words: int = 4frames_after_eos_short_text: int = 4frames_after_eos: int = 2fade_in_duration: float = 0.005 )

Parametreler

  • feature_extractor (PocketTTSFeatureExtractor) — Özellik çıkarıcı zorunlu bir girdidir.
  • tokenizer (TokenizersBackend) — Tokenizer zorunlu bir girdidir.
  • audio_tokenizer (PocketTTSAudioTokenizerModel, isteğe bağlı) — Kodlayıcı: sesi latentlere kodlar ve üretilen latentleri sese çözer.
  • chat_template (str) — Bir sohbet içindeki mesaj listelerini tokenize edilebilir bir dizeye dönüştürmek için kullanılan bir Jinja şablonu.
  • short_text_max_words (int, isteğe bağlı, varsayılan 4) — En fazla bu kadar kelimeden oluşan metinler, konuşma sonu çerçevesinden sonra frames_after_eos_short_text çerçeve alır.
  • frames_after_eos_short_text (int, isteğe bağlı, varsayılan 4) — Kısa metinler için konuşma sonu çerçevesinden sonra üretilen çerçeve sayısı.
  • frames_after_eos (int, isteğe bağlı, varsayılan 2) — Daha uzun metinler için konuşma sonu çerçevesinden sonra üretilen çerçeve sayısı.
  • fade_in_duration (float, isteğe bağlı, varsayılan 0.005) — Her çözümlenen dalga formunun başlangıcına uygulanan doğrusal fade-in süresi (saniye cinsinden): yeni bir çözücü durumu küçük bir adımla başlar ve bu bir tık sesi olarak duyulur.

Bir özellik çıkarıcıyı ve bir belirteçleyiciyi tek bir işlemciye saran bir PocketTTSProcessor oluşturur.

PocketTTSProcessor, PocketTTSFeatureExtractor ve TokenizersBackend sınıflarının tüm işlevlerini sunar. Daha fazla bilgi için ~PocketTTSFeatureExtractor ve ~TokenizersBackend belgelerine bakın.

__call__

< >

( text: str | list[str] | None = Noneaudio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = Noneaudio_prompt_latents: list[torch.Tensor] | None = Nonelabels: list[torch.Tensor] | None = None**kwargs: *<class 'transformers.models.pocket_tts.processing_pocket_tts.PocketTTSProcessorKwargs'> )

Parametreler

  • text (str veya list[str]) — apply_chat_template() tarafından oluşturulan istem(ler).
  • audio (np.ndarray, torch.Tensor veya bunların bir listesi, opsiyonel) — Sohbetlerin dalga formları, 24 kHz'de mono, sohbet sırasına göre: her ses ve eğitimde her hedef.
  • audio_prompt_latents (list[torch.Tensor], isteğe bağlı) — Dalga formları yerine, her ses yer tutucusu için (num_frames, latent_dim) boyutunda bir tensör içeren önceden hesaplanmış sesler.
  • labels (list[torch.Tensor], isteğe bağlı) — Dalga formları yerine, her hedef yer tutucusu için (num_frames, latent_dim) boyutunda bir tensör içeren önceden hesaplanmış hedefler (eğitim).
  • end_on_pause (bool, kwargs, opsiyonel) — Orijinalin bir sesi klonlamadan önce yaptığı gibi, her sesli istem dalga formunun kısa bir duraklamayla sonlandırılıp sonlandırılmayacağı. Varsayılan değer, özellik çıkarıcının end_on_pause değeridir.
  • return_tensors (str veya TensorType, isteğe bağlı) — Belirlenirse, belirli bir çerçeveye ait tensörler döndürülür. Kabul edilen değerler şunlardır:
    • 'pt': PyTorch torch.Tensor nesnelerini döndürür.
    • 'np': NumPy np.ndarray nesnelerini döndürür.
  • **kwargs (ProcessingKwargs, isteğe bağlı) — Her modalite (metin, görüntüler, videolar, ses) için ek işleme seçenekleri. Modelle ilgili parametreler yukarıda listelenmiştir; desteklenen argümanların tam listesi için TypedDict sınıfına bakın.

split_text

< >

( text: strmax_tokens: int = 50 )

Parametreler

  • text (str) — Bölünecek metin.
  • max_tokens (int, isteğe bağlı, varsayılan 50) — Parça başına maksimum token sayısı.

text değerini, orijinalindeki split_into_best_sentences gibi, en fazla max_tokens token içeren cümle hizalı parçalara böler: hazırlanan metin cümle sonlarından sonra (ondalık noktalardan değil), max_tokens değerini aşan cümleler ise yan cümle sonlarından sonra kesilir ve parçalar açgözlü bir şekilde gruplanır. Her parça, bir batch'in tek bir konuşması olarak tasarlanmıştır.

decode

< >

( audio_latents: torch.Tensoraudio_latents_mask: torch.Tensor | None = None )

Parametreler

  • audio_latents (torch.Tensor, şekli (batch_size, num_frames, latent_dim) veya (num_frames, latent_dim)) — generate işlevinin döndürdüğü latentler (PocketTTSGenerateOutput.audio_latents), tek bir parti olarak çözümlenmiş veya tek bir örneğin latentleri.
  • audio_latents_mask (torch.Tensor, şekli (batch_size, num_frames), isteğe bağlı) — Her örneğin karelerinin maskesi (PocketTTSGenerateOutput.audio_latents_mask). Bu maske yoksa, her satır tam uzunlukta çözümlenir.

Orijinaldeki gibi, üretilen latentleri ses tokenizer'ı ile dalga formlarına çözer ve her birinin ilk fade_in_duration saniyesini açılır (fade-in) yapar.

save_audio

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]saving_path: str | pathlib.Path | list[str | pathlib.Path]sampling_rate: int | None = None )

Oluşturulan dalga formunu/dalga formlarını WAV dosyasına/dosyalarına yazar.

audio (torch.Tensor, np.ndarray veya bunların bir listesi): decode() tarafından döndürülen dalga formu(lar)ı. saving_path (str, Path veya bunların bir listesi): Her dalga formu için bir yol. sampling_rate (int, isteğe bağlı): Dalga formlarının örneklem hızı, varsayılan olarak özellik çıkarıcının (ses tokenizörünün) değeri.

PocketTTSModel

sınıf transformers.PocketTTSModel

< >

( config: PocketTTSConfig )

Parametreler

  • config (PocketTTSConfig) — 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() yöntemine bakın.

Pocket TTS omurgası: ses istemi, metin belirteçleri ve ses latentlerinden oluşan tek bir akış üzerinde çalışan nedensel bir transformer; normalize edilmiş gizli durumları döndürür. Ses istemi ve ses latentleri, işlemcinin (processor) tuttuğu ses tokenleştiricisinin (audio tokenizer) latentleridir.

Bu model 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 boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch 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.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneaudio_prompt_latents: typing.Optional[torch.Tensor] = Noneaudio_prompt_latents_mask: typing.Optional[torch.Tensor] = Noneaudio_latents: typing.Optional[torch.Tensor] = Noneaudio_latents_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)

Parametreler

  • input_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.

    Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.

    Girdi kimlikleri nelerdir?

  • audio_prompt_latents (torch.Tensor, şekli (batch_size, num_prompt_frames, latent_dim), isteğe bağlı) — Ses işleyicisi tarafından kodlanmış (veya bir kontrol noktasının voices/ dizininden alınmış) ses istemcisi latentleri, batch içindeki en uzun sese göre sağa doldurulmuş ve audio_prompt_token_id konumlarına dağıtılmıştır.
  • audio_prompt_latents_mask (torch.Tensor, şekli (batch_size, num_prompt_frames), isteğe bağlı) — audio_prompt_latents içinde ses karelerinin (1) dolgu (0) ile karşılaştırıldığında maskesi.
  • audio_latents (torch.Tensor, şekli (batch_size, num_latents, latent_dim), isteğe bağlı) — audio_latent_token_id konumlarına dağıtılmış, normalize edilmiş ses latentleri. Bunlardan önceki, istemi (prompt) kapatan ve ilk kareyi üreten audio_bos_token_id konumu, her zaman öğrenilmiş BOS latentini alır.
  • audio_latents_mask (torch.Tensor, şekli (batch_size, num_latents), opsiyonel) — Satırlar farklı sayıda latent konumu içerdiğinde (eğitim), audio_latents içindeki her satırın latentlerinin (1) dolgu (0) ile karşılaştırıldığında maskesi.
  • attention_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • position_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı [0, config.n_positions - 1].

    Pozisyon kimlikleri nedir?

  • past_key_values (~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle past_key_values değerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülen use_cache=True veya config.use_cache=True.

    Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın. past_key_values geçirilmezse, varsayılan olarak DynamicCache başlatılır.

    Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.

    past_key_values kullanılıyorsa, kullanıcının tüm input_ids (şekli (batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemiş input_ids (şekli (batch_size, unprocessed_length)) girmesi beklenir.

  • inputs_embeds (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, input_ids yerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu, input_ids dizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.
  • use_cache (bool, isteğe bağlı) — True olarak ayarlanırsa, past_key_values anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. past_key_values).

Dönüş değeri

BaseModelOutputWithPast veya tuple(torch.Tensor)

Bir BaseModelOutputWithPast veya bir torch.Tensor demeti (return_dict=False geçirildiğinde veya config.return_dict=False olduğunda), yapılandırmaya (PocketTTSConfig) ve girdilere bağlı olarak çeşitli öğelerden oluşur.

PocketTTSModel 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ü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • last_hidden_state (torch.Tensor, şekli (batch_size, sequence_length, hidden_size)) — Modelin son katmanının çıktısındaki gizli durumlar dizisi.

    past_key_values kullanılırsa, yalnızca (batch_size, 1, hidden_size) biçimindeki dizilerin son gizli durumu (hidden-state) çıktı olarak verilir.

  • past_key_values (Cache, isteğe bağlı, use_cache=True geçirildiğinde veya config.use_cache=True olduğunda döndürülür) — Bir Cache örneğidir. Daha fazla ayrıntı için kv cache kılavuzumuza bakın.

    Sıralı çözümlemeyi hızlandırmak için (bkz. past_key_values girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler ve isteğe bağlı olarak config.is_encoder_decoder=True ise cross-attention bloklarındaki anahtar ve değerler) içerir.

  • hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

PocketTTSForConditionalGeneration

sınıf transformers.PocketTTSForConditionalGeneration

< >

( config: PocketTTSConfig )

Parametreler

  • config (PocketTTSConfig) — 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() yöntemine bakın.

Pocket TTS metinden konuşma modeli: omurga, her adımda bir ses latent'i örnekleyen akış başlığı ve konuşma sonu başlığı. İşleyici tarafından 24 kHz ses olarak çözümlenen ses tokenleştirici latent'lerini üretir.

Bu model 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 boyutlandırma, başları budama vb.) için üst sınıf belgelendirmesine bakın.

Bu model aynı zamanda bir PyTorch 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.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneaudio_prompt_latents: typing.Optional[torch.Tensor] = Noneaudio_prompt_latents_mask: typing.Optional[torch.Tensor] = Noneaudio_latents: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Nonelabels_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → PocketTTSOutputWithPast or tuple(torch.Tensor)

Parametreler

  • input_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Sözlükteki girdi dizisi belirteçlerinin (token) indeksleri. Varsayılan olarak dolgu (padding) yok sayılır.

    Dizinler AutoTokenizer kullanılarak elde edilebilir. Ayrıntılar için PreTrainedTokenizer.encode() ve PreTrainedTokenizer.call() konularına bakın.

    Girdi kimlikleri nelerdir?

  • audio_prompt_latents (torch.Tensor, şekli (batch_size, num_prompt_frames, latent_dim), isteğe bağlı) — Ses belirteçleyicisinin (audio tokenizer) ses komutu latentleri, sağa doldurulmuş (right-padded) ve audio_prompt_token_id konumlarına dağıtılmış.
  • audio_prompt_latents_mask (torch.Tensor, şekli (batch_size, num_prompt_frames), isteğe bağlı) — audio_prompt_latents içinde ses karelerinin (1) dolgu (0) ile karşılaştırıldığında maskesi.
  • audio_latents (torch.Tensor, şekli (batch_size, num_latents, latent_dim), isteğe bağlı) — audio_latent_token_id konumlarına dağıtılmış, normalize edilmiş ses latentleri.
  • labels (torch.Tensor, şekli (batch_size, num_frames, latent_dim), isteğe bağlı) — Ses tokenizörünün hedef latentleri (eğitim), sağa doldurulmuş. Her satırın istemi, audio_bos_token_id konumuyla biter ve ardından her kare için bir audio_latent_token_id konumu gelir: model, normalize edilmiş hedefleri (öğretmen zorlaması) besler, BOS ve son kare hariç tüm karelerin çıktılarına akış kaybını (kareleri tahmin edenler) ve hepsine konuşma sonu kaybını uygular; son kare konuşmanın sonudur.
  • labels_mask (torch.Tensor, şekli (batch_size, num_frames), isteğe bağlı) — labels içindeki her satırın hedef karelerini (1) dolgu (0) ile karşılaştıran maskesi.
  • attention_mask (torch.Tensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Doldurma (padding) token indekslerinde dikkat (attention) işlemi yapmaktan kaçınmak için kullanılan maske. Seçilen maske değerleri [0, 1]:
    • 1, maskelenmemiş jetonlar için,
    • maskelenmiş jetonlar için 0.

    Dikkat maskeleri nedir?

  • position_ids (torch.LongTensor şeklinde (batch_size, sequence_length), isteğe bağlı) — Girdi dizilerindeki her token'ın konum gömme (position embedding) içindeki konum indeksleri. Seçim aralığı [0, config.n_positions - 1].

    Pozisyon kimlikleri nedir?

  • past_key_values (~cache_utils.Cache, isteğe bağlı) — Sıralı çözümlemeyi hızlandırmak için kullanılabilen önceden hesaplanmış gizli durumlar (self-attention ve cross-attention bloklarındaki anahtar ve değerler). Bu genellikle past_key_values değerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülen use_cache=True veya config.use_cache=True.

    Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın. past_key_values geçirilmezse, varsayılan olarak DynamicCache başlatılır.

    Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.

    past_key_values kullanılıyorsa, kullanıcının tüm input_ids (şekli (batch_size, sequence_length)) yerine, bu modele geçmiş anahtar değer durumları verilmemiş olan, işlenmemiş input_ids (şekli (batch_size, unprocessed_length)) girmesi beklenir.

  • inputs_embeds (torch.Tensor, şekli (batch_size, sequence_length, hidden_size), isteğe bağlı) — İsteğe bağlı olarak, input_ids yerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu, input_ids dizinlerini ilgili vektörlere dönüştürme biçimi üzerinde modelin dahili gömme arama matrisinden daha fazla kontrol sahibi olmak istiyorsanız faydalıdır.
  • use_cache (bool, isteğe bağlı) — True olarak ayarlanırsa, past_key_values anahtar değer durumları döndürülür ve çözümlemeyi hızlandırmak için kullanılabilir (bkz. past_key_values).

Dönüş değeri

PocketTTSOutputWithPast veya tuple(torch.Tensor)

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

PocketTTSForConditionalGeneration 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ü önceki, ön ve son işleme adımlarını çalıştırmaktan sorumluyken ikincisi bunları sessizce yok sayar.

  • loss (torch.Tensor, şekli (), isteğe bağlı, labels geçirildiğinde döndürülür) — Eğitim kaybı: hedef latentlerin LSD akış kaybı, config.eos_loss_weight ile konuşma sonu kaybının çarpımı.

  • logits (torch.Tensor, şekli (batch_size, sequence_length, 1)) — Konuşma sonu logitsleri, her konum için bir adet.

  • past_key_values (Cache, isteğe bağlı, use_cache=True geçirildiğinde veya config.use_cache=True olduğunda döndürülür) — Bir Cache örneğidir. Daha fazla ayrıntı için kv cache kılavuzumuza bakın.

    Sıralı çözümlemeyi hızlandırmak için (bkz. past_key_values girdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler) içerir.

  • hidden_states (tuple(torch.Tensor), isteğe bağlı, output_hidden_states=True geçirildiğinde veya config.output_hidden_states=True olduğunda döndürülür) — torch.Tensor (modelin bir gömme katmanı varsa gömme katmanının çıktısı için bir tane + her katmanın çıktısı için birer tane) içeren, (batch_size, sequence_length, hidden_size) biçiminde bir demet.

    Her katmanın çıktısında modelin gizli durumları ve isteğe bağlı başlangıç gömme çıktıları.

  • attentions (tuple(torch.Tensor), isteğe bağlı, output_attentions=True geçirildiğinde veya config.output_attentions=True olduğunda döndürülür) — torch.Tensor (katman başına bir tane) içeren bir tuple, şekli (batch_size, num_heads, sequence_length, sequence_length).

    Dikkat softmax'ı sonrası dikkat ağırlıkları, öz-dikkat başlıklarında ağırlıklı ortalamanın hesaplanmasında kullanılır.

  • last_hidden_state (torch.Tensor, şekli (batch_size, sequence_length, hidden_size)) — Akış başlığını koşullandıran, omurganın normalize edilmiş gizli durumları.

Örnek:

>>> from transformers import AutoProcessor, PocketTTSForConditionalGeneration

>>> model = PocketTTSForConditionalGeneration.from_pretrained("eustlb/pocket-tts")

>>> processor = AutoProcessor.from_pretrained("eustlb/pocket-tts")
>>> inputs = processor(text="Hello, my dog is cute", return_tensors="pt")

>>> # generate speech
>>> speech = model(inputs["input_ids"])

generate

< >

( inputs: typing.Optional[torch.Tensor] = None**kwargs )

Parametreler

  • inputs (torch.LongTensor, şekli (batch_size, sequence_length), isteğe bağlı) — PocketTTSProcessor tarafından hazırlanan input_ids. input_ids= olarak da geçirilebilir.
  • kwargs (dict[str, Any], isteğe bağlı) — attention_mask, ses istemi (audio_prompt_latents ve audio_prompt_latents_mask veya yalnızca metin istemleriyle birlikte gelen sesler için ses önekinin past_key_values önbelleği), işleyiciden gelen frames_after_eos, üretim parametreleri (do_sample, temperature, max_new_tokens, …) ve Pocket TTS'e özgü num_flow_steps, eos_threshold ile min_frames_before_eos; bunların varsayılanları üretim yapılandırmasından alınır.

Ses üretir. Bu yöntem, generate() yöntemini geçersiz kılar ve max_new_tokens değerini, parti içindeki en uzun metin için orijinal çalışma zamanının kare bütçesine, yani ceil((num_text_tokens / 3 + 2) * frame_rate) değerine varsayılan olarak ayarlar. Diğer her şey normal üretim kancaları üzerinden işlenir.

sample_latent

< >

( condition: Tensornoise: Tensornum_flow_steps: int ) → torch.Tensor of shape (batch_size, latent_dim)

Parametreler

  • condition (torch.Tensor, şekli (batch_size, hidden_size)) — Üretilen konumun omurga gizli durumu.
  • noise (torch.Tensor, şekli (batch_size, latent_dim)) — sqrt(temperature) ile ölçeklendirilmiş Gauss gürültüsü veya sıfırlar.
  • num_flow_steps (int) — LSD örnekleme biriminin Euler adım sayısı (tek çağrı yapan kayan baş tarafından yok sayılır).

Dönüş değeri

torch.Tensor, şekli (batch_size, latent_dim)

normalleştirilmiş uzayda örneklenen gizli değişken.

Akış başlığı ile noise içinden bir sonraki gizli değişkeni örnekler.

denormalize_latents

< >

( audio_latents: Tensor )

Akış başlığının normalize edilmiş uzayındaki latentleri, ses tokenleyicisinin uzayına eşler.

PocketTTSGenerateOutput

sınıf transformers.models.pocket_tts.generation_pocket_tts.PocketTTSGenerateOutput

< >

( sequences: LongTensorscores: tuple[torch.Tensor] | None = Nonelogits: tuple[torch.Tensor] | None = Noneattentions: tuple[tuple[torch.Tensor]] | None = Nonehidden_states: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneaudio_latents: typing.Optional[torch.Tensor] = Noneaudio_latents_mask: typing.Optional[torch.LongTensor] = None )

Parametreler

  • sequences (torch.LongTensor, şekli (batch_size, sequence_length)) — İstif token kimlikleri, ardından üretilen her kare için bir audio_latent_token_id. Sesin kendisi audio_latents içinde yer alır.
  • scores (tuple(torch.Tensor) isteğe bağlı, output_scores=True olduğunda döndürülür) — Üretilen her kare için konuşma sonu logiti, kare başına (batch_size,) biçiminde bir tensör.
  • logits (tuple(torch.Tensor) isteğe bağlı, output_logits=True olduğunda döndürülür) — scores ile aynıdır: Pocket TTS'nin bir sözlüğü olmadığından, ikisi arasında işlenecek bir şey yoktur.
  • attentions (tuple(tuple(torch.Tensor)), isteğe bağlı, output_attentions=True olduğunda döndürülür) — Her üretilen kare için bir öğe içeren, her katman için bir öğe içeren torch.Tensor türü tuple'ların tuple'ı, şekli (batch_size, num_heads, generated_length, sequence_length).
  • hidden_states (tuple(tuple(torch.Tensor)), isteğe bağlı, output_hidden_states=True olduğunda döndürülür) — Her üretilen kare için bir öğe içeren, her katman için bir öğe içeren torch.Tensor demetlerinin demeti, şekli (batch_size, generated_length, hidden_size).
  • past_key_values (Cache, isteğe bağlı, use_cache=True olduğunda döndürülür) — Üretim sonundaki omurganın anahtar/değer önbelleği.
  • audio_latents (torch.Tensor, şekli (batch_size, num_frames, latent_dim)) — Ses belirteçleyicinin (tokenizer) gizli uzayındaki üretilen gizli değişkenler (latents); her örneğin kendi karelerinin (frames) ötesinde sağ taraftan sıfırlarla doldurulmuştur. PocketTTSProcessor.decode() bunları dalga formlarına dönüştürür.
  • audio_latents_mask (torch.LongTensor, şekli (batch_size, num_frames)) — Her örneğin çerçevelerinin maskesi (1), konuşma sonu çerçevesi ve bu çerçevenin sonraki tüm çerçeveleri dahil olmak üzere; dolgu (padding) (0) ile karşılaştırıldığında.

PocketTTSForConditionalGeneration.generate çıktısı.

Update on GitHub