Transformers documentation

Pocket 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.1).
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.

Pocket TTS

Обзор

Pocket TTS — это модель преобразования текста в речь от Kyutai с 100 млн параметров, являющаяся Continuous Audio Language Model, которая работает быстрее реального времени на CPU. Причинный трансформер генерирует один непрерывный аудиолатентный вектор на кадр (12,5 Гц) через одношаговую flow-головку, а головка определения конца речи принимает решение о моменте остановки.

Процессор содержит аудиотокенизатор Pocket TTS — кодек на основе Mimi, который кодирует голосовые подсказки и декодирует сгенерированные латенты в аудио с частотой 24 кГц. Предопределённые голоса поставляются в виде KV-кэшей (voices/).

Опубликованы два flow heads: Lagrangian self-distillation (flow_type="lsd", по умолчанию) и drifting (flow_type="drifting", english_drifting_26-09). Поддерживается дообучение, см. Обучение.

Эта модель была предоставлена Eustache Le Bihan. Исходный код — kyutai-labs/pocket-tts.

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

  • Подготовьте входные данные с помощью apply_chat_template() (одно сообщение user на каждый текст, add_generation_prompt=True). Нормализатор токенизатора обрабатывает текст так же, как в оригинале, с настройками языка чекпоинта.
  • generate возвращает audio_latents и audio_latents_mask; декодируйте их с помощью PocketTTSProcessor.decode().
  • max_new_tokens по умолчанию устанавливается в соответствии с бюджетом, основанным на длине текста, а генерация останавливается вскоре после того, как логит конца речи превысит eos_threshold.
  • do_sample=False соответствует исходному при температуре 0. При сэмплировании temperature (по умолчанию 0.3) — это дисперсия начального шума потока.
  • Разбейте длинный текст с помощью PocketTTSProcessor.split_text(), размещая один диалог в каждом фрагменте.

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

Голос

Голос можно задать тремя способами.

1. Клонирование записи: элемент audio в разговоре.

from transformers import AutoModelForTextToWaveform, AutoProcessor

model_id = "eustlb/pocket-tts"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")

url = "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/en-Alice_woman.wav"
conversation = [
    {
        "role": "user",
        "content": [
            {"type": "audio", "url": url},
            {"type": "text", "text": "Hello world. I am Kyutai's Pocket TTS."},
        ],
    }
]
inputs = processor.apply_chat_template(
    conversation, tokenize=True, return_dict=True, add_generation_prompt=True
).to(model.device)

outputs = model.generate(**inputs)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio(audio, "cloned.wav")

2. Предвычисленные латенты: пустой элемент audio, при этом латенты передаются в процессор.

from transformers import AutoModelForTextToWaveform, AutoProcessor
from transformers.audio_utils import load_audio

model_id = "eustlb/pocket-tts"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")

# e.g. a recording encoded once by the processor's audio tokenizer,
# to reuse without re-encoding it
url = "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/en-Alice_woman.wav"
features = processor.feature_extractor(
    load_audio(url, sampling_rate=24000), sampling_rate=24000
).to(processor.audio_tokenizer.device)
# (num_frames, latent_dim)
voice = processor.audio_tokenizer.encode(**features).latents[0]

conversation = [
    {
        "role": "user",
        "content": [
            {"type": "audio"},
            {"type": "text", "text": "Hello world. I am Kyutai's Pocket TTS."},
        ],
    }
]
inputs = processor.apply_chat_template(
    conversation,
    tokenize=True,
    return_dict=True,
    add_generation_prompt=True,
    processor_kwargs={"audio_prompt_latents": [voice]},
).to(model.device)

outputs = model.generate(**inputs)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio(audio, "latents.wav")

3. Кэшированный контекст: KV-кэш голосового промпта, передаваемый в качестве past_key_values. В поставленных голосах (voices/) используется именно этот вариант.

from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
from transformers import AutoModelForTextToWaveform, AutoProcessor, DynamicCache

model_id = "eustlb/pocket-tts"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")

