Transformers documentation
Gradium Phonon TTS
Ce modèle a été contribué à Hugging Face Transformers le 2026-10-20.
Gradium Phonon TTS
Aperçu
Gradium Phonon TTS est la famille de modèles de synthèse vocale sur appareil de Gradium, entraînée selon la recette de Pocket TTS : un transformer causal lit un prompt vocal et le texte, puis émet un latent audio continu de 32 dimensions à chaque étape, à 12,5 Hz, via une tête de flux à une étape, et une tête de fin de parole décide quand l’énoncé est terminé. Les latents sont décodés en audio 24 kHz par un Pocket TTS audio tokenizer détenu par le processeur, le PocketTTSProcessor de Pocket TTS.
Il se distingue de Pocket TTS par son conditionnement vocal : le prompt vocal est constitué de latents de dimension 512 issus d'un codec de locuteur distinct, et un vecteur de locuteur appris est ajouté à chaque position latente audio. Le codec de locuteur n'étant pas publié, les voix sont fournies sous forme de latents précalculés (le fichier default-voice.safetensors de chaque point de contrôle, ainsi que le catalogue de gradium/phonon-voices) et le tokenizer audio est un décodeur uniquement : il est impossible de cloner une voix à partir d'un enregistrement.
| Point de contrôle | Paramètres | Langues | Licence |
|---|---|---|---|
| gradium/phonon-31m-en | 31M | Anglais | Apache 2.0 |
| gradium/phonon-40m-en | 40M | Anglais | CC BY-NC 4.0 |
| gradium/phonon-40m-fr | 40M | French | CC BY-NC 4.0 |
| gradium/phonon-40m-de | 40M | Allemand | CC BY-NC 4.0 |
| gradium/phonon-40m-es | 40M | Espagnol | CC BY-NC 4.0 |
| gradium/phonon-40m-pt | 40M | Portugais | CC BY-NC 4.0 |
| gradium/phonon-40m-multilingual | 40M | Anglais, français, allemand, espagnol, portugais | CC BY-NC 4.0 |
Ils se chargent tous de la même manière : changer de point de contrôle revient à changer l’identifiant du dépôt.
Ce modèle a été contribué par Eustache Le Bihan. Le code d'origine est gradium-ai/xn-ptts.
Conseils d'utilisation
- Préparez les entrées avec apply_chat_template() : un message
userpar texte, un élément vide{"type": "audio"}à l’endroit où se trouve la voix, les latents de la voix dansprocessor_kwargs={"audio_prompt_latents": [...]}, etadd_generation_prompt=True. - Le tokenizer n'écrit pas les nombres, les montants, les symboles ou les adresses en toutes lettres, voir Normalisation du texte.
generaterenvoieaudio_latentsetaudio_latents_mask; décodez-les avec PocketTTSProcessor.decode().- Génère des échantillons comme le fait le runtime de Gradium :
temperature0,3 (la variance du bruit initial du flux), et s’arrête peu après que le logit de fin de parole dépasseeos_threshold.do_sample=Falsedémarre le flux à partir d’un bruit nul. - Le modèle est chargé en bf16, le dtype dans lequel ses poids sont stockés ; passez
dtype=torch.float32sur CPU pour correspondre au runtime de Gradium sur cette plateforme. - Découpez le long texte avec PocketTTSProcessor.split_text(), une conversation par fragment.
Utilisation
Voix
Une voix est un tenseur de latents (num_frames, 512). Chaque checkpoint en fournit un (default-voice.safetensors), et gradium/phonon-voices en propose environ une centaine de plus, dans toutes les langues, chacune sous son identifiant de voix (voices.jsonl répertorie leurs noms, langues et descriptions). Toute voix fonctionne avec n’importe quel 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")Lots et texte long
Traiter par lots plusieurs textes, chacun avec sa propre voix, en découpant les longs textes en segments :
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"])Normalisation du texte
Le tokenizer normalise ce qui ne dépend pas de la langue, tout comme le runtime de Gradium :
| Texte | Tokenizer |
|---|---|
“Hello” — it’s here… | "Hello" it's here. |
hello (world); see you 🚀 | Hello, world, see you. |
Il ne prononce pas les nombres, les montants, les symboles ou les adresses, qui dépendent de la langue :
| Texte | Tokenizer | Le runtime de 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. |
Pour ceux-ci, utilisez la normalisation du texte du runtime de Gradium, ptts, ou écrivez-les en toutes lettres.
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 )
Paramètres
- flow_head_config (
Union[GradiumPhononTTSFlowHeadConfig, dict], facultatif) — La configuration de la tête de flux qui échantillonne chaque latent à partir de l'état caché du backbone. - vocab_size (
int, facultatif, par défaut4001) — Taille du vocabulaire du modèle. Définit le nombre de jetons différents qui peuvent être représentés parinput_ids. - hidden_size (
int, facultatif, par défaut768) — Dimension des représentations cachées. - num_hidden_layers (
int, facultatif, par défaut6) — Nombre de couches cachées dans le décodeur Transformer. - num_attention_heads (
int, facultatif, valeur par défaut12) — Nombre de têtes d'attention pour chaque couche d'attention du décodeur Transformer. - num_key_value_heads (
int, facultatif) — Ceci est le nombre de têtes key_value à utiliser pour implémenter la Grouped Query Attention. Sinum_key_value_heads=num_attention_heads, le modèle utilisera la Multi Head Attention (MHA), sinum_key_value_heads=1le modèle utilisera la Multi Query Attention (MQA), sinon la GQA est utilisée. Lors de la conversion d'un checkpoint multi-têtes en checkpoint GQA, chaque tête clé et valeur de groupe doit être construite par moyennage (meanpooling) de toutes les têtes d'origine au sein de ce groupe. Pour plus de détails, consultez ce papier. S'il n'est pas spécifié, la valeur par défaut estnum_attention_heads. - head_dim (
int, facultatif) — La dimension des têtes d'attention. Si None, elle est par défaut égale à hidden_size // num_attention_heads - intermediate_size (
int, facultatif, par défaut3072) — Dimension des représentations du MLP. - hidden_act (
str, facultatif, par défautgelu) — La fonction d'activation non linéaire (fonction ou chaîne de caractères) du décodeur. Par exemple,"gelu","relu","silu", etc. - layer_norm_eps (
float, facultatif, valeur par défaut 1e-05) — Epsilon des normalisations de couche du backbone. - attention_bias (
bool, facultatif, par défautFalse) — Indique s'il faut utiliser un biais dans les couches de projection des requêtes, des clés, des valeurs et de la sortie lors de l'auto-attention. - attention_dropout (
float, facultatif, valeur par défaut0.0) — Le taux de dropout appliqué aux probabilités d'attention. - max_position_embeddings (
int, facultatif, par défaut8192) — La longueur de séquence maximale avec laquelle ce modèle pourrait être utilisé. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], facultatif) — Dictionnaire contenant les paramètres de configuration pour les embeddings RoPE. Le dictionnaire doit contenir une valeur pourrope_thetaet, le cas échéant, les paramètres utilisés pour le mise à l’échelle si vous souhaitez utiliser RoPE avec desmax_position_embeddingsplus longs. - latent_dim (
int, facultatif, valeur par défaut 32) — Dimension des latents audio que le backbone reçoit en entrée (audio_latents) ; égale à lalatent_dimde la tête de flux et du tokenizer audio. - pad_token_id (
int, facultatif, par défaut3) — Identifiant du jeton utilisé pour le bourrage dans le vocabulaire. - bos_token_id (
int, facultatif) — Identifiant du jeton utilisé pour le début de flux dans le vocabulaire. - eos_token_id (
int, facultatif) — Identifiant du jeton utilisé pour la fin de flux dans le vocabulaire. - audio_prompt_token_id (
int, facultatif, valeur par défaut 5) — Identifiant du jeton de remplacement pour les trames de l’invite vocale dansinput_ids(<|audio_prompt|>). - audio_latent_token_id (
int, facultatif, valeur par défaut 6) — Identifiant du jeton de remplacement des positions latentes audio dansinput_ids(<|audio_latent|>). - audio_bos_token_id (
int, facultatif, valeur par défaut 4) — Identifiant du jeton de la première position audio, qui clôt le prompt : il contient le latent BOS appris, à partir duquel la première trame est générée (<|audio_bos|>). - frame_rate (
float, facultatif, valeur par défaut 12.5) — Nombre de latents audio par seconde d'audio :generateen dérive son budget de trames par défaut. - initializer_range (
float, facultatif, par défaut0.02) — L'écart-type de la truncated_normal_initializer utilisé pour initialiser toutes les matrices de poids. - use_cache (
bool, facultatif, valeur par défautTrue) — Indique si le modèle doit retourner les dernières attentions clés/valeurs (non utilisé par tous les modèles). N’est pertinent que siconfig.is_decoder=Trueou si le modèle est un modèle génératif uniquement décodeur. - eos_loss_weight (
float, facultatif, valeur par défaut 0.1) — Poids de la perte de fin de parole dans la perte d'entraînement. - flow_loss_num_samples (
int, facultatif, valeur par défaut : 4) — Nombre de tirages de bruit par image cible dans la perte de flux. - lsd_distill_probability (
float, facultatif, valeur par défaut 0.25) — Probabilité, à chaque étape d'entraînement, de calculer le terme d'auto-distillation de la perte LSD (répondant à une perte attendue constante) ; 1 le calcule à chaque étape. - lsd_diagonal_weight (
float, facultatif, valeur par défaut 0,75) — Poids du terme diagonal (flux instantané) de la perte LSD ; le terme d'auto-distillation pondère le reste. - lsd_time_logit_mean (
float, facultatif, valeur par défaut 0.4) — Moyenne de la distribution logit-normale des temps de flux tirés par la perte LSD. - lsd_time_logit_std (
float, facultatif, valeur par défaut 1.0) — Écart-type de la distribution logit-normale des temps de flux tirés par la perte LSD. - latent_stats_ema_steps (
int, facultatif, valeur par défaut 1000) — Nombre de premières étapes d’entraînement pendant lesquelleslatent_meanetlatent_stdsuivent une moyenne mobile exponentielle des latents cibles ; 0 les maintient figés. - latent_stats_ema_decay (
float, facultatif, valeur par défaut 0.999) — Taux d'amortissement de cette moyenne mobile. - audio_prompt_dim (
int, facultatif, valeur par défaut 512) — Dimension des latents de l’invite vocale (audio_prompt_latents), les latents non quantifiés du codec de locuteur de Gradium (un encodeur Mimi, et non celui du tokeniseur audio), que le backbone projette vershidden_size. - num_speakers (
int, facultatif, par défaut 1) — Valeur de la conditionnum_speakers: la ligne de sa table de recherche ajoutée à chaque position latente audio. - num_speakers_vocab_size (
int, facultatif, valeur par défaut 32) — Nombre de lignes de la table de recherchenum_speakers. - num_speakers_embedding_dim (
int, facultatif, valeur par défaut 16) — Largeur de la table de recherchenum_speakers, projetée surhidden_size. - duration_delta (
float, facultatif, valeur par défaut 0.0) — Valeur de la conditionduration_delta, intégrée de manière sinusoïdale et ajoutée à chaque position latente audio. - duration_delta_embedding_dim (
int, facultatif, valeur par défaut 128) — Taille de l'embedding sinusoïdal deduration_delta, projeté surhidden_size. - duration_delta_scale (
float, facultatif, valeur par défaut 1000.0) — Facteur appliqué àduration_deltaavant son encodage sinusoïdal. - duration_delta_max_period (
float, facultatif, valeur par défaut 10000.0) — Période maximale de l’encodage sinusoïdal deduration_delta.
Ceci est la classe de configuration destinée à stocker la configuration d'un GradiumPhononTTSModel. Elle est utilisée pour instancier un modèle Gradium Phonon Tts en fonction des arguments spécifiés, définissant ainsi l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle du gradium/phonon-31m-en
Les objets de configuration héritent de PreTrainedConfig et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de PreTrainedConfig pour plus d’informations.
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 )
Paramètres
- hidden_size (
int, facultatif, par défaut512) — Dimension des représentations cachées. - num_hidden_layers (
int, facultatif, par défaut6) — Nombre de couches cachées dans le décodeur Transformer. - latent_dim (
int, facultatif, valeur par défaut 32) — Dimension des latents audio continus prédits par la tête (la dimension latente du tokenizer audio). - condition_dim (
int, facultatif, par défaut 768) — Dimension de l'état caché du backbone sur lequel la tête est conditionnée (lehidden_sizedu backbone). - frequency_embedding_size (
int, facultatif, valeur par défaut 256) — Taille de l’encodage sinusoïdal des temps de flux. - hidden_act (
str, facultatif, par défautsilu) — La fonction d'activation non linéaire (fonction ou chaîne de caractères) du décodeur. Par exemple,"gelu","relu","silu", etc. - layer_norm_eps (
float, facultatif, valeur par défaut 1e-06) — Epsilon des normalisations de couche dans les blocs résiduels et la couche finale. - rms_norm_eps (
float, facultatif, valeur par défaut 1e-05) — Epsilon de la normalisation fermant les embeddings temporels. - max_period (
float, facultatif, valeur par défaut 10000.0) — Période maximale de l’encodage temporel sinusoïdal, que le point de contrôle stocke sous la forme defreqs. - flow_type (
str, facultatif, par défaut"lsd") — Objectif avec lequel la tête a été entraînée, qui définit sa façon d’être conditionnée et échantillonnée."lsd"(auto-distillation lagrangienne) : conditionnée sur les temps de début et de fin d’une étape de flux, échantillonnée par étapes d’Euler à partir d’un bruit gaussien."drifting": aucune condition temporelle, la tête mappe le bruit vers le latent en un seul appel. - loss_weighting_hidden_size (
int, facultatif, valeur par défaut 32) — Largeur du MLP qui apprend le pondération de l'incertitude des termes de perte LSD à partir de leurs temps de flux (entraînement uniquement). - loss_weighting_num_layers (
int, facultatif, valeur par défaut 3) — Nombre de couches cachées de ce MLP.
Ceci est la classe de configuration destinée à stocker la configuration d'un GradiumPhononTTSModel. Elle est utilisée pour instancier un modèle Gradium Phonon Tts en fonction des arguments spécifiés, définissant ainsi l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle du gradium/phonon-31m-en
Les objets de configuration héritent de PreTrainedConfig et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de PreTrainedConfig pour plus d’informations.
GradiumPhononTTSModel
classe transformers.GradiumPhononTTSModel
< source >( config: GradiumPhononTTSConfig )
Paramètres
- config (GradiumPhononTTSConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.
Le backbone Gradium Phonon TTS : un transformer causal sur un flux unique composé du prompt vocal (latents du codec de la voix), des jetons de texte et des latents audio, renvoyant les états cachés normalisés.
Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)
Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.
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)
Paramètres
- input_ids (
torch.LongTensorde forme(batch_size, sequence_length), facultatif) — Indices des jetons de la séquence d'entrée dans le vocabulaire. Le bourrage (padding) sera ignoré par défaut.Les indices peuvent être obtenus à l'aide de AutoTokenizer. Consultez PreTrainedTokenizer.encode() et PreTrainedTokenizer.call() pour plus de détails.
- audio_prompt_latents (
torch.Tensorde forme(batch_size, num_prompt_frames, latent_dim), facultatif) — Latents du prompt vocal du tokenizer audio (encodés par le processeur, ou par le dossiervoices/d’un point de contrôle), remplis à droite jusqu’à la longueur de la voix la plus longue du lot, dispersés aux positionsaudio_prompt_token_id. - audio_prompt_latents_mask (
torch.Tensorde forme(batch_size, num_prompt_frames), facultatif) — Masque des trames vocales (1) par opposition au bourrage (0) dansaudio_prompt_latents. - audio_latents (
torch.Tensorde forme(batch_size, num_latents, latent_dim), facultatif) — Latents audio normalisés, dispersés dans les positionsaudio_latent_token_id. La positionaudio_bos_token_idqui les précède, et qui clôt le prompt et à partir de laquelle la première image est générée, reçoit toujours le latent BOS appris. - audio_latents_mask (
torch.Tensorde forme(batch_size, num_latents), facultatif) — Masque des latents de chaque ligne (1) par opposition au bourrage (0) dansaudio_latents, lorsque les lignes contiennent des nombres différents de positions latentes (entraînement). - attention_mask (
torch.Tensorde forme(batch_size, sequence_length), facultatif) — Masque pour éviter d'appliquer l'attention aux indices des jetons de bourrage. Les valeurs du masque sont choisies dans[0, 1]:- 1 pour les jetons qui ne sont pas masqués,
- 0 pour les jetons masqués.
- position_ids (
torch.LongTensorde forme(batch_size, sequence_length), facultatif) — Indices des positions des jetons de chaque séquence d'entrée dans les embeddings de position. Sélectionnés dans l'intervalle[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, facultatif) — États cachés précalculés (clés et valeurs dans les blocs d'auto-attention et d'attention croisée) qui peuvent être utilisés pour accélérer le décodage séquentiel. Cela consiste généralement en lapast_key_valuesretournée par le modèle à une étape antérieure du décodage, lorsqueuse_cache=Trueouconfig.use_cache=True.Seule une instance de Cache est autorisée en entrée, consultez notre guide du cache kv. Si aucun
past_key_valuesn'est transmis, DynamicCache sera initialisé par défaut.Le modèle produira le même format de cache qui est fourni en entrée.
Si
past_key_valuessont utilisés, l’utilisateur doit fournir uniquement lesinput_idsnon traités (ceux pour lesquels les états de clés et de valeurs passées n’ont pas été fournis à ce modèle) de forme(batch_size, unprocessed_length)au lieu de tous lesinput_idsde forme(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forme(batch_size, sequence_length, hidden_size), facultatif) — Facultativement, au lieu de passerinput_ids, vous pouvez choisir de passer directement une représentation intégrée. Cela est utile si vous souhaitez un meilleur contrôle sur la manière de convertir les indicesinput_idsen vecteurs associés que la matrice de recherche d’intégration interne du modèle. - use_cache (
bool, facultatif) — Si défini surTrue, les états clé-valeurpast_key_valuessont renvoyés et peuvent être utilisés pour accélérer le décodage (voirpast_key_values).
Retourne
BaseModelOutputWithPast ou tuple(torch.Tensor)
Un BaseModelOutputWithPast ou un tuple de
torch.Tensor (si return_dict=False est passé ou lorsque config.return_dict=False) comprenant divers
éléments en fonction de la configuration (GradiumPhononTTSConfig) et des entrées.
La méthode forward du GradiumPhononTTSModel redéfinit la méthode spéciale __call__.
Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance
Moduleplutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.
last_hidden_state (
torch.Tensorde forme(batch_size, sequence_length, hidden_size)) — Séquence d'états cachés à la sortie de la dernière couche du modèle.Si
past_key_valuesest utilisé, seule la dernière hidden-state des séquences de forme(batch_size, 1, hidden_size)est renvoyée.past_key_values (
Cache, facultatif, renvoyé lorsqueuse_cache=Trueest passé ou lorsqueconfig.use_cache=True) — Il s’agit d’une instance de Cache. Pour plus de détails, consultez notre guide sur le cache kv.Contient des états cachés précalculés (clés et valeurs dans les blocs d'auto-attention et, le cas échéant, si
config.is_encoder_decoder=True, dans les blocs d'attention croisée) qui peuvent être utilisés (voir l'entréepast_key_values) pour accélérer le décodage séquentiel.hidden_states (
tuple(torch.Tensor), facultatif, renvoyé lorsqueoutput_hidden_states=Trueest passé ou lorsqueconfig.output_hidden_states=True) — Tuple detorch.Tensor(un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme(batch_size, sequence_length, hidden_size).États cachés du modèle à la sortie de chaque couche, ainsi que les sorties d'incorporation initiales facultatives.
attentions (
tuple(torch.Tensor), facultatif, renvoyé lorsqueoutput_attentions=Trueest passé ou lorsqueconfig.output_attentions=True) — Tuple detorch.Tensor(un par couche) de forme(batch_size, num_heads, sequence_length, sequence_length).Poids des attentions après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'auto-attention.
GradiumPhononTTSForConditionalGeneration
classe transformers.GradiumPhononTTSForConditionalGeneration
< source >( config: GradiumPhononTTSConfig )
Paramètres
- config (GradiumPhononTTSConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.
Le modèle de synthèse vocale Gradium Phonon TTS : le tronc commun, la tête de flux qui échantillonne un latent audio à chaque étape et la tête de fin de parole. Il génère des latents du tokeniseur audio, que le processeur décode en audio 24 kHz.
Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)
Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.
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'> ) → GradiumPhononTTSOutputWithPast or tuple(torch.Tensor)
Paramètres
- input_ids (
torch.LongTensorde forme(batch_size, sequence_length), facultatif) — Indices des jetons de la séquence d'entrée dans le vocabulaire. Le bourrage (padding) sera ignoré par défaut.Les indices peuvent être obtenus à l'aide de AutoTokenizer. Consultez PreTrainedTokenizer.encode() et PreTrainedTokenizer.call() pour plus de détails.
- audio_prompt_latents (
torch.Tensorde forme(batch_size, num_prompt_frames, latent_dim), facultatif) — Latents du prompt vocal du tokenizer audio, complétés à droite, dispersés dans les positionsaudio_prompt_token_id. - audio_prompt_latents_mask (
torch.Tensorde forme(batch_size, num_prompt_frames), facultatif) — Masque des trames vocales (1) par opposition au bourrage (0) dansaudio_prompt_latents. - audio_latents (
torch.Tensorde forme(batch_size, num_latents, latent_dim), facultatif) — Latents audio normalisés, dispersés dans les positionsaudio_latent_token_id. - labels (
torch.Tensorde forme(batch_size, num_frames, latent_dim), facultatif) — Latents cibles du tokenizer audio (entraînement), avec remplissage à droite. La fin du prompt de chaque ligne est constituée de la positionaudio_bos_token_idsuivie d’une positionaudio_latent_token_idpar frame : le modèle alimente les cibles normalisées (teacher forcing), applique la perte de flux aux sorties du BOS et de toutes les frames sauf la dernière, qui prédisent les frames, et la perte de fin de parole à toutes, la dernière étant la fin de parole. - labels_mask (
torch.Tensorde forme(batch_size, num_frames), facultatif) — Masque des cibles de chaque ligne (1) par opposition au bourrage (0) danslabels. - attention_mask (
torch.Tensorde forme(batch_size, sequence_length), facultatif) — Masque pour éviter d'appliquer l'attention aux indices des jetons de bourrage. Les valeurs du masque sont choisies dans[0, 1]:- 1 pour les jetons qui ne sont pas masqués,
- 0 pour les jetons masqués.
- position_ids (
torch.LongTensorde forme(batch_size, sequence_length), facultatif) — Indices des positions des jetons de chaque séquence d'entrée dans les embeddings de position. Sélectionnés dans l'intervalle[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, facultatif) — États cachés précalculés (clés et valeurs dans les blocs d'auto-attention et d'attention croisée) qui peuvent être utilisés pour accélérer le décodage séquentiel. Cela consiste généralement en lapast_key_valuesretournée par le modèle à une étape antérieure du décodage, lorsqueuse_cache=Trueouconfig.use_cache=True.Seule une instance de Cache est autorisée en entrée, consultez notre guide du cache kv. Si aucun
past_key_valuesn'est transmis, DynamicCache sera initialisé par défaut.Le modèle produira le même format de cache qui est fourni en entrée.
Si
past_key_valuessont utilisés, l’utilisateur doit fournir uniquement lesinput_idsnon traités (ceux pour lesquels les états de clés et de valeurs passées n’ont pas été fournis à ce modèle) de forme(batch_size, unprocessed_length)au lieu de tous lesinput_idsde forme(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forme(batch_size, sequence_length, hidden_size), facultatif) — Facultativement, au lieu de passerinput_ids, vous pouvez choisir de passer directement une représentation intégrée. Cela est utile si vous souhaitez un meilleur contrôle sur la manière de convertir les indicesinput_idsen vecteurs associés que la matrice de recherche d’intégration interne du modèle. - use_cache (
bool, facultatif) — Si défini surTrue, les états clé-valeurpast_key_valuessont renvoyés et peuvent être utilisés pour accélérer le décodage (voirpast_key_values).
Retourne
GradiumPhononTTSOutputWithPast ou tuple(torch.Tensor)
Un GradiumPhononTTSOutputWithPast ou un tuple de
torch.Tensor (si return_dict=False est passé ou lorsque config.return_dict=False) comprenant divers
éléments en fonction de la configuration (GradiumPhononTTSConfig) et des entrées.
La méthode forward de GradiumPhononTTSForConditionalGeneration surcharge la méthode spéciale __call__.
Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance
Moduleplutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.
loss (
torch.Tensorde forme(), facultatif, renvoyé lorsquelabelsest passé) — Perte d’entraînement : la perte de flux LSD des latents cibles plusconfig.eos_loss_weightfois la perte de fin de parole.logits (
torch.Tensorde forme(batch_size, sequence_length, 1)) — Logits de fin de parole, un par position.past_key_values (
Cache, facultatif, renvoyé lorsqueuse_cache=Trueest passé ou lorsqueconfig.use_cache=True) — Il s’agit d’une instance de Cache. Pour plus de détails, consultez notre guide sur le cache kv.Contient des états cachés précalculés (clés et valeurs dans les blocs d'auto-attention) qui peuvent être utilisés (voir l'entrée
past_key_values) pour accélérer le décodage séquentiel.hidden_states (
tuple(torch.Tensor), facultatif, renvoyé lorsqueoutput_hidden_states=Trueest passé ou lorsqueconfig.output_hidden_states=True) — Tuple detorch.Tensor(un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme(batch_size, sequence_length, hidden_size).États cachés du modèle à la sortie de chaque couche, ainsi que les sorties d'incorporation initiales facultatives.
attentions (
tuple(torch.Tensor), facultatif, renvoyé lorsqueoutput_attentions=Trueest passé ou lorsqueconfig.output_attentions=True) — Tuple detorch.Tensor(un par couche) de forme(batch_size, num_heads, sequence_length, sequence_length).Poids des attentions après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'auto-attention.
last_hidden_state (
torch.Tensorde forme(batch_size, sequence_length, hidden_size)) — États cachés normalisés du backbone, qui conditionnent la tête de flux.
Exemple :
>>> 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 )
Paramètres
- inputs (
torch.LongTensorde forme(batch_size, sequence_length), facultatif) — Lesinput_idspréparés par PocketTTSProcessor. Peut également être transmis sous la formeinput_ids=. - kwargs (
dict[str, Any], facultatif) —attention_mask, le prompt vocal (audio_prompt_latentsetaudio_prompt_latents_mask, ou le cache d'un préfixe vocal sous forme depast_key_values, les voix livrées, avec des prompts du texte uniquement),frames_after_eosdu processeur, les paramètres de génération (do_sample,temperature,max_new_tokens, …), ainsi que les paramètres spécifiques à Pocket TTSnum_flow_steps,eos_thresholdetmin_frames_before_eos, qui par défaut correspondent à la configuration de génération.
Génère de la parole. Cette méthode redéfinit generate() pour définir max_new_tokens par défaut sur le budget de frames du temps d’exécution d’origine, soit ceil((num_text_tokens / 3 + 2) * frame_rate) pour le texte le plus long du lot. Le reste passe par les hooks de génération habituels.