Transformers documentation
Pocket TTS
Este modelo foi contribuído para o Hugging Face Transformers em 2026-10-20.
Pocket TTS
Visão geral
O Pocket TTS é o modelo de texto para fala de 100M de parâmetros da Kyutai, um Continuous Audio Language Model que roda mais rápido que o tempo real em CPU. Um transformer causal emite um latente de áudio contínuo por frame (12,5 Hz) por meio de uma cabeça de fluxo de um passo, e uma cabeça de fim de fala decide quando parar.
O processador contém o tokenizador de áudio do Pocket TTS, um codec baseado no Mimi que codifica prompts de voz e decodifica os latentes gerados em áudio de 24 kHz. As vozes predefinidas são fornecidas como caches de KV (voices/).
Duas cabeças de fluxo são disponibilizadas: auto-destilação lagrangiana (flow_type="lsd", padrão) e em deriva (flow_type="drifting", english_drifting_26-09). O ajuste fino é suportado, consulte Training.
Este modelo foi contribuído por Eustache Le Bihan. O código original é kyutai-labs/pocket-tts.
Dicas de uso
- Prepare os inputs com apply_chat_template() (uma mensagem
userpor texto,add_generation_prompt=True). O normalizador do tokenizer prepara o texto como no original, com as configurações do idioma do checkpoint. generateretornaaudio_latentseaudio_latents_mask; decodifique-os com PocketTTSProcessor.decode().max_new_tokenstem como padrão um orçamento baseado no comprimento do texto, e a geração é interrompida pouco depois que o logit de fim de fala ultrapassaeos_threshold.do_sample=Falsecorresponde ao original em temperatura 0. Com amostragem,temperature(padrão 0,3) é a variância do ruído inicial do fluxo.- Divida textos longos com PocketTTSProcessor.split_text(), uma conversa por bloco.
Uso
Voz
A voz pode ser fornecida de três maneiras.
1. Clonando uma gravação: um item audio na conversa.
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. Latentes pré-computados: um item audio vazio, com os latentes passados para o processador.
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. Contexto em cache: o cache de KV do prompt de voz, passado como past_key_values. As vozes incluídas (voices/) usam esse formato.
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")Lotes e texto longo
Lote vários textos e vozes, com texto longo dividido em blocos:
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"]
)Checkpoint em deriva
Mesmo uso, com as vozes do próprio checkpoint:
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")Treinamento
Coloque o áudio de destino no turno assistant. O processador retorna seus latentes como labels, e o modelo retorna a perda do original (perda de fluxo LSD mais config.eos_loss_weight vezes a perda de fim de fala). O prompt de voz é tipicamente o início da mesma fala.
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()- Forneça a voz como uma gravação ou latentes, não como um cache.
- Para o classifier-free guidance, remova o item
audiooutextda vez douser(o original remove cada um com probabilidade 0,2). - Os latentes pré-computados ficam em
processor_kwargs={"audio_prompt_latents": [...], "labels": [...]}, com itens vazios{"type": "audio"}como marcadores de posição. - Receita original: AdamW,
learning_rate=2e-5(2e-4 para um novo idioma),adam_beta2=0.95,weight_decay=0.1,max_grad_norm=1.0, 1000 passos de aquecimento e depois constante, EMA dos pesos (decay 0.999).
PocketTTSConfig
classe 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 )
Parâmetros
- flow_head_config (
Union[PocketTTSFlowHeadConfig, dict], opcional) — A configuração do flow head que amostra cada latente a partir do estado oculto do backbone. - vocab_size (
int, opcional, padrão4004) — Tamanho do vocabulário do modelo. Define o número de tokens diferentes que podem ser representados pelosinput_ids. - hidden_size (
int, opcional, padrão1024) — Dimensão das representações ocultas. - num_hidden_layers (
int, opcional, padrão6) — Número de camadas ocultas no decodificador do Transformer. - num_attention_heads (
int, opcional, padrão16) — Número de cabeças de atenção para cada camada de atenção no decodificador do Transformer. - num_key_value_heads (
int, opcional) — Este é o número de cabeças de key_value que devem ser usadas para implementar Grouped Query Attention. Senum_key_value_heads=num_attention_heads, o modelo usará Multi Head Attention (MHA); senum_key_value_heads=1, o modelo usará Multi Query Attention (MQA); caso contrário, será usado GQA. Ao converter um checkpoint multi-head para um checkpoint GQA, cada grupo de cabeças de chave e valor deve ser construído por meio do meanpooling de todas as cabeças originais dentro desse grupo. Para mais detalhes, consulte este artigo. Se não for especificado, o valor padrão seránum_attention_heads. - head_dim (
int, opcional) — A dimensão da cabeça de atenção. Se for None, o valor padrão será hidden_size // num_attention_heads - intermediate_size (
int, opcional, padrão4096) — Dimensão das representações do MLP. - hidden_act (
str, opcional, padrãogelu_pytorch_tanh) — A função de ativação não linear (função ou string) no decodificador. Por exemplo,"gelu","relu","silu", etc. - layer_norm_eps (
float, opcional, padrão 1e-05) — Epsilon das normalizações de camada do backbone. - attention_bias (
bool, opcional, padrãoFalse) — Indica se deve ser usado um viés nas camadas de projeção de query, key, value e output durante a autoatenção. - attention_dropout (
float, opcional, padrão0.0) — A taxa de dropout para as probabilidades de atenção. - max_position_embeddings (
int, opcional, padrão8192) — O comprimento máximo de sequência com o qual este modelo pode ser utilizado. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], opcional) — Dicionário contendo os parâmetros de configuração para os embeddings RoPE. O dicionário deve conter um valor pararope_thetae, opcionalmente, parâmetros usados para escalonamento, caso você queira usar RoPE commax_position_embeddingsmaiores. - latent_dim (
int, opcional, padrão 32) — Dimensão dos latentes de áudio que o backbone recebe como entrada (audio_prompt_latents,audio_latents); igual àlatent_dimdo flow head e do tokenizer de áudio. - pad_token_id (
int, opcional, padrão3) — ID do token usado para preenchimento (padding) no vocabulário. - bos_token_id (
int, opcional) — ID do token usado para o início do fluxo no vocabulário. - eos_token_id (
int, opcional) — ID do token usado para o fim do fluxo no vocabulário. - audio_prompt_token_id (
int, opcional, padrão 4000) — ID do token placeholder dos quadros de prompt de voz eminput_ids. - audio_latent_token_id (
int, opcional, padrão 4001) — ID do token placeholder das posições latentes de áudio eminput_ids. - audio_prompt_bos_token_id (
int, opcional, padrão 4002) — ID do token colocado antes do prompt de voz; seu embedding é o vetor aprendido que o original adiciona ao início da voz. - audio_bos_token_id (
int, opcional, padrão 4003) — ID do token da primeira posição de áudio, que fecha o prompt: ele contém o latente BOS aprendido, a partir do qual o primeiro frame é gerado. - frame_rate (
float, opcional, padrão 12.5) — Número de latentes de áudio por segundo de áudio:generatederiva seu orçamento de quadros padrão a partir dele. - initializer_range (
float, opcional, padrão0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos. - use_cache (
bool, opcional, padrãoTrue) — Se o modelo deve ou não retornar as últimas chaves/valores de atenção (não usado por todos os modelos). Relevante apenas seconfig.is_decoder=Trueou quando o modelo for um modelo generativo somente decodificador. - eos_loss_weight (
float, opcional, padrão 0.1) — Peso da perda de fim de fala na perda de treinamento. - flow_loss_num_samples (
int, opcional, padrão 4) — Número de amostras de ruído por quadro alvo na perda de fluxo. - lsd_distill_probability (
float, opcional, padrão 0.25) — Probabilidade, por etapa de treinamento, de calcular o termo de auto-destilação da perda LSD (reponderado para manter a perda esperada); 1 o calcula em todas as etapas. - lsd_diagonal_weight (
float, opcional, padrão 0.75) — Peso do termo diagonal (fluxo instantâneo) da perda LSD; o termo de auto-distilação pondera o restante. - lsd_time_logit_mean (
float, opcional, padrão 0.4) — Média da distribuição logit-normal dos tempos de fluxo extraídos pela perda LSD. - lsd_time_logit_std (
float, opcional, padrão 1.0) — Desvio padrão da distribuição logit-normal dos tempos de fluxo extraídos pela perda LSD. - latent_stats_ema_steps (
int, opcional, padrão 1000) — Número de primeiros passos de treinamento durante os quaislatent_meanelatent_stdseguem uma média móvel exponencial dos latentes alvo; 0 os mantém congelados. - latent_stats_ema_decay (
float, opcional, padrão 0.999) — Decaimento dessa média móvel.
Esta é a classe de configuração para armazenar a configuração de um PocketTTSModel. Ela é usada para instanciar um modelo Pocket Tts de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do eustlb/pocket-tts
Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.
PocketTTSFlowHeadConfig
classe 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 )
Parâmetros
- hidden_size (
int, opcional, padrão512) — Dimensão das representações ocultas. - num_hidden_layers (
int, opcional, padrão6) — Número de camadas ocultas no decodificador do Transformer. - latent_dim (
int, opcional, padrão 32) — Dimensão dos latentes contínuos de áudio que a head prevê (a dimensão latente do tokenizer de áudio). - condition_dim (
int, opcional, padrão 1024) — Dimensão do estado oculto do backbone em que a cabeça é condicionada (ohidden_sizedo backbone). - frequency_embedding_size (
int, opcional, padrão 256) — Tamanho do embedding senoidal dos tempos de fluxo. - hidden_act (
str, opcional, padrãosilu) — A função de ativação não linear (função ou string) no decodificador. Por exemplo,"gelu","relu","silu", etc. - layer_norm_eps (
float, opcional, padrão 1e-06) — Epsilon das normalizações de camada dentro dos blocos residuais e da camada final. - rms_norm_eps (
float, opcional, padrão 1e-05) — Epsilon da normalização que fecha os embeddings de tempo. - max_period (
float, opcional, padrão 10000.0) — Período máximo do embedding temporal sinusoidal, que o checkpoint armazena comofreqs. - flow_type (
str, opcional, padrão"lsd") — Objetivo com o qual a head foi treinada, que define como ela é condicionada e amostrada."lsd"(auto-distilação lagrangiana): condicionada nos tempos inicial e final de uma etapa de fluxo, amostrada por etapas de Euler a partir de ruído gaussiano."drifting": sem condicionamento temporal, a head mapeia o ruído para o latente em uma única chamada. - loss_weighting_hidden_size (
int, opcional, padrão 32) — Largura do MLP que aprende o ponderamento de incerteza dos termos de perda LSD a partir de seus tempos de fluxo (apenas para treinamento). - loss_weighting_num_layers (
int, opcional, padrão 3) — Número de camadas ocultas desse MLP.
Esta é a classe de configuração para armazenar a configuração de um PocketTTSModel. Ela é usada para instanciar um modelo Pocket Tts de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do eustlb/pocket-tts
Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.
PocketTTSFeatureExtractor
classe 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 )
Parâmetros
- feature_size (
int, opcional, padrão 1) — O número de canais. - sampling_rate (
int, opcional, padrão 24000) — A taxa de amostragem na qual a forma de onda de áudio deve ser digitalizada, expressa em hertz (Hz). - padding_value (
float, opcional, padrão 0.0) — O valor utilizado para preenchimento. - frame_size (
int, opcional, padrão 1920) — Número de amostras de áudio por quadro latente do tokenizador de áudio (seuframe_size). - pad_to_multiple_of (
int, opcional, padrão 1920) — Preenche o áudio até um múltiplo deste valor; um múltiplo deframe_sizemantém todos os quadros latentes inteiros. - end_on_pause (
bool, opcional, padrãoTrue) — Se deve encerrar cada forma de onda exatamente empause_durationsegundos de silêncio: o silêncio final (quadros deanalysis_frame_durationsegundos abaixo desilence_floor_dbem relação ao mais alto) é cortado, os últimosfade_out_durationsegundos do que resta são atenuados epause_durationsegundos de zeros são adicionados. - pause_duration (
float, opcional, padrão 0.08) — Duração do silêncio adicionado porend_on_pause, em segundos. - fade_out_duration (
float, opcional, padrão 0.02) — Duração do fade-out aplicado porend_on_pauseantes da pausa, em segundos. - silence_floor_db (
float, opcional, padrão 35.0) — Nível abaixo do quadro de análise mais alto, em dB, abaixo do qualend_on_pausetrata os quadros finais como silêncio. - analysis_frame_duration (
float, opcional, padrão 0.02) — Duração dos quadros queend_on_pausemede, em segundos.
Constrói um extrator de recursos do Pocket TTS, que prepara as formas de onda de prompts de voz para o codificador do tokenizador de áudio.
Cada forma de onda termina opcionalmente em uma breve pausa (o end_on_pause original: os prompts de treinamento terminam dentro da pausa entre duas palavras, um prompt que para na fala faz o modelo continuar e um que termina em um silêncio longo atrasa o início), em seguida o lote é preenchido à direita até um múltiplo do tamanho de quadro do tokenizer.
__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 )
Parâmetros
- audio (
np.ndarray,torch.Tensor,list[np.ndarray],list[torch.Tensor]) — A forma de onda mono ou o lote de formas de onda mono dos prompts de voz. - sampling_rate (
int, opcional) — A taxa de amostragem na qual a entrada deaudiofoi amostrada. É fortemente recomendável passarsampling_ratena chamada de forward para evitar erros silenciosos. - end_on_pause (
bool, opcional) — Se deve encerrar cada forma de onda com uma breve pausa, consulte a docstring da classe. O valor padrão éself.end_on_pause. - padding (
bool,strou PaddingStrategy, opcional, padrãoTrue) — Estratégia de preenchimento do lote, veja pad(). - pad_to_multiple_of (
int, opcional) — Preenche o lote até um múltiplo deste valor. O padrão éself.pad_to_multiple_of.
PocketTTSProcessor
classe 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 )
Parâmetros
- feature_extractor (
PocketTTSFeatureExtractor) — O extrator de recursos é uma entrada obrigatória. - tokenizer (
TokenizersBackend) — O tokenizer é uma entrada obrigatória. - audio_tokenizer (
PocketTTSAudioTokenizerModel, opcional) — O codec: ele codifica o áudio em latentes e decodifica os latentes gerados em áudio. - chat_template (
str) — Um modelo Jinja para converter listas de mensagens em um chat em uma string tokenizável. - short_text_max_words (
int, opcional, padrão 4) — Textos com no máximo esse número de palavras recebemframes_after_eos_short_textframes após o frame de fim de fala. - frames_after_eos_short_text (
int, opcional, padrão 4) — Número de quadros gerados após o quadro de fim de fala para textos curtos. - frames_after_eos (
int, opcional, padrão 2) — Número de quadros gerados após o quadro de fim de fala para textos mais longos. - fade_in_duration (
float, opcional, padrão 0.005) — Duração, em segundos, do fade-in linear aplicado ao início de cada forma de onda decodificada: um novo estado do decodificador começa com um pequeno degrau, ouvido como um clique.
Constrói um PocketTTSProcessor que encapsula um extrator de recursos e um tokenizador em um único processador.
PocketTTSProcessor oferece todas as funcionalidades de PocketTTSFeatureExtractor e TokenizersBackend. Consulte ~PocketTTSFeatureExtractor e ~TokenizersBackend para mais informações.
__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'> )
Parâmetros
- text (
stroulist[str]) — O(s) prompt(s) renderizado(s) por apply_chat_template(). - audio (
np.ndarray,torch.Tensorou uma lista deles, opcional) — As formas de onda das conversas, mono a 24 kHz, na ordem da conversa: cada voz e, no treinamento, cada alvo. - audio_prompt_latents (
list[torch.Tensor], opcional) — Vozes pré-computadas, um tensor(num_frames, latent_dim)por marcador de voz, em vez de formas de onda. - labels (
list[torch.Tensor], opcional) — Alvos precomputados (treinamento), um tensor(num_frames, latent_dim)por placeholder de alvo, em vez de formas de onda. - end_on_pause (
bool, kwargs, opcional) — Se deve encerrar cada forma de onda do prompt de voz com uma breve pausa, como o original faz antes de clonar uma voz. Padrão:end_on_pausedo extrator de recursos. - return_tensors (
strou TensorType, opcional) — Se definido, retornará tensors de um framework específico. Os valores aceitos são:'pt': Retorna objetostorch.Tensordo PyTorch.'np': Retorna objetosnp.ndarraydo NumPy.
- **kwargs (ProcessingKwargs, opcional) — Opções de processamento adicionais para cada modalidade (texto, imagens, vídeos, áudio). Os parâmetros específicos do modelo estão listados acima; consulte a classe TypedDict para a lista completa de argumentos suportados.
split_text
< source >( text: strmax_tokens: int = 50 )
Divide text em blocos alinhados por sentenças, com no máximo max_tokens tokens, como no split_into_best_sentences original: o texto preparado é cortado após o fim das sentenças (não em pontos decimais), sentenças
mais longas que max_tokens são cortadas após o fim das orações, e os pedaços são agrupados de forma gulosa. Cada bloco deve corresponder a uma
conversa de um lote.
decode
< source >( audio_latents: torch.Tensoraudio_latents_mask: torch.Tensor | None = None )
Parâmetros
- audio_latents (
torch.Tensorde forma(batch_size, num_frames, latent_dim)ou(num_frames, latent_dim)) — Os latentes quegenerateretorna (PocketTTSGenerateOutput.audio_latents), decodificados como um único lote, ou os latentes de uma amostra. - audio_latents_mask (
torch.Tensorde forma(batch_size, num_frames), opcional) — Máscara dos frames de cada amostra (PocketTTSGenerateOutput.audio_latents_mask). Sem ela, cada linha é decodificada no comprimento total.
Decodifica os latentes gerados em formas de onda com o tokenizador de áudio e aplica um fade-in nos primeiros fade_in_duration segundos de cada uma, assim como no original.
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 )
Grava a(s) forma(s) de onda gerada(s) em arquivo(s) WAV.
audio (torch.Tensor, np.ndarray ou uma lista deles):
As formas de onda, conforme retornadas por decode().
saving_path (str, Path ou uma lista deles):
Um caminho para cada forma de onda.
sampling_rate (int, opcional):
Taxa de amostragem das formas de onda, por padrão a do extrator de recursos (do tokenizador de áudio).
PocketTTSModel
classe transformers.PocketTTSModel
< source >( config: PocketTTSConfig )
Parâmetros
- config (PocketTTSConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
O backbone do Pocket TTS: um transformer causal sobre um único fluxo composto pelo prompt de voz, os tokens de texto e os latentes de áudio, retornando os estados ocultos normalizados. O prompt de voz e os latentes de áudio são latentes do tokenizador de áudio, que o processador mantém.
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
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)
Parâmetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices dos tokens da sequência de entrada no vocabulário. O padding será ignorado por padrão.Os índices podem ser obtidos usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.
- audio_prompt_latents (
torch.Tensorde forma(batch_size, num_prompt_frames, latent_dim), opcional) — Latentes do prompt de voz do tokenizador de áudio (codificados pelo processador, ou dovoices/de um checkpoint), preenchidos à direita até a voz mais longa do lote, distribuídos nas posições deaudio_prompt_token_id. - audio_prompt_latents_mask (
torch.Tensorde forma(batch_size, num_prompt_frames), opcional) — Máscara dos quadros de voz (1) em oposição ao preenchimento (0) emaudio_prompt_latents. - audio_latents (
torch.Tensorde forma(batch_size, num_latents, latent_dim), opcional) — Latentes de áudio normalizados, distribuídos nas posições deaudio_latent_token_id. A posição deaudio_bos_token_idantes deles, que fecha o prompt e a partir da qual o primeiro frame é gerado, sempre recebe o latente de BOS aprendido. - audio_latents_mask (
torch.Tensorde forma(batch_size, num_latents), opcional) — Máscara dos latentes de cada linha (1) em oposição ao preenchimento (0) emaudio_latents, quando as linhas contêm diferentes números de posições latentes (treinamento). - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar a execução de atenção nos índices de tokens de preenchimento. Valores de máscara selecionados em[0, 1]:- 1 para tokens que não estão mascarados,
- 0 para tokens que estão mascarados.
- position_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices das posições dos tokens de cada sequência de entrada nos embeddings de posição. Selecionados no intervalo[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e nos blocos de atenção cruzada) que podem ser usados para acelerar a decodificação sequencial. Isso geralmente consiste nopast_key_valuesretornado pelo modelo em uma etapa anterior da decodificação, quandouse_cache=Trueouconfig.use_cache=True.Apenas uma instância de Cache é permitida como entrada, consulte nosso guia de cache de kv. Se nenhum
past_key_valuesfor passado, DynamicCache será inicializado por padrão.O modelo sairá no mesmo formato de cache que é fornecido como entrada.
Se
past_key_valuesforem usados, espera-se que o usuário insira apenas osinput_idsnão processados (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo) com a forma(batch_size, unprocessed_length), em vez de todos osinput_idscom a forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passarinput_ids, você pode escolher passar diretamente uma representação incorporada. Isso é útil se você quiser ter mais controle sobre como converter os índices deinput_idsnos vetores associados do que a matriz de busca de incorporação interna do modelo. - use_cache (
bool, opcional) — Se definido comoTrue, os estados de chave-valorpast_key_valuessão retornados e podem ser usados para acelerar a decodificação (vejapast_key_values).
Retorna
BaseModelOutputWithPast ou tuple(torch.Tensor)
Um BaseModelOutputWithPast ou uma tupla de
torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False), contendo vários
elementos dependendo da configuração (PocketTTSConfig) e das entradas.
O método forward do PocketTTSModel substitui o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size)) — Sequência de estados ocultos na saída da última camada do modelo.Se
past_key_valuesfor usado, apenas o último hidden-state das sequências, com forma(batch_size, 1, hidden_size), é retornado.past_key_values (
Cache, opcional, retornado quandouse_cache=Trueé passado ou quandoconfig.use_cache=True) — É uma instância de Cache. Para mais detalhes, consulte nosso guia de cache kv.Contém estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e, opcionalmente, se
config.is_encoder_decoder=True, nos blocos de atenção cruzada) que podem ser usados (veja a entradapast_key_values) para acelerar a decodificação sequencial.hidden_states (
tuple(torch.Tensor), opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.
attentions (
tuple(torch.Tensor), opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
PocketTTSForConditionalGeneration
classe transformers.PocketTTSForConditionalGeneration
< source >( config: PocketTTSConfig )
Parâmetros
- config (PocketTTSConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.
O modelo de texto para fala Pocket TTS: o backbone, o flow head que amostra um latente de áudio por passo e o end-of-speech head. Ele gera latentes do tokenizer de áudio, que o processador decodifica em áudio de 24 kHz.
Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)
Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.
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)
Parâmetros
- input_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices dos tokens da sequência de entrada no vocabulário. O padding será ignorado por padrão.Os índices podem ser obtidos usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.
- audio_prompt_latents (
torch.Tensorde forma(batch_size, num_prompt_frames, latent_dim), opcional) — Latentes do prompt de voz do tokenizer de áudio, com preenchimento à direita, distribuídos nas posições deaudio_prompt_token_id. - audio_prompt_latents_mask (
torch.Tensorde forma(batch_size, num_prompt_frames), opcional) — Máscara dos quadros de voz (1) em oposição ao preenchimento (0) emaudio_prompt_latents. - audio_latents (
torch.Tensorde forma(batch_size, num_latents, latent_dim), opcional) — Latentes de áudio normalizados, distribuídos nas posições deaudio_latent_token_id. - labels (
torch.Tensorde forma(batch_size, num_frames, latent_dim), opcional) — Latentes de destino do tokenizer de áudio (treinamento), com preenchimento à direita. O prompt de cada linha termina na posição doaudio_bos_token_idseguido por uma posição deaudio_latent_token_idpor quadro: o modelo fornece os destinos normalizados (teacher forcing), aplica a perda de fluxo às saídas do BOS e de todos os quadros, exceto o último, que preveem os quadros, e a perda de fim de fala a todos eles, sendo o último o fim da fala. - labels_mask (
torch.Tensorde forma(batch_size, num_frames), opcional) — Máscara dos frames-alvo de cada linha (1) em oposição ao padding (0) emlabels. - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar a execução de atenção nos índices de tokens de preenchimento. Valores de máscara selecionados em[0, 1]:- 1 para tokens que não estão mascarados,
- 0 para tokens que estão mascarados.
- position_ids (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Índices das posições dos tokens de cada sequência de entrada nos embeddings de posição. Selecionados no intervalo[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opcional) — Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e nos blocos de atenção cruzada) que podem ser usados para acelerar a decodificação sequencial. Isso geralmente consiste nopast_key_valuesretornado pelo modelo em uma etapa anterior da decodificação, quandouse_cache=Trueouconfig.use_cache=True.Apenas uma instância de Cache é permitida como entrada, consulte nosso guia de cache de kv. Se nenhum
past_key_valuesfor passado, DynamicCache será inicializado por padrão.O modelo sairá no mesmo formato de cache que é fornecido como entrada.
Se
past_key_valuesforem usados, espera-se que o usuário insira apenas osinput_idsnão processados (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo) com a forma(batch_size, unprocessed_length), em vez de todos osinput_idscom a forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passarinput_ids, você pode escolher passar diretamente uma representação incorporada. Isso é útil se você quiser ter mais controle sobre como converter os índices deinput_idsnos vetores associados do que a matriz de busca de incorporação interna do modelo. - use_cache (
bool, opcional) — Se definido comoTrue, os estados de chave-valorpast_key_valuessão retornados e podem ser usados para acelerar a decodificação (vejapast_key_values).
Retorna
PocketTTSOutputWithPast ou tuple(torch.Tensor)
Um PocketTTSOutputWithPast ou uma tupla de
torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False), contendo vários
elementos dependendo da configuração (PocketTTSConfig) e das entradas.
O método forward de PocketTTSForConditionalGeneration substitui o método especial __call__.
Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de
Moduleem seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.
loss (
torch.Tensorde forma(), opcional, retornado quandolabelsé passado) — Perda de treinamento: a perda de fluxo LSD dos latentes de destino maisconfig.eos_loss_weightvezes a perda de fim de fala.logits (
torch.Tensorde forma(batch_size, sequence_length, 1)) — Logits de fim de fala, um por posição.past_key_values (
Cache, opcional, retornado quandouse_cache=Trueé passado ou quandoconfig.use_cache=True) — É uma instância de Cache. Para mais detalhes, consulte nosso guia de cache kv.Contém estados ocultos pré-computados (chaves e valores nos blocos de autoatenção) que podem ser usados (veja a entrada
past_key_values) para acelerar a decodificação sequencial.hidden_states (
tuple(torch.Tensor), opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.
attentions (
tuple(torch.Tensor), opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size)) — Estados ocultos normalizados do backbone, que condicionam a cabeça de fluxo.
Exemplo:
>>> 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 )
Parâmetros
- inputs (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Osinput_idspreparados pelo PocketTTSProcessor. Também pode ser passado comoinput_ids=. - kwargs (
dict[str, Any], opcional) —attention_mask, o prompt de voz (audio_prompt_latentseaudio_prompt_latents_mask, ou o cache de um prefixo de voz comopast_key_values, as vozes incluídas, com prompts apenas de texto),frames_after_eosdo processador, os parâmetros de geração (do_sample,temperature,max_new_tokens, …) e os específicos do Pocket TTSnum_flow_steps,eos_thresholdemin_frames_before_eos, que por padrão seguem a configuração de geração.
Gera fala. Este método substitui generate() para definir max_new_tokens como o orçamento de quadros do tempo de execução original, ceil((num_text_tokens / 3 + 2) * frame_rate) para o texto mais longo do lote. Todo o restante passa pelos ganchos de geração regulares.
sample_latent
< source >( condition: Tensornoise: Tensornum_flow_steps: int ) → torch.Tensor of shape (batch_size, latent_dim)
Parâmetros
- condition (
torch.Tensorde forma(batch_size, hidden_size)) — Estado oculto do backbone da posição sendo gerada. - noise (
torch.Tensorde forma(batch_size, latent_dim)) — ruído gaussiano escalado porsqrt(temperature), ou zeros. - num_flow_steps (
int) — Número de etapas de Euler do amostrador LSD (ignorado pela cabeça de derivação, que faz uma única chamada).
Retorna
torch.Tensor de forma (batch_size, latent_dim)
o latente amostrado, no espaço normalizado.
Amostra o próximo latente de noise com a flow head.
Mapeia os latentes do espaço normalizado da cabeça de fluxo para o do tokenizador de áudio.
PocketTTSGenerateOutput
classe 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 )
Parâmetros
- sequences (
torch.LongTensorde forma(batch_size, sequence_length)) — Os ids dos tokens do prompt seguidos por umaudio_latent_token_idpor quadro gerado. O próprio áudio está emaudio_latents. - scores (
tuple(torch.Tensor)opcional, retornado quandooutput_scores=True) — O logit de fim de fala de cada quadro gerado, um tensor de forma(batch_size,)por quadro. - logits (
tuple(torch.Tensor)opcional, retornado quandooutput_logits=True) — Igual ascores: o Pocket TTS não possui vocabulário, portanto não há nada a processar entre os dois. - attentions (
tuple(tuple(torch.Tensor)), opcional, retornado quandooutput_attentions=True) — Tupla (um elemento para cada quadro gerado) de tuplas (um elemento para cada camada) detorch.Tensorcom forma(batch_size, num_heads, generated_length, sequence_length). - hidden_states (
tuple(tuple(torch.Tensor)), opcional, retornado quandooutput_hidden_states=True) — Tupla (um elemento para cada quadro gerado) de tuplas (um elemento para cada camada) detorch.Tensorcom forma(batch_size, generated_length, hidden_size). - past_key_values (
Cache, opcional, retornado quandouse_cache=True) — O cache de chave/valor do backbone no final da geração. - audio_latents (
torch.Tensorde forma(batch_size, num_frames, latent_dim)) — Os latentes gerados, no espaço latente do tokenizer de áudio, com preenchimento à direita com zeros além dos próprios frames de cada amostra. PocketTTSProcessor.decode() os converte em formas de onda. - audio_latents_mask (
torch.LongTensorde forma(batch_size, num_frames)) — Máscara dos frames de cada amostra (1), incluindo o frame de fim de fala e os frames subsequentes, em oposição ao preenchimento (0).
Saídas de PocketTTSForConditionalGeneration.generate.