Transformers documentation

Gradium Phonon TTS

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

and get access to the augmented documentation experience

to get started

Эта модель была добавлена в Hugging Face Transformers 2026-10-20.

Gradium Phonon TTS

Обзор

Gradium Phonon TTS — это семейство моделей преобразования текста в речь для работы на устройстве от Gradium, обученных по рецепту Pocket TTS: каузальный трансформер считывает голосовой промпт и текст, а затем на каждом шаге через одношаговую flow-голову генерирует один непрерывный 32-мерный аудиолатент с частотой 12.5 Гц, при этом голова окончания речи определяет момент завершения высказывания. Латенты декодируются в аудио с частотой 24 кГц с помощью Pocket TTS audio tokenizer, который хранится в процессоре, а именно в PocketTTSProcessor из Pocket TTS.

Он отличается от Pocket TTS способом настройки голоса: голосовой промпт состоит из 512-мерных латентов отдельного спикер-кодека, а к каждой позиции аудио-латента добавляется обученный вектор спикера. Спикер-кодек не опубликован, поэтому голоса предоставляются в виде заранее вычисленных латентов (файл default-voice.safetensors в каждом чекпоинте, а также каталог gradium/phonon-voices), а аудио-токенизатор является только декодером: клонирование голоса с записи невозможно.

ЧекпоинтПараметрыЯзыкиЛицензия
gradium/phonon-31m-en31MEnglishApache 2.0
gradium/phonon-40m-en40MEnglishCC BY-NC 4.0
gradium/phonon-40m-fr40MФранцузскийCC BY-NC 4.0
gradium/phonon-40m-de40MНемецкийCC BY-NC 4.0
gradium/phonon-40m-es40MИспанскийCC BY-NC 4.0
gradium/phonon-40m-pt40MПортугальскийCC BY-NC 4.0
gradium/phonon-40m-multilingual40MАнглийский, французский, немецкий, испанский, португальскийCC BY-NC 4.0

Все они загружаются одинаково: для переключения контрольных точек достаточно изменить идентификатор репозитория.

Эта модель была предоставлена Eustache Le Bihan. Исходный код — gradium-ai/xn-ptts.

Советы по использованию

  • Подготовьте входные данные с помощью apply_chat_template(): одно сообщение user на каждый текст, пустой элемент {"type": "audio"} для размещения голоса, латенты голоса в processor_kwargs={"audio_prompt_latents": [...]} и add_generation_prompt=True.
  • Токенизатор не расписывает числа, суммы, символы или адреса, см. Нормализация текста.
  • generate возвращает audio_latents и audio_latents_mask; декодируйте их с помощью PocketTTSProcessor.decode().
  • Генерация образцов выполняется так же, как в рантайме Gradium: temperature 0.3 (дисперсия начального шума потока), и процесс останавливается вскоре после того, как логит конца речи превысит eos_threshold. При do_sample=False поток запускается с нулевым шумом.
  • Модель загружается в bf16, типе данных, в котором хранятся её веса; на CPU передайте dtype=torch.float32, чтобы соответствовать времени выполнения Gradium.
  • Разбейте длинный текст с помощью PocketTTSProcessor.split_text(), размещая один диалог в каждом фрагменте.

Использование

Голос

Голос — это тензор латентов (num_frames, 512). Каждый чекпоинт поставляется с одним голосом (default-voice.safetensors), а в gradium/phonon-voices доступно ещё около ста голосов на всех языках, каждый из которых имеет свой идентификатор голоса (voices.jsonl содержит их имена, языки и описания). Любой голос совместим с любым чекпоинтом.

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")

Пакеты и длинный текст

Пакетная обработка нескольких текстов, каждый со своим голосом, с разбиением длинного текста на фрагменты:

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"])

Нормализация текста

Токенизатор нормализует то, что не зависит от языка, как это делает рантайм Gradium:

ТекстТокенизатор
“Hello” — it’s here…"Hello" it's here.
hello (world); see you 🚀Hello, world, see you.

Она не произносит вслух числа, количества, символы или адреса, которые зависят от языка:

