Transformers documentation
Pocket TTS
Эта модель была добавлена в 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
< 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 = 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_dimflow-головы и аудиотокенизатора. - 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
< 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 = 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
< source >( 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__
< source >( 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
< source >( 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__
< source >( 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.TensorPyTorch.'np': возвращает объекты NumPynp.ndarray.
- **kwargs (ProcessingKwargs, optional) — Дополнительные параметры обработки для каждой модальности (текст, изображения, видео, аудио). Специфичные для модели параметры перечислены выше; полный список поддерживаемых аргументов см. в классе TypedDict.
split_text
< source >( text: strmax_tokens: int = 50 )
Разбивает text на фрагменты, выровненные по предложениям и не превышающие max_tokens токенов, как в оригинальном методе split_into_best_sentences: подготовленный текст нарезается после окончания предложений (а не после десятичных точек), предложения длиннее max_tokens — после окончания запятых, а затем фрагменты жадно группируются. Каждый фрагмент предназначен для того, чтобы представлять один диалог в батче.
decode
< source >( 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
< source >( 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
< source >( config: PocketTTSConfig )
Параметры
- config (PocketTTSConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Базовая архитектура Pocket 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), содержащий различные
элементы в зависимости от конфигурации (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
< source >( config: PocketTTSConfig )
Параметры
- config (PocketTTSConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Pocket TTS для синтеза речи: базовая сеть (backbone), 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'> ) → 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.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, 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
< 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) для самого длинного текста в батче. Всё остальное обрабатывается через стандартные хуки генерации.
sample_latent
< source >( 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-головы.
Преобразует латенты из нормализованного пространства flow head в пространство аудио-токенизатора.
PocketTTSGenerateOutput
класс transformers.models.pocket_tts.generation_pocket_tts.PocketTTSGenerateOutput
< source >( 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.