voice = load_file(hf_hub_download(model_id, "voices/alba.safetensors"))
layers = []
for i, layer in enumerate(model.model.layers):
    # each layer's cache on that layer's device
    device = layer.self_attn.k_proj.weight.device
    layers.append(
        (voice[f"layers.{i}.keys"].to(device), voice[f"layers.{i}.values"].to(device))
    )
voice_cache = DynamicCache(layers, config=model.config)

conversation = [
    {
        "role": "user",
        "content": [{"type": "text", "text": "Hello world. I am Kyutai's Pocket TTS."}],
    }
]
inputs = processor.apply_chat_template(
    conversation, tokenize=True, return_dict=True, add_generation_prompt=True
).to(model.device)

outputs = model.generate(**inputs, past_key_values=voice_cache)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio(audio, "cached.wav")

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

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

import torch
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
from transformers import AutoModelForTextToWaveform, AutoProcessor, DynamicCache

model_id = "eustlb/pocket-tts"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")


def load_voices(names):
    """The shipped voices, one per conversation, as one cache, left-padded to the
    longest voice, and the mask of their positions.

    `generate` extends the cache: load it for every call.
    """
    voices = [
        load_file(hf_hub_download(model_id, f"voices/{name}.safetensors"))
        for name in names
    ]
    lengths = [voice["layers.0.keys"].shape[2] for voice in voices]
    length = max(lengths)
    layers = []
    for i, layer in enumerate(model.model.layers):
        device = layer.self_attn.k_proj.weight.device
        keys, values = (
            torch.cat(
                [
                    torch.nn.functional.pad(voice[f"layers.{i}.{kind}"], (0, 0, length - n, 0))
                    for voice, n in zip(voices, lengths)
                ]
            ).to(device)
            for kind in ("keys", "values")
        )
        layers.append((keys, values))
    mask = torch.tensor([[0] * (length - n) + [1] * n for n in lengths])
    return DynamicCache(layers, config=model.config), mask


text = (
    "A first sentence that is long enough to be worth splitting. "
    "Then a second one, and a third one for good measure."
)
chunks = processor.split_text(text)
conversations = [
    [{"role": "user", "content": [{"type": "text", "text": chunk}]}]
    for chunk in chunks + ["Hello world"]
]
inputs = processor.apply_chat_template(
    conversations, tokenize=True, return_dict=True, add_generation_prompt=True
).to(model.device)

voice_cache, voice_mask = load_voices(["alba"] * len(chunks) + ["jean"])
# the mask covers the cached voices too
inputs["attention_mask"] = torch.cat(
    [voice_mask.to(inputs["attention_mask"]), inputs["attention_mask"]], dim=-1
)
outputs = model.generate(**inputs, past_key_values=voice_cache)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio(
    [torch.cat(audio[: len(chunks)]), audio[-1]], ["long.wav", "hello.wav"]
)

Дрейф контрольной точки

Тот же способ использования, но с собственными голосами контрольной точки:

from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
from transformers import AutoModelForTextToWaveform, AutoProcessor, DynamicCache

model_id = "eustlb/pocket-tts-english-drifting"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")

voice = load_file(hf_hub_download(model_id, "voices/alba.safetensors"))
layers = []
for i, layer in enumerate(model.model.layers):
    device = layer.self_attn.k_proj.weight.device
    layers.append(
        (voice[f"layers.{i}.keys"].to(device), voice[f"layers.{i}.values"].to(device))
    )

conversation = [
    {
        "role": "user",
        "content": [{"type": "text", "text": "Hello world. I am Kyutai's Pocket TTS."}],
    }
]
inputs = processor.apply_chat_template(
    conversation, tokenize=True, return_dict=True, add_generation_prompt=True
).to(model.device)

outputs = model.generate(
    **inputs, past_key_values=DynamicCache(layers, config=model.config)
)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio(audio, "drifting.wav")

Обучение

Поместите целевой аудио в ход assistant. Процессор возвращает его латенты в качестве labels, а модель возвращает потерю оригинала (потеря потока LSD плюс config.eos_loss_weight, умноженное на потерю конца речи). Голосовой промпт, как правило, является началом того же высказывания.

