Transformers documentation
Pocket TTS
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
usermesajı,add_generation_prompt=True). Tokenizer'ın normalizer'ı, metni checkpoint'in dil ayarlarıyla orijinalindeki gibi hazırlar. generate,audio_latentsveaudio_latents_maskdeğ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 logitieos_thresholddeğ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,
userturundakiaudioveyatextöğ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
< source >( 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ılan4004) — Modelin sözlük boyutu.input_idsile temsil edilebilecek farklı token sayısını belirler. - hidden_size (
int, isteğe bağlı, varsayılan1024) — Gizli temsillerin boyutu. - num_hidden_layers (
int, isteğe bağlı, varsayılan6) — Transformer çözücüdeki gizli katman sayısı. - num_attention_heads (
int, isteğe bağlı, varsayılan16) — 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_headsise model Multi Head Attention (MHA) kullanır,num_key_value_heads=1ise 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 olaraknum_attention_headskullanı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ılan4096) — MLP temsillerinin boyutu. - hidden_act (
str, isteğe bağlı, varsayılangelu_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ılanFalse) — Ö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ılan0.0) — Dikkat olasılıkları için dropout oranı. - max_position_embeddings (
int, isteğe bağlı, varsayılan8192) — 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_thetaiçin bir değer ve daha uzunmax_position_embeddingsile 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 belirleyicisininlatent_dimdeğeriyle eşittir. - pad_token_id (
int, isteğe bağlı, varsayılan3) — 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_idsiçindeki ses-istemi karelerinin yer tutucu token kimliği. - audio_latent_token_id (
int, isteğe bağlı, varsayılan 4001) —input_idsiç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ılan0.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ılanTrue) — Modelin son anahtar/değer dikkatlerini (tüm modellerde kullanılmaz) döndürüp döndürmeyeceği. Yalnızcaconfig.is_decoder=Trueolduğ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 edenlatent_meanvelatent_stdiç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
< source >( 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ılan512) — Gizli temsillerin boyutu. - num_hidden_layers (
int, isteğe bağlı, varsayılan6) — 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 (omurgahidden_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ılansilu) — Çö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ınfreqsolarak 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
< source >( 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ı (onunframe_sizedeğ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ılanTrue) — Her ses dalgasının tam olarakpause_durationsaniyelik sessizlikle sonlandırılıp sonlandırılmayacağı: en yüksek sesinsilence_floor_dbdB altında kalan sonda sessizlik (sürelerianalysis_frame_durationsaniyeyi aşan kareler) kesilir, kalan sonfade_out_durationsaniye sönümlendirilir vepause_durationsaniyelik sıfır eklenir. - pause_duration (
float, isteğe bağlı, varsayılan 0.08) —end_on_pausetarafından eklenen sessizliğin süresi, saniye cinsinden. - fade_out_duration (
float, isteğe bağlı, varsayılan 0.02) —end_on_pausetarafı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_pausebu 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__
< source >( 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ı) —audiogirdisinin örneklenmiş olduğu örneklem hızı. Sessiz hataları önlemek için ileri çağrıdasampling_ratedeğ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ğerself.end_on_pause'tür. - padding (
bool,strveya PaddingStrategy, isteğe bağlı, varsayılanTrue) — 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 olarakself.pad_to_multiple_ofkullanılır.
PocketTTSProcessor
sınıf transformers.PocketTTSProcessor
< source >( 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 sonraframes_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__
< source >( 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 (
strveyalist[str]) — apply_chat_template() tarafından oluşturulan istem(ler). - audio (
np.ndarray,torch.Tensorveya 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ınend_on_pausedeğeridir. - return_tensors (
strveya 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': PyTorchtorch.Tensornesnelerini döndürür.'np': NumPynp.ndarraynesnelerini 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
< source >( text: strmax_tokens: int = 50 )
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
< source >( 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)) —generateiş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
< source >( 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
< source >( 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
< source >( 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.
- 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ınvoices/dizininden alınmış) ses istemcisi latentleri, batch içindeki en uzun sese göre sağa doldurulmuş veaudio_prompt_token_idkonumlarına dağıtılmıştır. - audio_prompt_latents_mask (
torch.Tensor, şekli(batch_size, num_prompt_frames), isteğe bağlı) —audio_prompt_latentsiç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_idkonumlarına dağıtılmış, normalize edilmiş ses latentleri. Bunlardan önceki, istemi (prompt) kapatan ve ilk kareyi üretenaudio_bos_token_idkonumu, 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_latentsiç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.
- 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]. - 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 genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_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_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini 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ı) —Trueolarak ayarlanırsa,past_key_valuesanahtar 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_valueskullanı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=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğ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_valuesgirdisi) kullanılabilen, önceden hesaplanmış gizli durumları (self-attention bloklarındaki anahtar ve değerler ve isteğe bağlı olarakconfig.is_encoder_decoder=Trueise cross-attention bloklarındaki anahtar ve değerler) içerir.hidden_states (
tuple(torch.Tensor), isteğe bağlı,output_hidden_states=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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
< source >( 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
< source >( 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.
- 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) veaudio_prompt_token_idkonumlarına dağıtılmış. - audio_prompt_latents_mask (
torch.Tensor, şekli(batch_size, num_prompt_frames), isteğe bağlı) —audio_prompt_latentsiç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_idkonumları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_idkonumuyla biter ve ardından her kare için biraudio_latent_token_idkonumu 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ı) —labelsiç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.
- 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]. - 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 genelliklepast_key_valuesdeğerinin, çözümlemenin önceki bir aşamasında model tarafından döndürülenuse_cache=Trueveyaconfig.use_cache=True.Girdi olarak yalnızca Cache örneği kabul edilir, kv cache kılavuzumuza bakın.
past_key_valuesgeçirilmezse, varsayılan olarak DynamicCache başlatılır.Model, girdi olarak verilen aynı önbellek biçimini çıktı olarak üretecektir.
past_key_valueskullanılıyorsa, kullanıcının tüminput_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_idsyerine gömülü bir temsil doğrudan geçmeyi tercih edebilirsiniz. Bu,input_idsdizinlerini 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ı) —Trueolarak ayarlanırsa,past_key_valuesanahtar 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ı,labelsgeçirildiğinde döndürülür) — Eğitim kaybı: hedef latentlerin LSD akış kaybı,config.eos_loss_weightile 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=Truegeçirildiğinde veyaconfig.use_cache=Trueolduğ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_valuesgirdisi) 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=Truegeçirildiğinde veyaconfig.output_hidden_states=Trueolduğ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=Truegeçirildiğinde veyaconfig.output_attentions=Trueolduğ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
< source >( inputs: typing.Optional[torch.Tensor] = None**kwargs )
Parametreler
- inputs (
torch.LongTensor, şekli(batch_size, sequence_length), isteğe bağlı) — PocketTTSProcessor tarafından hazırlananinput_ids.input_ids=olarak da geçirilebilir. - kwargs (
dict[str, Any], isteğe bağlı) —attention_mask, ses istemi (audio_prompt_latentsveaudio_prompt_latents_maskveya yalnızca metin istemleriyle birlikte gelen sesler için ses önekininpast_key_valuesönbelleği), işleyiciden gelenframes_after_eos, üretim parametreleri (do_sample,temperature,max_new_tokens, …) ve Pocket TTS'e özgünum_flow_steps,eos_thresholdilemin_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
< source >( 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.
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
< source >( 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 biraudio_latent_token_id. Sesin kendisiaudio_latentsiçinde yer alır. - scores (
tuple(torch.Tensor)isteğe bağlı,output_scores=Trueolduğ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=Trueolduğunda döndürülür) —scoresile 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=Trueolduğunda döndürülür) — Her üretilen kare için bir öğe içeren, her katman için bir öğe içerentorch.Tensortü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=Trueolduğunda döndürülür) — Her üretilen kare için bir öğe içeren, her katman için bir öğe içerentorch.Tensordemetlerinin demeti, şekli(batch_size, generated_length, hidden_size). - past_key_values (
Cache, isteğe bağlı,use_cache=Trueolduğ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ı.