Transformers documentation
Gradium Phonon TTS
Este modelo foi contribuído para o Hugging Face Transformers em 2026-10-20.
Gradium Phonon TTS
Visão geral
Gradium Phonon TTS é a família de modelos de texto para fala on-device da Gradium, treinada com a receita do Pocket TTS: um transformer causal lê um prompt de voz e o texto, e emite um único latente de áudio contínuo de 32 dimensões por passo a 12,5 Hz por meio de uma cabeça de fluxo de um passo, e uma cabeça de fim de fala decide quando a fala termina. Os latentes são decodificados para áudio de 24 kHz por um Pocket TTS audio tokenizer mantido pelo processador, o PocketTTSProcessor do Pocket TTS.
Ele difere do Pocket TTS em seu condicionamento de voz: o prompt de voz é composto por latentes de 512 dimensões de um codec de falante separado, e um vetor de falante aprendido é adicionado a cada posição de latente de áudio. O codec de falante não foi liberado, portanto as vozes vêm como latentes pré-computados (o default-voice.safetensors de cada checkpoint e o catálogo de gradium/phonon-voices) e o tokenizador de áudio é apenas um decodificador: as vozes não podem ser clonadas a partir de uma gravação.
| Checkpoint | Parâmetros | Idiomas | Licença |
|---|---|---|---|
| gradium/phonon-31m-en | 31M | Inglês | Apache 2.0 |
| gradium/phonon-40m-en | 40M | Inglês | CC BY-NC 4.0 |
| gradium/phonon-40m-fr | 40M | Francês | CC BY-NC 4.0 |
| gradium/phonon-40m-de | 40M | Alemão | CC BY-NC 4.0 |
| gradium/phonon-40m-es | 40M | Espanhol | CC BY-NC 4.0 |
| gradium/phonon-40m-pt | 40M | Português | CC BY-NC 4.0 |
| gradium/phonon-40m-multilingual | 40M | Inglês, Francês, Alemão, Espanhol, Português | CC BY-NC 4.0 |
Todos eles são carregados da mesma forma: alternar entre checkpoints significa alterar o id do repositório.
Este modelo foi contribuído por Eustache Le Bihan. O código original é gradium-ai/xn-ptts.
Dicas de uso
- Prepare as entradas com apply_chat_template(): uma mensagem
userpor texto, um item vazio{"type": "audio"}onde a voz será inserida, os latentes da voz emprocessor_kwargs={"audio_prompt_latents": [...]}eadd_generation_prompt=True. - O tokenizer não expande números, quantidades, símbolos ou endereços, consulte Normalização de texto.
generateretornaaudio_latentseaudio_latents_mask; decodifique-os com PocketTTSProcessor.decode().- Amostras de geração como o runtime do Gradium faz:
temperature0,3 (a variância do ruído inicial do fluxo), e ele para logo após o logit de fim de fala cruzareos_threshold.do_sample=Falseinicia o fluxo a partir de ruído zero. - O modelo é carregado em bf16, o dtype em que seus pesos são armazenados; passe
dtype=torch.float32em CPU para corresponder ao runtime do Gradium ali. - Divida textos longos com PocketTTSProcessor.split_text(), uma conversa por bloco.
Uso
Voz
Uma voz é um tensor de latentes (num_frames, 512). Cada checkpoint inclui uma (default-voice.safetensors), e o gradium/phonon-voices possui cerca de cem outras, em todos os idiomas, cada uma sob seu ID de voz (voices.jsonl lista seus nomes, idiomas e descrições). Qualquer voz funciona com qualquer checkpoint.
import torch
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
from transformers import AutoProcessor, GradiumPhononTTSForConditionalGeneration
model_id = "gradium/phonon-31m-en"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = GradiumPhononTTSForConditionalGeneration.from_pretrained(model_id, device_map="auto")
def load_voice(voice_id):
"""A voice of gradium/phonon-voices, as latents of shape (num_frames, 512)."""
path = hf_hub_download("gradium/phonon-voices", f"voices/{voice_id}.safetensors")
return load_file(path)["speaker_wavs"][0].T.float()
# Easton (en-us); the checkpoint's own voice: hf_hub_download(model_id, "default-voice.safetensors")
voice = load_voice("LMDIYE0Oa377Qh6Z")
# an empty `audio` item marks the voice
conversation = [
{"role": "user", "content": [{"type": "audio"}, {"type": "text", "text": "Hello from Phonon."}]}
]
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, "phonon.wav")Lotes e texto longo
Lote vários textos, cada um com sua própria voz, com o texto longo dividido em blocos:
text = (
"Phonon is a small text-to-speech model that runs on your device. "
"Long texts are split into sentences, and each chunk is one conversation of the batch."
)
chunks = processor.split_text(text)
texts = chunks + ["And this one is said by another voice."]
voices = [load_voice("LMDIYE0Oa377Qh6Z")] * len(chunks) + [load_voice("NbpkqMVS3CJeq2j8")]
conversations = [
[{"role": "user", "content": [{"type": "audio"}, {"type": "text", "text": text}]}] for text in texts
]
inputs = processor.apply_chat_template(
conversations,
tokenize=True,
return_dict=True,
add_generation_prompt=True,
processor_kwargs={"audio_prompt_latents": voices},
).to(model.device)
outputs = model.generate(**inputs)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio([torch.cat(audio[: len(chunks)]), audio[-1]], ["long.wav", "other.wav"])Normalização de texto
O tokenizer normaliza o que não depende do idioma, assim como o runtime do Gradium faz:
| Texto | Tokenizer |
|---|---|
“Hello” — it’s here… | "Hello" it's here. |
hello (world); see you 🚀 | Hello, world, see you. |
Ele não descreve números, quantidades, símbolos ou endereços, que dependem do idioma:
| Texto | Tokenizer | Runtime do Gradium |
|---|---|---|
It costs $1,234.56. | It costs $1,234.56. | It costs 1 thousand 234 dollars and 56 cents. |
Write to jean@gradium.ai | Write to jean@gradium.ai. | Write to jean at gradium dot A-I. |
It is 21°C | It is 21°C. | It is 21 degrees Celsius. |
Para esses, use a normalização de texto do runtime do Gradium, ptts, ou escreva-os por extenso.
GradiumPhononTTSConfig
classe transformers.GradiumPhononTTSConfig
< 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 = 4001hidden_size: int = 768num_hidden_layers: int = 6num_attention_heads: int = 12num_key_value_heads: int | None = Nonehead_dim: int | None = Noneintermediate_size: int = 3072hidden_act: str = 'gelu'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 = 5audio_latent_token_id: int = 6audio_bos_token_id: int = 4frame_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.999audio_prompt_dim: int = 512num_speakers: int = 1num_speakers_vocab_size: int = 32num_speakers_embedding_dim: int = 16duration_delta: float = 0.0duration_delta_embedding_dim: int = 128duration_delta_scale: float = 1000.0duration_delta_max_period: float = 10000.0 )
Parâmetros
- flow_head_config (
Union[GradiumPhononTTSFlowHeadConfig, dict], opcional) — A configuração do flow head que amostra cada latente a partir do estado oculto do backbone. - vocab_size (
int, opcional, padrão4001) — Tamanho do vocabulário do modelo. Define o número de tokens diferentes que podem ser representados pelosinput_ids. - hidden_size (
int, opcional, padrão768) — 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ão12) — 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ão3072) — Dimensão das representações do MLP. - hidden_act (
str, opcional, padrãogelu) — 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_latents); igual aolatent_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 5) — ID do token placeholder dos quadros de prompt de voz eminput_ids(<|audio_prompt|>). - audio_latent_token_id (
int, opcional, padrão 6) — ID do token placeholder das posições latentes de áudio eminput_ids(<|audio_latent|>). - audio_bos_token_id (
int, opcional, padrão 4) — 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 (<|audio_bos|>). - 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. - audio_prompt_dim (
int, opcional, padrão 512) — Dimensão dos latentes do prompt de voz (audio_prompt_latents), os latentes não quantizados do codec de falante do Gradium (um codificador Mimi, não o do tokenizador de áudio), que o backbone projeta parahidden_size. - num_speakers (
int, opcional, padrão 1) — Valor da condiçãonum_speakers: a linha da sua tabela de consulta adicionada a cada posição latente de áudio. - num_speakers_vocab_size (
int, opcional, padrão 32) — Número de linhas da tabela de consultanum_speakers. - num_speakers_embedding_dim (
int, opcional, padrão 16) — Largura da tabela de consultanum_speakers, projetada parahidden_size. - duration_delta (
float, opcional, padrão 0.0) — Valor da condiçãoduration_delta, incorporado sinusoidalmente e adicionado a cada posição latente de áudio. - duration_delta_embedding_dim (
int, opcional, padrão 128) — Tamanho do embedding senoidal deduration_delta, projetado parahidden_size. - duration_delta_scale (
float, opcional, padrão 1000.0) — Fator aplicado aduration_deltaantes de sua incorporação senoidal. - duration_delta_max_period (
float, opcional, padrão 10000.0) — Período máximo do embedding senoidal deduration_delta.
Esta é a classe de configuração para armazenar a configuração de um GradiumPhononTTSModel. Ela é usada para instanciar um modelo Gradium Phonon 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 gradium/phonon-31m-en
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.
GradiumPhononTTSFlowHeadConfig
classe transformers.GradiumPhononTTSFlowHeadConfig
< 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 = 768frequency_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 768) — 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 GradiumPhononTTSModel. Ela é usada para instanciar um modelo Gradium Phonon 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 gradium/phonon-31m-en
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.
GradiumPhononTTSModel
classe transformers.GradiumPhononTTSModel
< source >( config: GradiumPhononTTSConfig )
Parâmetros
- config (GradiumPhononTTSConfig) — 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 Gradium Phonon TTS: um transformer causal sobre um único fluxo composto pelo prompt de voz (latentes do codec do falante), os tokens de texto e os latentes de áudio, retornando os estados ocultos normalizados.
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.FloatTensor] = Noneaudio_prompt_latents_mask: typing.Optional[torch.Tensor] = Noneaudio_latents: typing.Optional[torch.FloatTensor] = 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.FloatTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.FloatTensor)
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.FloatTensorde forma(batch_size, num_prompt_frames, latent_dim), opcional) — Latentes do prompt de voz do tokenizer de áudio (codificados pelo processor, ou dovoices/de um checkpoint), com preenchimento à 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.FloatTensorde 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 encerra o prompt e a partir da qual o primeiro frame é gerado, sempre recebe o latente 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.FloatTensorde 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 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.FloatTensor)
Um BaseModelOutputWithPast ou uma tupla de
torch.FloatTensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (GradiumPhononTTSConfig) e das entradas.
O método forward do GradiumPhononTTSModel sobrescreve 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.FloatTensorde 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.FloatTensor), opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) com formato(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.FloatTensor), opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(uma para cada camada) com a 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.
GradiumPhononTTSForConditionalGeneration
classe transformers.GradiumPhononTTSForConditionalGeneration
< source >( config: GradiumPhononTTSConfig )
Parâmetros
- config (GradiumPhononTTSConfig) — 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 Gradium Phonon TTS: o backbone, a flow head que amostra um latente de áudio por passo e a end-of-speech head. Ele gera latentes do tokenizer de áudio, que o processor 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.FloatTensor] = Noneaudio_prompt_latents_mask: typing.Optional[torch.Tensor] = Noneaudio_latents: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.FloatTensor] = 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.FloatTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → GradiumPhononTTSOutputWithPast or tuple(torch.FloatTensor)
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.FloatTensorde 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.FloatTensorde forma(batch_size, num_latents, latent_dim), opcional) — Latentes de áudio normalizados, distribuídos nas posições deaudio_latent_token_id. - labels (
torch.FloatTensorde forma(batch_size, num_frames, latent_dim), opcional) — Latentes-alvo do tokenizador de áudio (treinamento), com preenchimento à direita. O prompt de cada linha termina na posiçãoaudio_bos_token_id, seguido por uma posiçãoaudio_latent_token_idpor quadro: o modelo fornece os alvos 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.FloatTensorde 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 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
GradiumPhononTTSOutputWithPast ou tuple(torch.FloatTensor)
Um GradiumPhononTTSOutputWithPast ou uma tupla de
torch.FloatTensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários
elementos, dependendo da configuração (GradiumPhononTTSConfig) e das entradas.
O método forward de GradiumPhononTTSForConditionalGeneration 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.FloatTensorde forma(), opcional, retornado quandolabelsé passado) — Perda de treinamento: a perda de fluxo LSD dos latentes-alvo maisconfig.eos_loss_weightvezes a perda de fim de fala.logits (
torch.FloatTensorde 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.FloatTensor), opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.FloatTensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) com formato(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.FloatTensor), opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.FloatTensor(uma para cada camada) com a 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.FloatTensorde forma(batch_size, sequence_length, hidden_size)) — Estados ocultos normalizados do backbone, que condicionam a flow head.
Exemplo:
>>> from transformers import AutoProcessor, GradiumPhononTTSForConditionalGeneration
>>> model = GradiumPhononTTSForConditionalGeneration.from_pretrained("gradium/phonon-31m-en")
>>> processor = AutoProcessor.from_pretrained("gradium/phonon-31m-en")
>>> 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.