import torch
from transformers import AutoModelForTextToWaveform, AutoProcessor

model_id = "eustlb/pocket-tts"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = AutoModelForTextToWaveform.from_pretrained(model_id, device_map="auto")
model.train()

conversation = [
    {
        "role": "user",
        "content": [
            {"type": "audio", "audio": voice_prompt},
            {"type": "text", "text": target_text},
        ],
    },
    {"role": "assistant", "content": [{"type": "audio", "audio": target_audio}]},
]
inputs = processor.apply_chat_template(
    conversation, tokenize=True, return_dict=True
).to(model.device)
loss = model(**inputs).loss
loss.backward()
  • Передавайте голос в виде записи или латентов, а не кэша.
  • Для classifier-free guidance удалите элемент audio или text из хода user (в оригинале каждый удаляется с вероятностью 0.2).
  • Предвычисленные латенты передаются в processor_kwargs={"audio_prompt_latents": [...], "labels": [...]}, при этом в качестве заполнителей используются пустые элементы {"type": "audio"}.
  • Исходный рецепт: AdamW, learning_rate=2e-5 (2e-4 для нового языка), adam_beta2=0.95, weight_decay=0.1, max_grad_norm=1.0, 1000 шагов разгона, затем постоянное значение, EMA весов (затухание 0.999).

PocketTTSConfig

класс transformers.PocketTTSConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneflow_head_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonevocab_size: int = 4004hidden_size: int = 1024num_hidden_layers: int = 6num_attention_heads: int = 16num_key_value_heads: int | None = Nonehead_dim: int | None = Noneintermediate_size: int = 4096hidden_act: str = 'gelu_pytorch_tanh'layer_norm_eps: float = 1e-05attention_bias: bool = Falseattention_dropout: float = 0.0max_position_embeddings: int = 8192rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Nonelatent_dim: int = 32pad_token_id: int = 3bos_token_id: int | None = Noneeos_token_id: int | None = Noneaudio_prompt_token_id: int = 4000audio_latent_token_id: int = 4001audio_prompt_bos_token_id: int = 4002audio_bos_token_id: int = 4003frame_rate: float = 12.5initializer_range: float = 0.02use_cache: bool = Trueeos_loss_weight: float = 0.1flow_loss_num_samples: int = 4lsd_distill_probability: float = 0.25lsd_diagonal_weight: float = 0.75lsd_time_logit_mean: float = 0.4lsd_time_logit_std: float = 1.0latent_stats_ema_steps: int = 1000latent_stats_ema_decay: float = 0.999 )

Параметры

  • flow_head_config (Union[PocketTTSFlowHeadConfig, dict], необязательный) — Конфигурация flow head, которая выполняет сэмплирование каждого латента из скрытого состояния backbone.
  • vocab_size (int, необязательный, по умолчанию 4004) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены в input_ids.
  • hidden_size (int, необязательный, по умолчанию 1024) — Размерность скрытых представлений.
  • num_hidden_layers (int, необязательный, по умолчанию 6) — Количество скрытых слоев в декодере Transformer.
  • num_attention_heads (int, необязательный, по умолчанию 16) — Количество головок внимания в каждом слое внимания декодера 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, необязательный, по умолчанию 4096) — Размерность представлений MLP.
  • hidden_act (str, необязательный, по умолчанию gelu_pytorch_tanh) — Нелинейная функция активации (функция или строка) в декодере. Например, "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_prompt_latents, audio_latents); равно latent_dim flow-головы и аудиотокенизатора.
  • pad_token_id (int, необязательный, по умолчанию 3) — Идентификатор токена, используемого для выравнивания (padding) в словаре.
  • bos_token_id (int, необязательный) — Идентификатор токена, используемого для обозначения начала потока в словаре.
  • eos_token_id (int, необязательный) — Идентификатор токена, используемого для обозначения конца потока в словаре.
  • audio_prompt_token_id (int, необязательный, по умолчанию 4000) — Идентификатор-заполнитель для кадров голосового промпта в input_ids.
  • audio_latent_token_id (int, необязательный, по умолчанию 4001) — Идентификатор-заполнитель для позиций аудио-латентов в input_ids.
  • audio_prompt_bos_token_id (int, необязательный, по умолчанию 4002) — Идентификатор токена, размещаемого перед голосовым промптом; его эмбеддинг представляет собой обученный вектор, который оригинальная модель добавляет в начало голосового промпта.
  • audio_bos_token_id (int, необязательный, по умолчанию 4003) — Идентификатор токена первой позиции аудио, закрывающий промпт: содержит обученный латентный 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) — Коэффициент затухания для скользящего среднего.

