Transformers documentation
Pocket TTS
이 모델은 2026-10-20에 Hugging Face Transformers에 기여되었습니다.
Pocket TTS
개요
Pocket TTS는 Kyutai의 1억 파라미터 텍스트-음성 변환 모델로, CPU에서 실시간보다 빠르게 동작하는 Continuous Audio Language Model입니다. Causal transformer가 one-step flow head를 통해 프레임당(12.5 Hz) 하나의 연속 오디오 latent를 출력하고, end-of-speech head가 언제 생성을 중단할지 결정합니다.
프로세서에는 Pocket TTS 오디오 토크나이저가 포함되어 있습니다. 이는 Mimi 기반 코덱으로, 음성 프롬프트를 인코딩하고 생성된 잠긴 변수(latents)를 24 kHz 오디오로 디코딩합니다. 사전 정의된 목소리는 KV 캐시(voices/)로 제공됩니다.
두 가지 flow head가 공개되었습니다: Lagrangian self-distillation(flow_type="lsd", 기본값)과 drifting(flow_type="drifting", english_drifting_26-09). Fine-tuning을 지원하며, Training을 참고하세요.
이 모델은 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는 텍스트 길이에 기반한 예산이 기본값이며, end-of-speech logit이eos_threshold를 초과한 직후 생성이 중단됩니다.do_sample=False는 temperature 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. 사전 계산된 latents: latents가 프로세서에 전달되는 빈 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"]
)Drifting checkpoint
같은 사용법이며, 체크포인트 자체의 목소리를 사용합니다:
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 턴에 대상 오디오를 배치합니다. 프로세서가 그 latents를 labels로 반환하고, 모델은 원래의 loss(LSD flow loss에 config.eos_loss_weight를 곱한 end-of-speech loss를 더한 값)를 반환합니다. 음성 프롬프트는 일반적으로 동일한 발화의 시작 부분입니다.
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()- 음성을 캐시가 아닌 녹음이나 latents로 제공하세요.
- Classifier-free guidance를 사용하려면
user턴의audio또는text항목을 제거합니다(원본에서는 각각 0.2의 확률로 제거합니다). - 사전 계산된 latents는
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 warmup steps 후 일정, 가중치의 EMA (decay 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], 선택) — 백본의 hidden state에서 각 latent를 샘플링하는 flow head의 config입니다. - vocab_size (
int, 선택 사항, 기본값4004) — 모델의 어휘 크기입니다.input_ids로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다. - hidden_size (
int, 선택 사항, 기본값1024) — 숨겨진 표현의 차원입니다. - num_hidden_layers (
int, 선택 사항, 기본값6) — Transformer decoder의 숨겨진 레이어 수입니다. - num_attention_heads (
int, 선택 사항, 기본값16) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다. - num_key_value_heads (
int, 선택 사항) — Grouped Query Attention 구현에 사용할 key_value 헤드 수입니다.num_key_value_heads=num_attention_heads인 경우 모델은 Multi Head Attention(MHA)을 사용하고,num_key_value_heads=1인 경우 모델은 Multi Query Attention(MQA)을 사용하며, 그 외에는 GQA가 사용됩니다. 멀티 헤드 체크포인트를 GQA 체크포인트로 변환할 때, 각 그룹의 key 및 value 헤드는 해당 그룹 내 모든 원래 헤드를 meanpooling하여 구성해야 합니다. 자세한 내용은 이 논문을 확인하세요. 지정되지 않으면num_attention_heads가 기본값으로 사용됩니다. - head_dim (
int, 선택 사항) — Attention head의 차원입니다. 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) — backbone의 layer normalization에 사용되는 epsilon 값입니다. - attention_bias (
bool, 선택 사항, 기본값False) — 자기 주의(self-attention) 시 query, key, value 및 출력 투영 계층에 bias를 사용할지 여부입니다. - attention_dropout (
float, 선택 사항, 기본값0.0) — Attention 확률에 적용할 dropout 비율입니다. - max_position_embeddings (
int, 선택 사항, 기본값8192) — 이 모델이 사용될 수 있는 최대 시퀀스 길이입니다. - rope_parameters (
Union[~modeling_rope_utils.RopeParameters, dict], 선택) — RoPE 임베딩의 구성 매개변수를 포함하는 사전입니다. 사전에는rope_theta값이 포함되어야 하며, 더 긴max_position_embeddings로 RoPE를 사용하려는 경우 스케일링에 사용되는 매개변수를 선택적으로 포함할 수 있습니다. - latent_dim (
int, 선택 사항, 기본값 32) — 백본이 입력으로 받는 오디오 레이턴트(audio_prompt_latents,audio_latents)의 차원입니다. flow head와 오디오 토크나이저의latent_dim과 동일합니다. - pad_token_id (
int, 선택 사항, 기본값3) — 어휘에서 패딩에 사용되는 토큰 ID입니다. - bos_token_id (
int, 선택 사항) — 어휘에서 스트림 시작에 사용되는 토큰 ID입니다. - eos_token_id (
int, 선택 사항) — 어휘에서 스트림 종료에 사용되는 토큰 id입니다. - audio_prompt_token_id (
int, 선택 사항, 기본값 4000) —input_ids에서 음성 프롬프트 프레임의 플레이스홀더 토큰 id입니다. - audio_latent_token_id (
int, 선택 사항, 기본값 4001) —input_ids에서 오디오 latent 위치를 나타내는 placeholder token id입니다. - audio_prompt_bos_token_id (
int, 선택 사항, 기본값 4002) — 음성 프롬프트 앞에 배치되는 토큰 ID입니다. 이 토큰의 임베딩은 원래 모델이 음성 앞에 붙이는 학습된 벡터입니다. - audio_bos_token_id (
int, 선택 사항, 기본값 4003) — 프롬프트를 닫는 첫 번째 오디오 위치의 토큰 id입니다. 학습된 BOS 잠재를 포함하며, 여기서 첫 번째 프레임이 생성됩니다. - frame_rate (
float, 선택 사항, 기본값 12.5) — 초당 오디오 오디오 latent 수:generate는 이 값에서 기본 프레임 예산을 유도합니다. - initializer_range (
float, 선택 사항, 기본값0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다. - use_cache (
bool, 선택 사항, 기본값True) — 모델이 마지막 key/values attention을 반환할지 여부입니다(모든 모델에서 사용되지 않음).config.is_decoder=True인 경우 또는 모델이 decoder-only 생성 모델인 경우에만 관련이 있습니다. - eos_loss_weight (
float, 선택 사항, 기본값 0.1) — 학습 손실에서 end-of-speech 손실의 가중치입니다. - flow_loss_num_samples (
int, 선택 사항, 기본값 4) — flow loss에서 대상 프레임당 노이즈 추출 횟수입니다. - lsd_distill_probability (
float, 선택 사항, 기본값 0.25) — LSD 손실의 자기 증류(self-distillation) 항을 계산할 확률(기대 손실을 유지하도록 가중치가 재조정됨)입니다. 1이면 모든 학습 단계에서 계산합니다. - lsd_diagonal_weight (
float, 선택 사항, 기본값 0.75) — LSD 손실의 대각(즉각적 흐름) 항의 가중치입니다. 자기 증류(self-distillation) 항은 나머지 부분을 가중합니다. - lsd_time_logit_mean (
float, 선택 사항, 기본값 0.4) — LSD 손실이 추출하는 플로우 시간의 logit-normal 분포 평균입니다. - lsd_time_logit_std (
float, 선택 사항, 기본값 1.0) — LSD 손실이 추출하는 플로우 시간의 logit-normal 분포의 표준 편차입니다. - latent_stats_ema_steps (
int, 선택 사항, 기본값 1000) —latent_mean과latent_std가 대상 latent의 지수 이동 평균을 따르는 초기 학습 단계 수입니다. 0으로 설정하면 고정됩니다. - latent_stats_ema_decay (
float, 선택 사항, 기본값 0.999) — 이동 평균의 감쇠율입니다.
PocketTTSModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Pocket Tts 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 eustlb/pocket-tts와 유사한 구성이 생성됩니다.
Configuration 객체는 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 decoder의 숨겨진 레이어 수입니다. - latent_dim (
int, 선택 사항, 기본값 32) — 헤드가 예측하는 연속 오디오 잠재 벡터의 차원(오디오 토크나이저의 잠재 차원). - condition_dim (
int, 선택 사항, 기본값 1024) — 헤드가 조건부로 사용하는 백본 히든 상태의 차원(백본의hidden_size). - frequency_embedding_size (
int, 선택 사항, 기본값 256) — 플로우 시간의 사인oidal 임베딩 크기입니다. - 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"(Lagrangian self-distillation): 플로우 단계의 시작 및 종료 시간에 조건부 설정되며, 가우시안 노이즈에서 Euler 스텝으로 샘플링됩니다."drifting": 시간 조건부 설정이 없으며, 해드가 한 번의 호출로 노이즈를 잠재 변수로 매핑합니다. - loss_weighting_hidden_size (
int, 선택 사항, 기본값 32) — LSD 손실 항의 불확실성 가중치를 그 흐름 시간(flow times)에서 학습하는 MLP의 폭(훈련 전용). - loss_weighting_num_layers (
int, 선택 사항, 기본값 3) — 해당 MLP의 숨겨진 레이어 수입니다.
PocketTTSModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Pocket Tts 모델을 인스턴스화하고 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 eustlb/pocket-tts와 유사한 구성이 생성됩니다.
Configuration 객체는 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) — 오디오 웨이브포름을 디지털화할 때 사용할 샘플링 레이트(헤르츠(Hz) 단위). - padding_value (
float, 선택 사항, 기본값 0.0) — 패딩에 사용되는 값입니다. - frame_size (
int, 선택 사항, 기본값 1920) — 오디오 토크나이저의 각 잠재 프레임당 오디오 샘플 수(해당frame_size). - pad_to_multiple_of (
int, 선택 사항, 기본값 1920) — 오디오를 이 값의 배수로 패딩합니다.frame_size의 배수로 설정하면 모든 latent 프레임이 온전히 유지됩니다. - end_on_pause (
bool, 선택 사항, 기본값True) — 각 웨이브폼을 정확히pause_duration초의 무음으로 끝낼지 여부입니다. 가장 큰 진폭보다silence_floor_db이하인 후행 무음(analysis_frame_duration초 프레임)이 잘려 나가고, 남은 부분의 마지막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) — 가장 큰 분석 프레임 대비 dB 단위로, 이 수준 이하의 후행 프레임을end_on_pause가 무음으로 처리합니다. - analysis_frame_duration (
float, 선택 사항, 기본값 0.02) —end_on_pause가 측정하는 프레임의 길이(초 단위).
음성 프롬프트 웨이브폼을 오디오 토크나이저의 인코더를 위해 준비하는 Pocket TTS feature extractor를 생성합니다.
각 웨이브폼은 짧은 휴지로 끝날 수 있습니다(원본의 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입력이 샘플링된 샘플링 레이트입니다. 조용한 오류를 방지하려면 forward 호출 시sampling_rate를 전달하는 것이 강력히 권장됩니다. - 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, 선택 사항) — 코덱: 오디오를 latent로 인코딩하고, 생성된 latent를 오디오로 디코딩합니다. - 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) — 더 긴 텍스트를 위해 end-of-speech 프레임 이후에 생성할 프레임 수입니다. - fade_in_duration (
float, 선택 사항, 기본값 0.005) — 각 디코딩된 웨이브폼의 시작 부분에 적용되는 선형 페이드 인의 지속 시간(초)입니다. 새로운 디코더 상태는 작은 스텝으로 시작하여 클릭 소리로 들립니다.
feature extractor와 tokenizer를 단일 processor로 감싸는 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 kHz 모노이며, 대화 순서대로 각 음성, 학습 시에는 각 타겟을 포함합니다. - audio_prompt_latents (
list[torch.Tensor], 선택) — 웨이브폼 대신, 각 음성 플레이스홀더마다(num_frames, latent_dim)텐서로 구성된 사전 계산된 음성. - labels (
list[torch.Tensor], 선택 사항) — 파형 대신, 각 target placeholder마다(num_frames, latent_dim)텐서 하나씩을 가진 사전 계산된 target(학습용)입니다. - end_on_pause (
bool, kwargs, 선택) — 원본이 음성 복제 전에 짧은 휴지를 넣는 것처럼, 각 음성 프롬프트 웨이브폼을 짧은 휴지로 끝낼지 여부입니다. 기본값은 feature extractor의end_on_pause입니다. - return_tensors (
str또는 TensorType, 선택 사항) — 설정된 경우, 특정 프레임워크의 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:'pt': PyTorchtorch.Tensor객체를 반환합니다.'np': NumPynp.ndarray객체를 반환합니다.
- **kwargs (ProcessingKwargs, 선택) — 각 모달리티(텍스트, 이미지, 비디오, 오디오)에 대한 추가 처리 옵션입니다. 모델별 매개변수는 위에 나열되어 있으며, 지원되는 인수의 전체 목록은 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, shape(batch_size, num_frames, latent_dim)또는(num_frames, latent_dim)) —generate가 반환하는 latents(PocketTTSGenerateOutput.audio_latents)를 한 배치로 디코딩한 값, 또는 한 샘플의 latents입니다. - audio_latents_mask (
torch.Tensor, shape(batch_size, num_frames), 선택 사항) — 각 샘플의 프레임 마스크(PocketTTSGenerateOutput.audio_latents_mask). 이 값이 없으면 모든 행이 전체 길이로 디코딩됩니다.
오디오 토크나이저를 사용하여 생성된 latents를 waveforms로 디코딩하고, 원본과 동일하게 각 waveforms의 처음 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, 선택 사항):
웨이브폼의 샘플링 레이트입니다. 기본적으로 feature extractor(audio tokenizer)의 값을 사용합니다.
PocketTTSModel
클래스 transformers.PocketTTSModel
< source >( config: PocketTTSConfig )
매개변수
- config (PocketTTSConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
Pocket TTS의 백본: 음성 프롬프트, 텍스트 토큰, 오디오 레전트로 구성된 단일 스트림에 대한 인과적 transformer로, 정규화된 hidden states를 반환합니다. 음성 프롬프트와 오디오 레전트는 프로세서가 보유하는 오디오 토크나이저의 레전트입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 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), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- audio_prompt_latents (
torch.Tensor, shape(batch_size, num_prompt_frames, latent_dim), 선택 사항) — 오디오 토크나이저의 음성 프롬프트 잠재 변수(프로세서에 의해 인코딩되거나 체크포인트의voices/에서 가져옴)입니다. 배치 내 가장 긴 음성까지 오른쪽 패딩을 적용하고,audio_prompt_token_id위치에 분산 배치됩니다. - audio_prompt_latents_mask (
torch.Tensor, shape(batch_size, num_prompt_frames), 선택 사항) —audio_prompt_latents에서 음성 프레임(1)과 패딩(0)을 구분하는 마스크입니다. - audio_latents (
torch.Tensor, shape(batch_size, num_latents, latent_dim), 선택 사항) —audio_latent_token_id위치에 분산된 정규화된 오디오 latents입니다. 그 앞의audio_bos_token_id위치는 프롬프트를 닫고 첫 번째 프레임이 생성되는 곳으로, 항상 학습된 BOS latent가 할당됩니다. - audio_latents_mask (
torch.Tensor, shape(batch_size, num_latents), 선택 사항) — 행마다 latent 위치의 수가 다른 경우(학습 시),audio_latents에서 각 행의 latents(1)와 padding(0)을 구분하는 마스크입니다. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- position_ids (
torch.LongTensor의 shape(batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(self-attention 블록과 cross-attention 블록의 key 및 value). 일반적으로 이는past_key_values디코딩의 이전 단계에서 모델이 반환한use_cache=True또는config.use_cache=True.입력으로 Cache 인스턴스만 허용되며, kv cache 가이드를 참고하세요.
past_key_values가 전달되지 않으면 기본적으로 DynamicCache가 초기화됩니다.모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.
past_key_values를 사용하는 경우, 이 모델에 과거 키 값 상태가 제공되지 않은input_ids만 입력해야 하며, 이때의 shape은(batch_size, unprocessed_length)입니다. shape이(batch_size, sequence_length)인 전체input_ids를 입력하지 않습니다. - inputs_embeds (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택) —input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다input_ids인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조).
반환값
BaseModelOutputWithPast 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 BaseModelOutputWithPast (return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(PocketTTSConfig)과 입력에 따라 다양한 요소를 포함합니다.
PocketTTSModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.past_key_values가 사용되면,(batch_size, 1, hidden_size)형태의 시퀀스의 마지막 hidden-state만 출력됩니다.past_key_values (
Cache, 선택 사항,use_cache=True가 전달되었거나config.use_cache=True인 경우 반환됨) — Cache 인스턴스입니다. 자세한 내용은 kv cache 가이드를 참고하세요.순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록의 key와 value, 그리고
config.is_encoder_decoder=True인 경우 크로스 어텐션 블록의 key와 value)를 포함합니다(입력past_key_values참조).hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
PocketTTSForConditionalGeneration
클래스 transformers.PocketTTSForConditionalGeneration
< source >( config: PocketTTSConfig )
매개변수
- config (PocketTTSConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
Pocket TTS 텍스트-음성 변환 모델: 백본, 각 단계마다 오디오 잠재 변수 하나를 샘플링하는 플로우 헤드, 그리고 음성 종료 헤드. 이 모델은 오디오 토크나이저 잠재 변수를 생성하며, 프로세서가 이를 24 kHz 오디오로 디코딩합니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 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), 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- audio_prompt_latents (
torch.Tensor, shape(batch_size, num_prompt_frames, latent_dim), 선택 사항) — 오디오 토크나이저의 음성 프롬프트 라텐트입니다. 오른쪽으로 패딩되어audio_prompt_token_id위치에 분산 배치됩니다. - audio_prompt_latents_mask (
torch.Tensor, shape(batch_size, num_prompt_frames), 선택 사항) —audio_prompt_latents에서 음성 프레임(1)과 패딩(0)을 구분하는 마스크입니다. - audio_latents (
torch.Tensor, shape(batch_size, num_latents, latent_dim), 선택 사항) —audio_latent_token_id위치에 분산된 정규화된 오디오 latents입니다. - labels (
torch.Tensor, shape(batch_size, num_frames, latent_dim), 선택 사항) — 오디오 토크나이저의 대상(latent) 값(학습용)으로, 오른쪽에 패딩이 적용됩니다. 각 행의 프롬프트는audio_bos_token_id위치로 끝나고, 프레임마다 하나의audio_latent_token_id위치가 뒤따릅니다. 모델은 정규화된 대상 값(teacher forcing)을 입력으로 사용하고, BOS와 마지막 프레임을 제외한 모든 프레임의 출력에 flow loss를 적용하여 프레임을 예측하며, 모든 프레임에 end-of-speech loss를 적용합니다. 여기서 마지막 프레임은 말의 끝을 나타냅니다. - labels_mask (
torch.Tensor, shape(batch_size, num_frames), 선택 사항) —labels에서 각 행의 대상 프레임(1)과 패딩(0)을 구분하는 마스크입니다. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- position_ids (
torch.LongTensor의 shape(batch_size, sequence_length), , 선택 사항) — 위치 임베딩에서 각 입력 시퀀스 토큰의 위치 인덱스. 범위[0, config.n_positions - 1]. - past_key_values (
~cache_utils.Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(self-attention 블록과 cross-attention 블록의 key 및 value). 일반적으로 이는past_key_values디코딩의 이전 단계에서 모델이 반환한use_cache=True또는config.use_cache=True.입력으로 Cache 인스턴스만 허용되며, kv cache 가이드를 참고하세요.
past_key_values가 전달되지 않으면 기본적으로 DynamicCache가 초기화됩니다.모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.
past_key_values를 사용하는 경우, 이 모델에 과거 키 값 상태가 제공되지 않은input_ids만 입력해야 하며, 이때의 shape은(batch_size, unprocessed_length)입니다. shape이(batch_size, sequence_length)인 전체input_ids를 입력하지 않습니다. - inputs_embeds (
torch.Tensor, shape(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)과 입력에 따라 다양한 요소를 포함합니다.
PocketTTSForConditionalGeneration의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(), 선택 사항,labels가 전달될 때 반환됨) — 학습 손실: 대상 latents의 LSD flow loss에config.eos_loss_weight를 곱한 end-of-speech loss를 더한 값입니다.logits (
torch.Tensor, shape(batch_size, sequence_length, 1)) — 각 위치별 음성 종료 logits.past_key_values (
Cache, 선택 사항,use_cache=True가 전달되었거나config.use_cache=True인 경우 반환됨) — Cache 인스턴스입니다. 자세한 내용은 kv cache 가이드를 참고하세요.순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록의 key와 value)를 포함합니다(입력
past_key_values참조).hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩 출력 1개 + 각 레이어의 출력 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.
attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.
last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size)) — flow head를 조건화하는 backbone의 정규화된 hidden states입니다.
예:
>>> 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, shape(batch_size, sequence_length), 선택 사항) — PocketTTSProcessor로 준비된input_ids입니다.input_ids=로 전달할 수도 있습니다. - kwargs (
dict[str, Any], 선택) —attention_mask, 음성 프롬프트(audio_prompt_latents와audio_prompt_latents_mask, 또는 텍스트만 포함된 프롬프트와 함께 제공되는 음성들의past_key_values캐시), 프로세서에서 가져온frames_after_eos, 생성 매개변수(do_sample,temperature,max_new_tokens, …), 그리고 Pocket TTS 전용num_flow_steps,eos_threshold,min_frames_before_eos입니다. 기본값은 생성 설정에서 가져옵니다.
음성을 생성합니다. 이 메서드는 generate()를 오버라이드하여 max_new_tokens의 기본값을 원래 런타임의 프레임 버짓인, 배치 내 가장 긴 텍스트에 대해 ceil((num_text_tokens / 3 + 2) * frame_rate)로 설정합니다. 그 외 모든 처리는 일반적인 생성 훅을 통해 수행됩니다.
sample_latent
< source >( condition: Tensornoise: Tensornum_flow_steps: int ) → torch.Tensor of shape (batch_size, latent_dim)
매개변수
- condition (
torch.Tensor, shape(batch_size, hidden_size)) — 생성 중인 위치의 Backbone hidden state입니다. - noise (
torch.Tensor, shape(batch_size, latent_dim)) —sqrt(temperature)로 스케일링된 가우시안 노이즈 또는 영(zero) 값. - num_flow_steps (
int) — LSD 샘플러의 Euler 단계 수입니다(drifting head는 한 번만 호출하므로 무시됩니다).
반환값
torch.Tensor, shape (batch_size, latent_dim)
정규화된 공간에서의 샘플링된 잠재 변수
noise에서 flow head를 사용하여 다음 latent를 샘플링합니다.
Flow head의 정규화된 공간에서 오디오 토크나이저의 공간으로 latents를 매핑합니다.
PocketTTSGenerateOutput
class 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, shape(batch_size, sequence_length)) — 프롬프트 토큰 ID 뒤에 생성된 프레임마다audio_latent_token_id가 하나씩 이어집니다. 실제 오디오 데이터는audio_latents에 있습니다. - scores (
tuple(torch.Tensor)선택,output_scores=True일 때 반환됨) — 생성된 각 프레임의 end-of-speech logit으로, 프레임당(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의 튜플(튜플의 튜플)로, 각torch.Tensor의 모양은(batch_size, generated_length, hidden_size)입니다. - past_key_values (
Cache, 선택 사항,use_cache=True일 때 반환됨) — 생성이 끝난 시점의 backbone key/value 캐시입니다. - audio_latents (
torch.Tensor, shape(batch_size, num_frames, latent_dim)) — 오디오 토크나이저의 잠재 공간(latent space)에서 생성된 잠재 변수(latents)입니다. 각 샘플의 프레임 수를 초과하는 부분은 0으로 오른쪽 패딩(right-padded)되어 있습니다. PocketTTSProcessor.decode()를 사용하면 이를 웨이브폼으로 변환할 수 있습니다. - audio_latents_mask (
torch.LongTensor, shape(batch_size, num_frames)) — 각 샘플의 프레임(1), 말 끝 프레임과 그 이후의 프레임을 포함하며, 패딩(0)과 구별됩니다.
PocketTTSForConditionalGeneration.generate의 출력입니다.