Transformers documentation
Gradium Phonon TTS
Эта модель была добавлена в 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-en | 31M | English | Apache 2.0 |
| gradium/phonon-40m-en | 40M | English | CC BY-NC 4.0 |
| gradium/phonon-40m-fr | 40M | Французский | CC BY-NC 4.0 |
| gradium/phonon-40m-de | 40M | Немецкий | CC BY-NC 4.0 |
| gradium/phonon-40m-es | 40M | Испанский | CC BY-NC 4.0 |
| gradium/phonon-40m-pt | 40M | Португальский | CC BY-NC 4.0 |
| gradium/phonon-40m-multilingual | 40M | Английский, французский, немецкий, испанский, португальский | 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:
temperature0.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.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. |
Для таких случаев используйте нормализацию текста рантайма Gradium, ptts, или прописывайте их вручную.
GradiumPhononTTSConfig
класс 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 )
Параметры
- 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_dimflow-головы и аудиотокенизатора. - 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
< 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 )
Параметры
- 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
< source >( config: GradiumPhononTTSConfig )
Параметры
- config (GradiumPhononTTSConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Базовая архитектура Gradium Phonon TTS: каузальный трансформер, обрабатывающий один поток, состоящий из голосового промпта (латенты спикер-кодека), токенов текста и латентов аудио, возвращающий нормализованные скрытые состояния.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
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)
Параметры
- 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
< source >( config: GradiumPhononTTSConfig )
Параметры
- config (GradiumPhononTTSConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Модель синтеза речи Gradium Phonon TTS: базовая сеть, flow-головка, которая на каждом шаге генерирует один латентный аудиовектор, и головка определения конца речи. Модель генерирует латентные представления аудиотокенизатора, которые процессор декодирует в аудио с частотой дискретизации 24 кГц.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
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)
Параметры
- 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.Tensorof shape(), optional, returned whenlabelsis passed) — Training loss: the LSD flow loss of the target latents plusconfig.eos_loss_weighttimes 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
< source >( 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 TTSnum_flow_steps,eos_thresholdиmin_frames_before_eos, значения по умолчанию для которых берутся из конфигурации генерации.
Генерирует речь. Этот метод переопределяет generate(), чтобы по умолчанию устанавливать max_new_tokens равным бюджету кадров исходного времени выполнения, ceil((num_text_tokens / 3 + 2) * frame_rate) для самого длинного текста в батче. Всё остальное обрабатывается через стандартные хуки генерации.