Это класс конфигурации для хранения настроек модели PocketTTSModel. Он используется для создания модели Pocket Tts в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации eustlb/pocket-tts

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

PocketTTSFlowHeadConfig

класс transformers.PocketTTSFlowHeadConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 512num_hidden_layers: int = 6latent_dim: int = 32condition_dim: int = 1024frequency_embedding_size: int = 256hidden_act: str = 'silu'layer_norm_eps: float = 1e-06rms_norm_eps: float = 1e-05max_period: float = 10000.0flow_type: typing.Literal['lsd', 'drifting'] = 'lsd'loss_weighting_hidden_size: int = 32loss_weighting_num_layers: int = 3 )

Параметры

  • hidden_size (int, необязательный, по умолчанию 512) — Размерность скрытых представлений.
  • num_hidden_layers (int, необязательный, по умолчанию 6) — Количество скрытых слоев в декодере Transformer.
  • latent_dim (int, необязательный, по умолчанию 32) — Размерность непрерывных аудиолатентов, которые предсказывает head (размерность латентов аудиотокенизатора).
  • condition_dim (int, необязательный, по умолчанию 1024) — Размерность скрытого состояния бэкбона, на которое опирается 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.

Это класс конфигурации для хранения настроек модели PocketTTSModel. Он используется для создания модели Pocket Tts в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации eustlb/pocket-tts

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

PocketTTSFeatureExtractor

класс transformers.PocketTTSFeatureExtractor

< >

( feature_size = 1sampling_rate = 24000padding_value = 0.0frame_size = 1920pad_to_multiple_of = 1920end_on_pause = Truepause_duration = 0.08fade_out_duration = 0.02silence_floor_db = 35.0analysis_frame_duration = 0.02**kwargs )

Параметры

  • feature_size (int, необязательный, по умолчанию 1) — Количество каналов.
  • sampling_rate (int, необязательный, по умолчанию 24000) — Частота дискретизации, с которой аудиосигнал должен быть оцифрован, выраженная в герцах (Гц).
  • padding_value (float, необязательный, по умолчанию 0.0) — Значение, используемое для дополнения (padding).
  • frame_size (int, необязательный, по умолчанию 1920) — Количество аудиовыборок на латентный кадр аудиотокенизатора (его frame_size).
  • pad_to_multiple_of (int, необязательный, по умолчанию 1920) — Дополняет аудио до кратного этому значению; кратное frame_size сохраняет каждую латентную рамку целой.
  • end_on_pause (bool, необязательный, по умолчанию True) — Определяет, следует ли завершать каждую звуковую дорожку ровно pause_duration секундами тишины: хвостовая тишина (кадры, превышающие analysis_frame_duration секунд и находящиеся ниже silence_floor_db относительно самого громкого фрагмента) отбрасывается, последние fade_out_duration секунд оставшейся части плавно затухают, а затем добавляется pause_duration секунд нулевых значений.
  • pause_duration (float, необязательный, по умолчанию 0.08) — Длительность тишины, добавляемой end_on_pause, в секундах.
  • fade_out_duration (float, необязательный, по умолчанию 0.02) — Длительность затухания, применяемого end_on_pause перед паузой, в секундах.
  • silence_floor_db (float, необязательный, по умолчанию 35.0) — Уровень в дБ ниже самой громкой кадра анализа, ниже которого end_on_pause рассматривает хвостовые кадры как тишину.
  • analysis_frame_duration (float, необязательный, по умолчанию 0.02) — Длительность кадров, уровень которых измеряет end_on_pause, в секундах.