ТекстТокенизаторСреда выполнения Gradium
It costs $1,234.56.It costs $1,234.56.It costs 1 thousand 234 dollars and 56 cents.
Write to jean@gradium.aiWrite to jean@gradium.ai.Write to jean at gradium dot A-I.
It is 21°CIt is 21°C.It is 21 degrees Celsius.

Для таких случаев используйте нормализацию текста рантайма Gradium, ptts, или прописывайте их вручную.

GradiumPhononTTSConfig

класс transformers.GradiumPhononTTSConfig

< >

( 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 )

Параметры

  • flow_head_config (Union[GradiumPhononTTSFlowHeadConfig, dict], необязательный) — Конфигурация flow head, которая выполняет сэмплирование каждого латента из скрытого состояния backbone.
  • vocab_size (int, необязательный, по умолчанию 4001) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены в input_ids.
  • hidden_size (int, необязательный, по умолчанию 768) — Размерность скрытых представлений.
  • num_hidden_layers (int, необязательный, по умолчанию 6) — Количество скрытых слоев в декодере Transformer.
  • num_attention_heads (int, необязательный, по умолчанию 12) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • num_key_value_heads (int, необязательный) — Количество ключевых и value-голов, используемых для реализации Grouped Query Attention. Если num_key_value_heads=num_attention_heads, модель использует Multi Head Attention (MHA); если num_key_value_heads=1 — Multi Query Attention (MQA); в остальных случаях применяется GQA. При конвертации мультиголовного чекпоинта в GQA-чекпоинт каждая групповая ключевая и value-голова должна построиться путём усреднения (meanpooling) всех исходных голов в этой группе. Дополнительные сведения см. в этой статье. Если параметр не задан, по умолчанию используется num_attention_heads.
  • head_dim (int, необязательный) — Размер измерения головы внимания. Если значение равно None, по умолчанию используется hidden_size // num_attention_heads
  • intermediate_size (int, необязательный, по умолчанию 3072) — Размерность представлений MLP.
  • hidden_act (str, необязательный, по умолчанию gelu) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • layer_norm_eps (float, необязательный, по умолчанию 1e-05) — Epsilon для нормализации слоев в базовой модели.
  • attention_bias (bool, необязательный, по умолчанию False) — Использовать ли смещение (bias) в слоях проекции query, key, value и output при само-внимании.
  • attention_dropout (float, необязательный, по умолчанию 0.0) — Коэффициент dropout для вероятностей внимания.
  • max_position_embeddings (int, необязательный, по умолчанию 8192) — Максимальная длина последовательности, с которой может использоваться эта модель.
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], необязательный) — Словарь, содержащий параметры конфигурации для эмбеддингов RoPE. Словарь должен содержать значение для rope_theta и, при необходимости, параметры, используемые для масштабирования, если вы хотите использовать RoPE с более длинными max_position_embeddings.
  • latent_dim (int, необязательный, по умолчанию 32) — Размерность аудиолатентов, которые принимает базовая модель на вход (audio_latents); совпадает с latent_dim flow-головы и аудиотокенизатора.
  • pad_token_id (int, необязательный, по умолчанию 3) — Идентификатор токена, используемого для выравнивания (padding) в словаре.
  • bos_token_id (int, необязательный) — Идентификатор токена, используемого для обозначения начала потока в словаре.
  • eos_token_id (int, необязательный) — Идентификатор токена, используемого для обозначения конца потока в словаре.
  • audio_prompt_token_id (int, необязательный, по умолчанию 5) — Идентификатор плейсхолдер-токена для кадров голосового промпта в input_ids (<|audio_prompt|>).
  • audio_latent_token_id (int, необязательный, по умолчанию 6) — Идентификатор плейсхолдер-токена для позиций аудио-латентов в input_ids (<|audio_latent|>).
  • audio_bos_token_id (int, необязательный, по умолчанию 4) — Идентификатор токена первой позиции аудио, закрывающего промпт: содержит обученный латентный BOS, из которого генерируется первый кадр (<|audio_bos|>).
  • frame_rate (float, необязательный, по умолчанию 12.5) — Количество аудио-латентов в секунду аудио: generate выводит из него значение бюджета кадров по умолчанию.
  • initializer_range (float, необязательный, по умолчанию 0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
  • use_cache (bool, необязательный, по умолчанию True) — Указывает, должен ли модель возвращать последние ключи/значения внимания (не используется во всех моделях). Актуально только если config.is_decoder=True или если модель является генеративной моделью только с декодером.
  • eos_loss_weight (float, необязательный, по умолчанию 0.1) — Вес потери конца речи в общей функции потерь при обучении.
  • flow_loss_num_samples (int, необязательный, по умолчанию 4) — Количество выборов шума на целевой кадр в потере потока.
  • lsd_distill_probability (float, необязательный, по умолчанию 0.25) — Вероятность вычисления члена самодистилляции в функции потерь LSD на каждом шаге обучения (с пересчетом весов для сохранения ожидаемого значения функции потерь); значение 1 означает вычисление на каждом шаге.
  • lsd_diagonal_weight (float, необязательный, по умолчанию 0.75) — Вес диагонального (мгновенного потока) члена функции потерь LSD; член самодистилляции взвешивает остальную часть.
  • lsd_time_logit_mean (float, необязательный, по умолчанию 0.4) — Среднее значение логит-нормального распределения времен потока, используемого в потере LSD.
  • lsd_time_logit_std (float, необязательный, по умолчанию 1.0) — Стандартное отклонение логит-нормального распределения времен потока, извлекаемых потерей LSD.
  • latent_stats_ema_steps (int, необязательный, по умолчанию 1000) — Количество первых шагов обучения, в течение которых latent_mean и latent_std следуют экспоненциальному скользящему среднему целевых латентов; значение 0 оставляет их замороженными.
  • latent_stats_ema_decay (float, необязательный, по умолчанию 0.999) — Коэффициент затухания для скользящего среднего.
  • audio_prompt_dim (int, необязательный, по умолчанию 512) — Размерность латентов голосового промпта (audio_prompt_latents), то есть неквантованных латентов спикер-кодека Gradium (это энкодер Mimi, а не аудио-токенизатора), которые бэкбон проецирует в hidden_size.
  • num_speakers (int, необязательный, по умолчанию 1) — Значение условия num_speakers: строка его таблицы поиска, добавляемая к каждой позиции аудио-латента.
  • num_speakers_vocab_size (int, необязательный, по умолчанию 32) — Число строк таблицы поиска num_speakers.
  • num_speakers_embedding_dim (int, необязательный, по умолчанию 16) — Ширина таблицы поиска num_speakers, проецируемой в hidden_size.
  • duration_delta (float, необязательный, по умолчанию 0.0) — Значение условия duration_delta, которое встраивается с помощью синусоидальной функции и добавляется к каждой позиции аудио-латента.
  • duration_delta_embedding_dim (int, необязательный, по умолчанию 128) — Размер синусоидального эмбеддинга duration_delta, проецируемого в hidden_size.
  • duration_delta_scale (float, необязательный, по умолчанию 1000.0) — Коэффициент, применяемый к duration_delta перед его синусоидным встраиванием.
  • duration_delta_max_period (float, необязательный, по умолчанию 10000.0) — Максимальный период синусоидального встраивания duration_delta.

Это класс конфигурации для хранения настроек модели GradiumPhononTTSModel. Он используется для создания модели Gradium Phonon Tts в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации gradium/phonon-31m-en

Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.

GradiumPhononTTSFlowHeadConfig

класс transformers.GradiumPhononTTSFlowHeadConfig

< >

( 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 )

Параметры

  • hidden_size (int, необязательный, по умолчанию 512) — Размерность скрытых представлений.
  • num_hidden_layers (int, необязательный, по умолчанию 6) — Количество скрытых слоев в декодере Transformer.
  • latent_dim (int, необязательный, по умолчанию 32) — Размерность непрерывных аудиолатентов, которые предсказывает head (размерность латентов аудиотокенизатора).
  • condition_dim (int, необязательный, по умолчанию 768) — Размерность скрытого состояния бэкбона, на которое опирается head (параметр hidden_size бэкбона).
  • frequency_embedding_size (int, необязательный, по умолчанию 256) — Размер синусоидального эмбеддинга временных шагов потока.
  • hidden_act (str, необязательный, по умолчанию silu) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • layer_norm_eps (float, необязательный, по умолчанию 1e-06) — Epsilon для нормализации слоев внутри остаточных блоков и в конечном слое.
  • rms_norm_eps (float, необязательный, по умолчанию 1e-05) — Epsilon нормализации, завершающей временные эмбеддинги.
  • max_period (float, необязательный, по умолчанию 10000.0) — Максимальный период синусоидного временного эмбеддинга, который контрольная точка сохраняет как freqs.
  • flow_type (str, необязательный, по умолчанию "lsd") — Цель, с которой обучалась головка, определяющая способ её условного формирования и выборки. "lsd" (лагранжева само-дистилляция): условное формирование по начальному и конечному времени шага потока, выборка выполняется методом Эйлера из гауссова шума. "drifting": без временного условного формирования, головка отображает шум в латентное пространство за один вызов.
  • loss_weighting_hidden_size (int, необязательный, по умолчанию 32) — Ширина MLP, который обучает взвешивание неопределённости для членов потерь LSD на основе их временных потоков (только для обучения).
  • loss_weighting_num_layers (int, необязательный, по умолчанию 3) — Количество скрытых слоёв данного MLP.

Это класс конфигурации для хранения настроек модели GradiumPhononTTSModel. Он используется для создания модели Gradium Phonon Tts в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации gradium/phonon-31m-en

Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.

GradiumPhononTTSModel

класс transformers.GradiumPhononTTSModel

< >

( config: GradiumPhononTTSConfig )

Параметры

  • config (GradiumPhononTTSConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().

Базовая архитектура Gradium Phonon TTS: каузальный трансформер, обрабатывающий один поток, состоящий из голосового промпта (латенты спикер-кодека), токенов текста и латентов аудио, возвращающий нормализованные скрытые состояния.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

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

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

    Что такое входные идентификаторы?

  • audio_prompt_latents (torch.Tensor формы (batch_size, num_prompt_frames, latent_dim), необязательный) — Латенты голосового промпта аудио-токенизатора (закодированные процессором или из voices/ чекпоинта), выровненные справа до длины самого длинного голоса в батче и размещённые в позициях audio_prompt_token_id.
  • audio_prompt_latents_mask (torch.Tensor формы (batch_size, num_prompt_frames), необязательный) — Маска кадров голоса (1) в отличие от заполнителей (0) в audio_prompt_latents.
  • audio_latents (torch.Tensor формы (batch_size, num_latents, latent_dim), необязательный) — Нормализованные аудио-латенты, распределённые по позициям audio_latent_token_id. Позиция audio_bos_token_id перед ними, которая завершает промпт и с которой генерируется первый кадр, всегда получает обученный BOS-латент.
  • audio_latents_mask (torch.Tensor формы (batch_size, num_latents), необязательный) — Маска латентов каждой строки (1) в отличие от заполнителей (0) в audio_latents, если строки содержат разное количество латентных позиций (обучение).
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • position_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона [0, config.n_positions - 1].

    Что такое идентификаторы позиций?

  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).

Возвращает

BaseModelOutputWithPast или tuple(torch.Tensor)

Объект BaseModelOutputWithPast или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (GradiumPhononTTSConfig) и входных данных.

Метод forward модели GradiumPhononTTSModel переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.

    Если используется past_key_values, выводится только последнее скрытое состояние последовательностей формы (batch_size, 1, hidden_size).

  • past_key_values (Cache, необязательный, возвращается при передаче use_cache=True или когда config.use_cache=True) — это экземпляр Cache. Подробнее см. в нашем руководстве по кэшу kv.

    Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и, при необходимости, если config.is_encoder_decoder=True, в блоках кросс-внимания), которые можно использовать (см. входной параметр past_key_values) для ускорения последовательного декодирования.

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

