Transformers documentation
Pocket TTS
Model ini disumbangkan ke Hugging Face Transformers pada 2026-10-20.
Pocket TTS
Ikhtisar
Pocket TTS adalah model text-to-speech 100M parameter dari Kyutai, sebuah Continuous Audio Language Model yang berjalan lebih cepat dari waktu nyata pada CPU. Sebuah transformer kausal mengeluarkan satu latent audio kontinu per frame (12.5 Hz) melalui satu langkah flow head, dan sebuah end-of-speech head menentukan kapan harus berhenti.
Processor menyimpan Pocket TTS audio tokenizer, sebuah codec berbasis Mimi yang mengenkripsi prompt suara dan mendekode latens yang dihasilkan menjadi audio 24 kHz. Suara yang sudah didefinisikan sebelumnya disertakan sebagai KV cache (voices/).
Dua flow head dirilis: Lagrangian self-distillation (flow_type="lsd", default) dan drifting (flow_type="drifting", english_drifting_26-09). Finetuning didukung, lihat Training.
Model ini disumbangkan oleh Eustache Le Bihan. Kode aslinya adalah kyutai-labs/pocket-tts.
Tips penggunaan
- Siapkan input dengan apply_chat_template() (satu pesan
userper teks,add_generation_prompt=True). Normalizer dari tokenizer menyiapkan teks seperti aslinya, dengan pengaturan bahasa checkpoint. generatemengembalikanaudio_latentsdanaudio_latents_mask; dekodekan dengan PocketTTSProcessor.decode().max_new_tokenssecara default menggunakan anggaran berdasarkan panjang teks, dan generasi berhenti segera setelah logit akhir ucapan melampauieos_threshold.do_sample=Falsesesuai dengan kondisi asli pada suhu 0. Dengan sampling,temperature(default 0.3) adalah varians dari noise awal aliran.- Pisahkan teks panjang dengan PocketTTSProcessor.split_text(), satu percakapan per chunk.
Penggunaan
Suara
Suara dapat diberikan dengan tiga cara.
1. Mengkloning rekaman: item audio dalam percakapan.
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. Laten yang sudah dihitung: item audio kosong, dengan laten yang diteruskan ke prosesor.
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. Konteks yang di-cache: cache KV dari prompt suara, yang diteruskan sebagai past_key_values. Suara bawaan (voices/) menggunakan bentuk ini.
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")Batch dan teks panjang
Batch beberapa teks dan suara, dengan teks panjang dipecah menjadi chunk:
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"]
)Checkpoint yang bergeser
Penggunaan yang sama, dengan suara milik checkpoint itu sendiri:
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")Pelatihan
Letakkan audio target pada giliran assistant. Prosesor mengembalikan latennya sebagai labels, dan model mengembalikan loss dari audio asli (loss aliran LSD ditambah config.eos_loss_weight kali loss akhir ucapan). Prompt suara biasanya merupakan bagian awal dari ucapan yang sama.
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()- Beri suara sebagai rekaman atau latents, bukan cache.
- Untuk classifier-free guidance, hilangkan item
audioatautextdari giliranuser(aslinya menghilangkan masing-masing dengan probabilitas 0,2). - Latents yang sudah dihitung sebelumnya dimasukkan ke dalam
processor_kwargs={"audio_prompt_latents": [...], "labels": [...]}, dengan item{"type": "audio"}kosong sebagai placeholder. - Resep asli: AdamW,
learning_rate=2e-5(2e-4 untuk bahasa baru),adam_beta2=0.95,weight_decay=0.1,max_grad_norm=1.0, 1000 langkah warmup lalu konstan, EMA dari bobot (decay 0.999).
PocketTTSConfig
kelas 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 )
Parameter
- flow_head_config (
Union[PocketTTSFlowHeadConfig, dict], opsional) — Konfigurasi dari flow head yang mengambil sampel setiap latent dari hidden state backbone. - vocab_size (
int, opsional, default4004) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan olehinput_ids. - hidden_size (
int, opsional, default1024) — Dimensi dari representasi tersembunyi. - num_hidden_layers (
int, opsional, default6) — Jumlah lapisan tersembunyi dalam decoder Transformer. - num_attention_heads (
int, opsional, default16) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer. - num_key_value_heads (
int, opsional) — Ini adalah jumlah key_value heads yang harus digunakan untuk mengimplementasikan Grouped Query Attention. Jikanum_key_value_heads=num_attention_heads, model akan menggunakan Multi Head Attention (MHA), jikanum_key_value_heads=1model akan menggunakan Multi Query Attention (MQA), selain itu GQA yang digunakan. Saat mengkonversi checkpoint multi-head menjadi checkpoint GQA, setiap group key dan value head harus dibangun dengan meanpooling semua head asli di dalam grup tersebut. Untuk detail lebih lanjut, lihat paper ini. Jika tidak ditentukan, akan default kenum_attention_heads. - head_dim (
int, opsional) — Dimensi head perhatian. Jika None, nilainya akan secara default menjadi hidden_size // num_attention_heads - intermediate_size (
int, opsional, default4096) — Dimensi representasi MLP. - hidden_act (
str, opsional, defaultnyagelu_pytorch_tanh) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - layer_norm_eps (
float, opsional, default 1e-05) — Epsilon dari layer normalizations pada backbone. - attention_bias (
bool, opsional, defaultFalse) — Apakah akan menggunakan bias pada lapisan proyeksi query, key, value, dan output selama self-attention. - attention_dropout (
float, opsional, default0.0) — Rasio dropout untuk probabilitas perhatian. - max_position_embeddings (
int, opsional, default8192) — Panjang maksimum urutan yang mungkin digunakan dengan model ini. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], opsional) — Kamus yang berisi parameter konfigurasi untuk embedding RoPE. Kamus tersebut harus berisi nilai untukrope_thetadan secara opsional parameter yang digunakan untuk penskalaan jika Anda ingin menggunakan RoPE denganmax_position_embeddingsyang lebih panjang. - latent_dim (
int, opsional, default 32) — Dimensi dari latens audio yang diterima backbone sebagai input (audio_prompt_latents,audio_latents); sama denganlatent_dimdari flow head dan audio tokenizer. - pad_token_id (
int, opsional, default3) — ID token yang digunakan untuk padding dalam kosakata. - bos_token_id (
int, opsional) — ID token yang digunakan untuk awal aliran (beginning-of-stream) dalam kosakata. - eos_token_id (
int, opsional) — ID token yang digunakan untuk akhir aliran dalam kosakata. - audio_prompt_token_id (
int, opsional, default 4000) — ID token placeholder untuk frame voice-prompt diinput_ids. - audio_latent_token_id (
int, opsional, default 4001) — ID token placeholder untuk posisi laten audio diinput_ids. - audio_prompt_bos_token_id (
int, opsional, default 4002) — Token id yang ditempatkan sebelum voice prompt; embedding-nya adalah vektor yang dipelajari dan di-prepend oleh model asli ke voice. - audio_bos_token_id (
int, opsional, default 4003) — Token id dari posisi audio pertama, yang menutup prompt: menyimpan latent BOS yang dipelajari, yang menjadi dasar untuk menghasilkan frame pertama. - frame_rate (
float, opsional, default 12.5) — Jumlah audio latents per detik audio:generatemenurunkan default frame budget darinya. - initializer_range (
float, opsional, defaultnya0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot. - use_cache (
bool, opsional, defaultnyaTrue) — Apakah model harus mengembalikan perhatian kunci/nilai terakhir (tidak digunakan oleh semua model). Hanya relevan jikaconfig.is_decoder=Trueatau ketika model adalah model generatif yang hanya decoder. - eos_loss_weight (
float, opsional, default 0.1) — Bobot dari kerugian akhir-bicara (end-of-speech) dalam kerugian pelatihan. - flow_loss_num_samples (
int, opsional, defaultnya 4) — Jumlah pengundian noise per bingkai target dalam flow loss. - lsd_distill_probability (
float, opsional, default 0.25) — Probabilitas, per langkah pelatihan, untuk menghitung istilah self-distillation dari loss LSD (diberat ulang untuk menjaga loss yang diharapkan); 1 menghitungnya di setiap langkah. - lsd_diagonal_weight (
float, opsional, default 0.75) — Bobot dari istilah diagonal (aliran sesaat) dari kerugian LSD; istilah distilasi diri menimbang sisanya. - lsd_time_logit_mean (
float, opsional, default 0.4) — Rata-rata dari distribusi logit-normal dari waktu aliran yang diambil oleh kerugian LSD. - lsd_time_logit_std (
float, opsional, default 1.0) — Standar deviasi dari distribusi logit-normal dari waktu aliran yang diambil oleh kerugian LSD. - latent_stats_ema_steps (
int, opsional, default 1000) — Jumlah langkah pelatihan awal di manalatent_meandanlatent_stdmengikuti rata-rata bergerak eksponensial dari latens target; 0 membuat keduanya tetap beku. - latent_stats_ema_decay (
float, opsional, default 0.999) — Nilai decay untuk rata-rata bergerak tersebut.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari PocketTTSModel. Kelas ini digunakan untuk membuat model Pocket Tts berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari eustlb/pocket-tts
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
PocketTTSFlowHeadConfig
kelas 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 )
Parameter
- hidden_size (
int, opsional, default512) — Dimensi dari representasi tersembunyi. - num_hidden_layers (
int, opsional, default6) — Jumlah lapisan tersembunyi dalam decoder Transformer. - latent_dim (
int, opsional, default 32) — Dimensi dari latens audio kontinu yang diprediksi oleh head (dimensi latens dari tokenizer audio). - condition_dim (
int, optional, defaults to 1024) — Dimension of the backbone hidden state the head is conditioned on (the backbonehidden_size). - frequency_embedding_size (
int, opsional, default 256) — Ukuran embedding sinusoidal dari waktu aliran. - hidden_act (
str, opsional, defaultnyasilu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya,"gelu","relu","silu", dan sebagainya. - layer_norm_eps (
float, opsional, default 1e-06) — Epsilon dari layer normalizations di dalam residual blocks dan layer terakhir. - rms_norm_eps (
float, opsional, default 1e-05) — Epsilon dari normalisasi yang menutup time embeddings. - max_period (
float, opsional, default 10000.0) — Periode maksimum dari penanaman waktu sinusoidal, yang disimpan checkpoint sebagaifreqs. - flow_type (
str, opsional, default"lsd") — Objektif yang digunakan untuk melatih head, yang menentukan bagaimana head dikondisikan dan disampelkan."lsd"(Lagrangian self-distillation): dikondisikan pada waktu awal dan akhir dari langkah flow, disampelkan dengan langkah Euler dari noise Gaussian."drifting": tanpa kondisioning waktu, head memetakan noise ke latent dalam satu pemanggilan. - loss_weighting_hidden_size (
int, opsional, default 32) — Lebar MLP yang mempelajari penimbangan ketidakpastian dari istilah-istilah loss LSD berdasarkan waktu alir mereka (hanya untuk pelatihan). - loss_weighting_num_layers (
int, opsional, defaultnya 3) — Jumlah lapisan tersembunyi dari MLP tersebut.
Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari PocketTTSModel. Kelas ini digunakan untuk membuat model Pocket Tts berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari eustlb/pocket-tts
Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.
PocketTTSFeatureExtractor
kelas 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 )
Parameter
- feature_size (
int, opsional, default 1) — Jumlah channel. - sampling_rate (
int, opsional, default 24000) — Laju sampling di mana gelombang audio harus didigitalisasi, dinyatakan dalam hertz (Hz). - padding_value (
float, opsional, default 0.0) — Nilai yang digunakan untuk padding. - frame_size (
int, opsional, default 1920) — Jumlah sampel audio per frame laten dari audio tokenizer (yaituframe_sizemiliknya). - pad_to_multiple_of (
int, opsional, default 1920) — Pad audio menjadi kelipatan dari nilai ini; kelipatan dariframe_sizemenjaga setiap frame laten tetap utuh. - end_on_pause (
bool, opsional, defaultTrue) — Apakah mengakhiri setiap waveform tepat padapause_durationdetik keheningan: keheningan di akhir (frame yanganalysis_frame_durationdetik lebih darisilence_floor_dbdi bawah yang paling keras) dipotong,fade_out_durationdetik terakhir dari yang tersisa diredupkan, danpause_durationdetik nol ditambahkan. - pause_duration (
float, opsional, default 0.08) — Durasi keheningan yang ditambahkan olehend_on_pause, dalam detik. - fade_out_duration (
float, opsional, default 0.02) — Durasi fade-out yang diterapkan olehend_on_pausesebelum jeda, dalam detik. - silence_floor_db (
float, opsional, default 35.0) — Level di bawah frame analisis paling keras, dalam dB, di manaend_on_pausememperlakukan frame akhir sebagai keheningan. - analysis_frame_duration (
float, opsional, default 0.02) — Durasi frame yang diukur tingkatnya olehend_on_pause, dalam detik.
Membangun fitur ekstraktor Pocket TTS, yang menyiapkan waveform prompt suara untuk encoder tokenizer audio.
Setiap gelombang suara secara opsional diakhiri dengan jeda singkat (end_on_pause dari versi asli: prompt pelatihan berakhir di dalam jeda antara dua kata, prompt yang berhenti pada ucapan membuat model melanjutkannya, dan prompt yang berakhir pada keheningan panjang menunda permulaan), kemudian batch di-pad ke kanan hingga menjadi kelipatan ukuran frame tokenizer.
__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 )
Parameter
- audio (
np.ndarray,torch.Tensor,list[np.ndarray],list[torch.Tensor]) — Gelombang suara mono atau batch gelombang suara mono dari prompt suara. - sampling_rate (
int, opsional) — Laju sampling di mana inputaudiodisampelkan. Sangat disarankan untuk meneruskansampling_ratepada panggilan forward untuk mencegah kesalahan yang tidak terdeteksi. - end_on_pause (
bool, opsional) — Apakah mengakhiri setiap waveform pada jeda singkat, lihat docstring kelas. Defaultnya adalahself.end_on_pause. - padding (
bool,stror PaddingStrategy, optional, defaults toTrue) — Padding strategy of the batch, see pad(). - pad_to_multiple_of (
int, opsional) — Pad batch menjadi kelipatan dari nilai ini. Defaultnya adalahself.pad_to_multiple_of.
PocketTTSProcessor
kelas 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 )
Parameter
- feature_extractor (
PocketTTSFeatureExtractor) — Feature extractor adalah input yang wajib. - tokenizer (
TokenizersBackend) — Tokenizer adalah input yang wajib. - audio_tokenizer (
PocketTTSAudioTokenizerModel, opsional) — Codec: mengodekan audio menjadi latents, dan mendekodekan latents yang dihasilkan menjadi audio. - chat_template (
str) — Template Jinja untuk mengubah daftar pesan dalam chat menjadi string yang dapat ditokenisasi. - short_text_max_words (
int, opsional, default 4) — Teks dengan jumlah kata paling banyak sebesar nilai ini akan mendapatkanframes_after_eos_short_textframe setelah frame end-of-speech. - frames_after_eos_short_text (
int, opsional, default 4) — Jumlah frame yang dihasilkan setelah frame end-of-speech untuk teks pendek. - frames_after_eos (
int, opsional, default 2) — Jumlah frame yang dihasilkan setelah frame end-of-speech untuk teks yang lebih panjang. - fade_in_duration (
float, opsional, default 0.005) — Durasi dalam detik dari fade-in linear yang diterapkan pada awal setiap waveform yang didekodekan: status decoder yang baru dimulai dengan langkah kecil, terdengar sebagai klik.
Membangun PocketTTSProcessor yang membungkus feature extractor dan tokenizer menjadi satu processor.
PocketTTSProcessor menyediakan semua fungsionalitas dari PocketTTSFeatureExtractor dan TokenizersBackend. Lihat ~PocketTTSFeatureExtractor dan ~TokenizersBackend untuk informasi lebih lanjut.
__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'> )
Parameter
- text (
strataulist[str]) — Prompt yang dirender oleh apply_chat_template(). - audio (
np.ndarray,torch.Tensor, atau daftar dari keduanya, opsional) — Bentuk gelombang dari percakapan, mono pada 24 kHz, dalam urutan percakapan: setiap suara, dan dalam pelatihan setiap target. - audio_prompt_latents (
list[torch.Tensor], opsional) — Suara yang sudah dihitung sebelumnya, satu tensor(num_frames, latent_dim)per placeholder suara, alih-alih waveform. - labels (
list[torch.Tensor], opsional) — Target yang sudah dihitung sebelumnya (pelatihan), satu tensor(num_frames, latent_dim)per placeholder target, alih-alih waveform. - end_on_pause (
bool, kwargs, opsional) — Apakah mengakhiri setiap waveform prompt suara pada jeda singkat, seperti yang dilakukan versi asli sebelum mengkloning suara. Nilai defaultnya adalahend_on_pausedari feature extractor. - return_tensors (
stratau TensorType, opsional) — Jika diset, akan mengembalikan tensor dari framework tertentu. Nilai yang dapat diterima adalah:'pt': Mengembalikan objek PyTorchtorch.Tensor.'np': Mengembalikan objek NumPynp.ndarray.
- **kwargs (ProcessingKwargs, opsional) — Opsi pemrosesan tambahan untuk setiap modalitas (teks, gambar, video, audio). Parameter spesifik model tercantum di atas; lihat kelas TypedDict untuk daftar lengkap argumen yang didukung.
split_text
< source >( text: strmax_tokens: int = 50 )
Memecah text menjadi potongan yang selaras dengan kalimat, dengan panjang maksimal max_tokens token, seperti pada split_into_best_sentences asli: teks yang disiapkan dipotong setelah akhir kalimat (bukan pada titik desimal), kalimat yang lebih panjang dari max_tokens dipotong setelah akhir klausa, dan potongan-potongan tersebut dikelompokkan secara serakah. Setiap potongan dimaksudkan sebagai satu percakapan dalam batch.
decode
< source >( audio_latents: torch.Tensoraudio_latents_mask: torch.Tensor | None = None )
Parameter
- audio_latents (
torch.Tensordengan bentuk(batch_size, num_frames, latent_dim)atau(num_frames, latent_dim)) — Latents yang dikembalikan olehgenerate(PocketTTSGenerateOutput.audio_latents), yang didekodekan sebagai satu batch, atau latents dari satu sampel. - audio_latents_mask (
torch.Tensordengan bentuk(batch_size, num_frames), opsional) — Mask untuk frame dari setiap sampel (PocketTTSGenerateOutput.audio_latents_mask). Tanpa mask ini, setiap baris akan didekodekan pada panjang penuh.
Mendekodekan latens yang dihasilkan menjadi waveform dengan audio tokenizer, dan memudarkan fade_in_duration detik pertama dari setiap input, seperti yang dilakukan versi aslinya.
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 )
Menulis gelombang suara yang dihasilkan ke file WAV.
audio (torch.Tensor, np.ndarray atau daftar dari keduanya):
Gelombang suara, sebagaimana dikembalikan oleh decode().
saving_path (str, Path atau daftar dari keduanya):
Satu path untuk setiap gelombang suara.
sampling_rate (int, opsional):
Laju sampling dari gelombang suara, secara default menggunakan laju sampling dari feature extractor (audio tokenizer).
PocketTTSModel
kelas transformers.PocketTTSModel
< source >( config: PocketTTSConfig )
Parameter
- config (PocketTTSConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Backbone Pocket TTS: transformer kausal di atas satu aliran yang terdiri dari prompt suara, token teks, dan latens audio, yang mengembalikan hidden states ternormalisasi. Prompt suara dan latens audio adalah latens dari tokenizer audio, yang dipegang oleh processor.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
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)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- audio_prompt_latents (
torch.Tensordengan bentuk(batch_size, num_prompt_frames, latent_dim), opsional) — Latent prompt suara dari audio tokenizer (dikonversi oleh processor, atau darivoices/checkpoint), di-pad ke kanan hingga panjang suara terpanjang dalam batch, dan disebar ke posisiaudio_prompt_token_id. - audio_prompt_latents_mask (
torch.Tensordengan bentuk(batch_size, num_prompt_frames), opsional) — Mask dari frame suara (1) berbanding padding (0) dalamaudio_prompt_latents. - audio_latents (
torch.Tensordengan bentuk(batch_size, num_latents, latent_dim), opsional) — Latent audio ternormalisasi, yang tersebar ke posisiaudio_latent_token_id. Posisiaudio_bos_token_idsebelumnya, yang menutup prompt dan dari mana frame pertama dihasilkan, selalu mendapatkan latent BOS yang dipelajari. - audio_latents_mask (
torch.Tensordengan bentuk(batch_size, num_latents), opsional) — Mask untuk latents pada setiap baris (1) dibandingkan dengan padding (0) diaudio_latents, ketika baris-baris tersebut memiliki jumlah posisi latent yang berbeda (pelatihan). - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values).
Mengembalikan
BaseModelOutputWithPast atau tuple(torch.Tensor)
A BaseModelOutputWithPast atau tuple dari
torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (PocketTTSConfig) dan input.
Metode forward dari PocketTTSModel menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Urutan hidden-states pada keluaran lapisan terakhir model.Jika
past_key_valuesdigunakan, hanya hidden-state terakhir dari sekuens dengan bentuk(batch_size, 1, hidden_size)yang dioutput.past_key_values (
Cache, opsional, dikembalikan saatuse_cache=Truedilewatkan atau saatconfig.use_cache=True) — Ini adalah instance Cache. Untuk detail lebih lanjut, lihat panduan kv cache kami.Berisi hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention, dan secara opsional jika
config.is_encoder_decoder=Truedi blok cross-attention) yang dapat digunakan (lihat inputpast_key_values) untuk mempercepat decoding berurutan.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
PocketTTSForConditionalGeneration
kelas transformers.PocketTTSForConditionalGeneration
< source >( config: PocketTTSConfig )
Parameter
- config (PocketTTSConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.
Model text-to-speech Pocket TTS: tulang punggung, kepala aliran yang mengambil satu laten audio per langkah, dan kepala akhir ucapan. Model ini menghasilkan laten tokenizer audio, yang kemudian didekodekan oleh prosesor menjadi audio 24 kHz.
Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)
Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.
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)
Parameter
- input_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks token dari urutan input dalam kosakata. Padding akan diabaikan secara default.Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.
- audio_prompt_latents (
torch.Tensordengan bentuk(batch_size, num_prompt_frames, latent_dim), opsional) — Latent prompt suara dari audio tokenizer, di-pad ke kanan, dan tersebar ke posisiaudio_prompt_token_id. - audio_prompt_latents_mask (
torch.Tensordengan bentuk(batch_size, num_prompt_frames), opsional) — Mask dari frame suara (1) berbanding padding (0) dalamaudio_prompt_latents. - audio_latents (
torch.Tensordengan bentuk(batch_size, num_latents, latent_dim), opsional) — Latent audio ternormalisasi, tersebar ke posisiaudio_latent_token_id. - labels (
torch.Tensordengan bentuk(batch_size, num_frames, latent_dim), opsional) — Latent target dari audio tokenizer (pelatihan), dengan padding kanan. Prompt pada setiap baris diakhiri dengan posisiaudio_bos_token_idyang diikuti oleh satu posisiaudio_latent_token_idper frame: model memberikan target yang dinormalisasi (teacher forcing), menerapkan flow loss pada output dari BOS dan semua frame kecuali frame terakhir, yang memprediksi frame-frame tersebut, serta menerapkan end-of-speech loss pada semuanya, dengan yang terakhir merupakan akhir ucapan. - labels_mask (
torch.Tensordengan bentuk(batch_size, num_frames), opsional) — Mask dari frame target setiap baris (1) dibandingkan dengan padding (0) dilabels. - attention_mask (
torch.Tensordengan bentuk(batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari[0, 1]:- 1 untuk token yang tidak dimasker,
- 0 untuk token yang dimasker.
- position_ids (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) — Indeks posisi token dari setiap urutan input dalam position embeddings. Dipilih dalam rentang[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, opsional) — Hidden-states yang sudah dihitung sebelumnya (key dan values di blok self-attention dan di blok cross-attention) yang dapat digunakan untuk mempercepat decoding berurutan. Ini biasanya terdiri daripast_key_valuesyang dikembalikan oleh model pada tahap decoding sebelumnya, ketikause_cache=Trueatauconfig.use_cache=True.Hanya instance Cache yang diizinkan sebagai input, lihat panduan kv cache kami. Jika tidak ada
past_key_valuesyang diteruskan, DynamicCache akan diinisialisasi secara default.Model akan menghasilkan format cache yang sama dengan yang diberikan sebagai input.
Jika
past_key_valuesdigunakan, pengguna diharapkan hanya memasukkaninput_idsyang belum diproses (yang tidak memiliki state past key value yang diberikan ke model ini) dengan bentuk(batch_size, unprocessed_length)alih-alih semuainput_idsdengan bentuk(batch_size, sequence_length). - inputs_embeds (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskaninput_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeksinput_idsmenjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model. - use_cache (
bool, opsional) — Jika diset keTrue, state kunci-nilaipast_key_valuesakan dikembalikan dan dapat digunakan untuk mempercepat decoding (lihatpast_key_values).
Mengembalikan
PocketTTSOutputWithPast atau tuple(torch.Tensor)
PocketTTSOutputWithPast atau tuple dari
torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai
elemen tergantung pada konfigurasi (PocketTTSConfig) dan input.
Metode forward dari PocketTTSForConditionalGeneration menimpa metode khusus __call__.
Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance
Modulesetelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.
loss (
torch.Tensordengan bentuk(), opsional, dikembalikan saatlabelsdiberikan) — Loss pelatihan: loss aliran LSD dari latens target ditambahconfig.eos_loss_weightkali loss end-of-speech.logits (
torch.Tensordengan bentuk(batch_size, sequence_length, 1)) — Logits akhir ucapan, satu per posisi.past_key_values (
Cache, opsional, dikembalikan saatuse_cache=Truedilewatkan atau saatconfig.use_cache=True) — Ini adalah instance Cache. Untuk detail lebih lanjut, lihat panduan kv cache kami.Berisi hidden-states yang telah dihitung sebelumnya (key dan values di blok self-attention) yang dapat digunakan (lihat input
past_key_values) untuk mempercepat decoding berurutan.hidden_states (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_hidden_states=Truedilewatkan atau saatconfig.output_hidden_states=True) — Tuple daritorch.Tensor(satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk(batch_size, sequence_length, hidden_size).Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.
attentions (
tuple(torch.Tensor), opsional, dikembalikan saatoutput_attentions=Truedilewatkan atau saatconfig.output_attentions=True) — Tuple daritorch.Tensor(satu untuk setiap layer) dengan bentuk(batch_size, num_heads, sequence_length, sequence_length).Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).
last_hidden_state (
torch.Tensordengan bentuk(batch_size, sequence_length, hidden_size)) — Hidden states yang dinormalisasi dari backbone, yang menjadi kondisi bagi flow head.
Contoh:
>>> 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 )
Parameter
- inputs (
torch.LongTensordengan bentuk(batch_size, sequence_length), opsional) —input_idsyang disiapkan oleh PocketTTSProcessor. Dapat juga dikirim sebagaiinput_ids=. - kwargs (
dict[str, Any], opsional) —attention_mask, prompt suara (audio_prompt_latentsdanaudio_prompt_latents_mask, atau cache dari prefix suara sebagaipast_key_values, suara bawaan, dengan prompt hanya teks),frames_after_eosdari processor, parameter generasi (do_sample,temperature,max_new_tokens, …), sertanum_flow_steps,eos_thresholddanmin_frames_before_eosyang spesifik untuk Pocket TTS, yang secara default mengikuti konfigurasi generasi.
Menghasilkan ucapan. Metode ini menimpa generate() untuk mengatur nilai default max_new_tokens menjadi anggaran frame dari runtime asli, yaitu ceil((num_text_tokens / 3 + 2) * frame_rate) untuk teks terpanjang dalam batch. Hal lainnya melewati hook generasi reguler.
sample_latent
< source >( condition: Tensornoise: Tensornum_flow_steps: int ) → torch.Tensor of shape (batch_size, latent_dim)
Parameter
- condition (
torch.Tensordengan bentuk(batch_size, hidden_size)) — State tersembunyi backbone dari posisi yang sedang dihasilkan. - noise (
torch.Tensordengan bentuk(batch_size, latent_dim)) — Derau Gaussian yang diskalakan dengansqrt(temperature), atau nol. - num_flow_steps (
int) — Jumlah langkah Euler dari sampler LSD (diabaikan oleh drifting head, yang hanya melakukan satu panggilan).
Mengembalikan
torch.Tensor dengan bentuk (batch_size, latent_dim)
laten yang disampelkan, dalam ruang ternormalisasi.
Mengambil sampel laten berikutnya dari noise dengan flow head.
Memetakan latents dari ruang ternormalisasi flow head ke ruang audio tokenizer.
PocketTTSGenerateOutput
kelas 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 )
Parameter
- sequences (
torch.LongTensordengan bentuk(batch_size, sequence_length)) — ID token prompt diikuti oleh satuaudio_latent_token_idper frame yang dihasilkan. Audio-nya sendiri ada diaudio_latents. - scores (
tuple(torch.Tensor)opsional, dikembalikan saatoutput_scores=True) — Logit akhir ucapan untuk setiap frame yang dihasilkan, satu tensor dengan bentuk(batch_size,)per frame. - logits (
tuple(torch.Tensor)opsional, dikembalikan saatoutput_logits=True) — Sama sepertiscores: Pocket TTS tidak memiliki kosakata, sehingga tidak ada yang perlu diproses di antara keduanya. - attentions (
tuple(tuple(torch.Tensor)), opsional, dikembalikan saatoutput_attentions=True) — Tuple (satu elemen untuk setiap frame yang dihasilkan) dari tuple (satu elemen untuk setiap layer) daritorch.Tensordengan bentuk(batch_size, num_heads, generated_length, sequence_length). - hidden_states (
tuple(tuple(torch.Tensor)), opsional, dikembalikan saatoutput_hidden_states=True) — Tuple (satu elemen untuk setiap frame yang dihasilkan) dari tuple (satu elemen untuk setiap layer) daritorch.Tensordengan bentuk(batch_size, generated_length, hidden_size). - past_key_values (
Cache, opsional, dikembalikan saatuse_cache=True) — Kache key/value dari backbone pada akhir proses generasi. - audio_latents (
torch.Tensordengan bentuk(batch_size, num_frames, latent_dim)) — Latents yang dihasilkan, dalam ruang latents dari audio tokenizer, dengan padding nol di sisi kanan melewati frame milik masing-masing sampel. PocketTTSProcessor.decode() mengubahnya menjadi waveform. - audio_latents_mask (
torch.LongTensordengan bentuk(batch_size, num_frames)) — Mask untuk frame dari setiap sampel (1), termasuk frame end-of-speech dan frame setelahnya, berlawanan dengan padding (0).
Output dari PocketTTSForConditionalGeneration.generate.