Создаёт экстрактор признаков Pocket TTS, который подготавливает волновые формы голосовых подсказок для кодировщика аудио-токенизатора.

Каждая волновая форма по желанию завершается короткой паузой (исходный параметр end_on_pause: обучающие промпты заканчиваются внутри паузы между двумя словами, промпт, обрывающийся на речи, заставляет модель продолжать её, а промпт, заканчивающийся длинной тишиной, задерживает начало речи), после чего батч дополняется справа до кратного размеру кадра токенизатора.

__call__

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]sampling_rate: int | None = Noneend_on_pause: bool | None = Nonepadding: bool | str | transformers.utils.generic.PaddingStrategy | None = Truepad_to_multiple_of: int | None = Nonemax_length: int | None = Nonereturn_attention_mask: bool | None = Truereturn_tensors: str | None = 'pt'**kwargs )

Параметры

  • audio (np.ndarray, torch.Tensor, list[np.ndarray], list[torch.Tensor]) — Монофоническая волновая форма или пакет монофонических волновых форм голосовых подсказок.
  • sampling_rate (int, необязательный) — Частота дискретизации, с которой была оцифрована входная audio. Настоятельно рекомендуется передавать sampling_rate при вызове forward, чтобы избежать скрытых ошибок.
  • end_on_pause (bool, необязательный) — Определяет, следует ли завершать каждую звуковую дорожку короткой паузой; см. docstring класса. По умолчанию self.end_on_pause.
  • padding (bool, str или PaddingStrategy, необязательный, по умолчанию True) — Стратегия выравнивания батча, см. pad().
  • pad_to_multiple_of (int, необязательный) — Выровнять батч до кратного этому значению. По умолчанию self.pad_to_multiple_of.

PocketTTSProcessor

класс transformers.PocketTTSProcessor

< >

( feature_extractortokenizeraudio_tokenizer = Nonechat_template = Noneshort_text_max_words: int = 4frames_after_eos_short_text: int = 4frames_after_eos: int = 2fade_in_duration: float = 0.005 )

Параметры

  • feature_extractor (PocketTTSFeatureExtractor) — Извлечение признаков является обязательным входным параметром.
  • tokenizer (TokenizersBackend) — Токенизатор является обязательным входным параметром.
  • audio_tokenizer (PocketTTSAudioTokenizerModel, необязательный) — Кодек: кодирует аудио в латенты и декодирует сгенерированные латенты обратно в аудио.
  • chat_template (str) — Jinja-шаблон для преобразования списков сообщений в чате в строку, пригодную для токенизации.
  • short_text_max_words (int, необязательный, по умолчанию 4) — Для текстов, содержащих не более этого количества слов, после кадра конца речи добавляется frames_after_eos_short_text кадров.
  • frames_after_eos_short_text (int, необязательный, по умолчанию 4) — Количество кадров, генерируемых после кадра конца речи для коротких текстов.
  • frames_after_eos (int, необязательный, по умолчанию 2) — Количество кадров, генерируемых после кадра конца речи для более длинных текстов.
  • fade_in_duration (float, необязательный, по умолчанию 0.005) — Длительность в секундах линейного нарастания громкости, применяемого к началу каждой декодированной звуковой волны: новое состояние декодера начинается с небольшого скачка, который воспринимается как щелчок.

Создаёт PocketTTSProcessor, который объединяет экстрактор признаков и токенизатор в единый процессор.

PocketTTSProcessor предоставляет все возможности PocketTTSFeatureExtractor и TokenizersBackend. Подробнее см. в ~PocketTTSFeatureExtractor и ~TokenizersBackend.

__call__

< >

( text: str | list[str] | None = Noneaudio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], NoneType] = Noneaudio_prompt_latents: list[torch.Tensor] | None = Nonelabels: list[torch.Tensor] | None = None**kwargs: *<class 'transformers.models.pocket_tts.processing_pocket_tts.PocketTTSProcessorKwargs'> )