GradiumPhononTTSForConditionalGeneration

класс transformers.GradiumPhononTTSForConditionalGeneration

< >

( config: GradiumPhononTTSConfig )

Параметры

  • config (GradiumPhononTTSConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().

Модель синтеза речи Gradium Phonon TTS: базовая сеть, flow-головка, которая на каждом шаге генерирует один латентный аудиовектор, и головка определения конца речи. Модель генерирует латентные представления аудиотокенизатора, которые процессор декодирует в аудио с частотой дискретизации 24 кГц.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

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

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

    Что такое входные идентификаторы?

  • audio_prompt_latents (torch.Tensor формы (batch_size, num_prompt_frames, latent_dim), необязательный) — Латенты голосового промпта аудио-токенизатора, дополненные справа, распределённые по позициям audio_prompt_token_id.
  • audio_prompt_latents_mask (torch.Tensor формы (batch_size, num_prompt_frames), необязательный) — Маска кадров голоса (1) в отличие от заполнителей (0) в audio_prompt_latents.
  • audio_latents (torch.Tensor формы (batch_size, num_latents, latent_dim), необязательный) — Нормализованные аудио-латенты, распределённые по позициям audio_latent_token_id.
  • labels (torch.Tensor формы (batch_size, num_frames, latent_dim), необязательный) — Целевые латенты аудио-токенизатора (для обучения), дополненные справа. Промпт каждой строки заканчивается позицией audio_bos_token_id, за которой следует по одной позиции audio_latent_token_id на каждый кадр: модель подаёт нормализованные целевые значения (teacher forcing), применяет flow loss к выходам BOS и всех кадров, кроме последнего, которые предсказывают кадры, а end-of-speech loss — ко всем, причём последний является концом речи.
  • labels_mask (torch.Tensor формы (batch_size, num_frames), необязательный) — Маска целевых кадров каждой строки (1) в отличие от заполнителей (0) в labels.
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • position_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона [0, config.n_positions - 1].

    Что такое идентификаторы позиций?

  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).

Возвращает

GradiumPhononTTSOutputWithPast или tuple(torch.Tensor)

GradiumPhononTTSOutputWithPast или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (GradiumPhononTTSConfig) и входных данных.

Метод forward класса GradiumPhononTTSForConditionalGeneration переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.Tensor of shape (), optional, returned when labels is passed) — Training loss: the LSD flow loss of the target latents plus config.eos_loss_weight times the end-of-speech loss.

  • logits (torch.Tensor формы (batch_size, sequence_length, 1)) — Логиты конца речи, по одному на каждую позицию.

  • past_key_values (Cache, необязательный, возвращается при передаче use_cache=True или когда config.use_cache=True) — это экземпляр Cache. Подробнее см. в нашем руководстве по кэшу kv.

    Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания), которые можно использовать (см. вход past_key_values) для ускорения последовательного декодирования.

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

  • last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size)) — Нормализованные скрытые состояния базовой модели, которые задают условия для flow-головы.

Пример:

>>> 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

< >

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

Параметры

  • inputs (torch.LongTensor формы (batch_size, sequence_length), необязательный) — input_ids, подготовленные с помощью PocketTTSProcessor. Также можно передать как input_ids=.
  • kwargs (dict[str, Any], необязательный) — attention_mask, голосовой промпт (audio_prompt_latents и audio_prompt_latents_mask, либо кэш голосового префикса в виде past_key_values, встроенные голоса, с промптами только текста), frames_after_eos из процессора, параметры генерации (do_sample, temperature, max_new_tokens, …), а также специфичные для Pocket TTS num_flow_steps, eos_threshold и min_frames_before_eos, значения по умолчанию для которых берутся из конфигурации генерации.

Генерирует речь. Этот метод переопределяет generate(), чтобы по умолчанию устанавливать max_new_tokens равным бюджету кадров исходного времени выполнения, ceil((num_text_tokens / 3 + 2) * frame_rate) для самого длинного текста в батче. Всё остальное обрабатывается через стандартные хуки генерации.

Update on GitHub