Параметры

  • text (str или list[str]) — Промпт(ы), сформированный(е) с помощью apply_chat_template().
  • audio (np.ndarray, torch.Tensor или список таких объектов, необязательный) — Волновые формы диалогов, моно, 24 кГц, в порядке диалога: каждый голос, а при обучении — каждая целевая последовательность.
  • audio_prompt_latents (list[torch.Tensor], необязательный) — Предварительно вычисленные голоса: по одному тензору (num_frames, latent_dim) на каждый плейсхолдер голоса, вместо волновых форм.
  • labels (list[torch.Tensor], необязательный) — Предварительно вычисленные целевые значения (для обучения), по одному тензору (num_frames, latent_dim) на каждый плейсхолдер целевого значения, вместо волновых форм.
  • end_on_pause (bool, kwargs, optional) — Определяет, следует ли завершать каждую аудиоволну голосового запроса короткой паузой, как это делает оригинальная реализация перед клонированием голоса. По умолчанию используется значение end_on_pause из feature extractor.
  • return_tensors (str или TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Допустимые значения:
    • 'pt': возвращает объекты torch.Tensor PyTorch.
    • 'np': возвращает объекты NumPy np.ndarray.
  • **kwargs (ProcessingKwargs, optional) — Дополнительные параметры обработки для каждой модальности (текст, изображения, видео, аудио). Специфичные для модели параметры перечислены выше; полный список поддерживаемых аргументов см. в классе TypedDict.

split_text

< >

( text: strmax_tokens: int = 50 )

Параметры

  • text (str) — Текст для разделения.
  • max_tokens (int, необязательный, по умолчанию 50) — максимальное количество токенов в каждом фрагменте.

Разбивает text на фрагменты, выровненные по предложениям и не превышающие max_tokens токенов, как в оригинальном методе split_into_best_sentences: подготовленный текст нарезается после окончания предложений (а не после десятичных точек), предложения длиннее max_tokens — после окончания запятых, а затем фрагменты жадно группируются. Каждый фрагмент предназначен для того, чтобы представлять один диалог в батче.

decode

< >

( audio_latents: torch.Tensoraudio_latents_mask: torch.Tensor | None = None )

Параметры

  • audio_latents (torch.Tensor формы (batch_size, num_frames, latent_dim) или (num_frames, latent_dim)) — Латенты, которые возвращает generate (PocketTTSGenerateOutput.audio_latents), декодированные как одна партия, либо латенты одного образца.
  • audio_latents_mask (torch.Tensor формы (batch_size, num_frames), необязательный) — Маска кадров для каждого примера (PocketTTSGenerateOutput.audio_latents_mask). Если она не задана, каждая строка декодируется на полную длину.

Декодирует сгенерированные латенты в звуковые волны с помощью аудио-токенизатора и плавно усиливает первые fade_in_duration секунд каждого сигнала, как в оригинале.

save_audio

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]saving_path: str | pathlib.Path | list[str | pathlib.Path]sampling_rate: int | None = None )

Записывает сгенерированные звуковые волны в файл(ы) WAV.

audio (torch.Tensor, np.ndarray или список): Волновые формы, возвращаемые методом decode(). saving_path (str, Path или список): Один путь для каждой волновой формы. sampling_rate (int, необязательный): Частота дискретизации волновых форм; по умолчанию используется значение из экстрактора признаков (токенизатора аудио).

PocketTTSModel

класс transformers.PocketTTSModel

< >

( config: PocketTTSConfig )

Параметры

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

Базовая архитектура Pocket 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), содержащий различные элементы в зависимости от конфигурации (PocketTTSConfig) и входных данных.

Метод forward модели PocketTTSModel переопределяет специальный метод __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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

PocketTTSForConditionalGeneration

класс transformers.PocketTTSForConditionalGeneration

< >

( config: PocketTTSConfig )

Параметры

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

Модель Pocket TTS для синтеза речи: базовая сеть (backbone), 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'> ) → PocketTTSOutputWithPast 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).

Возвращает

PocketTTSOutputWithPast или tuple(torch.Tensor)

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

Метод forward класса PocketTTSForConditionalGeneration переопределяет специальный метод __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, PocketTTSForConditionalGeneration

>>> model = PocketTTSForConditionalGeneration.from_pretrained("eustlb/pocket-tts")

>>> processor = AutoProcessor.from_pretrained("eustlb/pocket-tts")
>>> inputs = processor(text="Hello, my dog is cute", return_tensors="pt")

>>> # generate speech
>>> speech = model(inputs["input_ids"])

generate

< >

( 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) для самого длинного текста в батче. Всё остальное обрабатывается через стандартные хуки генерации.

sample_latent

< >

( condition: Tensornoise: Tensornum_flow_steps: int ) → torch.Tensor of shape (batch_size, latent_dim)

Параметры

  • condition (torch.Tensor формы (batch_size, hidden_size)) — Скрытое состояние базовой модели для генерируемой позиции.
  • noise (torch.Tensor формы (batch_size, latent_dim)) — гауссов шум, масштабированный на sqrt(temperature), или нули.
  • num_flow_steps (int) — Число шагов Эйлера для сэмплера LSD (игнорируется дрейфующей головой, которая выполняет один вызов).

Возвращает

torch.Tensor формы (batch_size, latent_dim)

сэмплированный латентный вектор в нормализованном пространстве.

Выбирает следующий латентный вектор из noise с помощью flow-головы.

denormalize_latents

< >

( audio_latents: Tensor )

Преобразует латенты из нормализованного пространства flow head в пространство аудио-токенизатора.

PocketTTSGenerateOutput

класс transformers.models.pocket_tts.generation_pocket_tts.PocketTTSGenerateOutput

< >

( sequences: LongTensorscores: tuple[torch.Tensor] | None = Nonelogits: tuple[torch.Tensor] | None = Noneattentions: tuple[tuple[torch.Tensor]] | None = Nonehidden_states: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneaudio_latents: typing.Optional[torch.Tensor] = Noneaudio_latents_mask: typing.Optional[torch.LongTensor] = None )

Параметры

  • sequences (torch.LongTensor формы (batch_size, sequence_length)) — идентификаторы токенов подсказки, за которыми следует по одному audio_latent_token_id на каждый сгенерированный кадр. Само аудио находится в audio_latents.
  • scores (tuple(torch.Tensor) необязательный, возвращается при output_scores=True) — Логит конца речи для каждого сгенерированного кадра, один тензор формы (batch_size,) на кадр.
  • logits (tuple(torch.Tensor) необязательный, возвращается при output_logits=True) — То же самое, что и scores: у Pocket TTS нет словаря, поэтому между ними нечего обрабатывать.
  • attentions (tuple(tuple(torch.Tensor)), необязательный, возвращается при output_attentions=True) — Кортеж (по одному элементу на каждый сгенерированный кадр) кортежей (по одному элементу на каждый слой) torch.Tensor с формой (batch_size, num_heads, generated_length, sequence_length).
  • hidden_states (tuple(tuple(torch.Tensor)), необязательный, возвращается при output_hidden_states=True) — Кортеж (по одному элементу на каждый сгенерированный кадр) кортежей (по одному элементу на каждый слой) torch.Tensor с формой (batch_size, generated_length, hidden_size).
  • past_key_values (Cache, необязательный, возвращается при use_cache=True) — Кэш ключей/значений базовой модели в конце генерации.
  • audio_latents (torch.Tensor формы (batch_size, num_frames, latent_dim)) — Сгенерированные латенты в латентном пространстве аудио-токенизатора, дополненные нулями справа за пределами собственных кадров каждого примера. PocketTTSProcessor.decode() преобразует их в звуковые сигналы.
  • audio_latents_mask (torch.LongTensor формы (batch_size, num_frames)) — Маска кадров каждого примера (1), включая кадр конца речи и все кадры после него, в отличие от заполнителя (0).

Результаты PocketTTSForConditionalGeneration.generate.

Update on GitHub