Transformers documentation

Gradium Phonon TTS

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

このモデルは2026年10月20日にHugging Face Transformersに貢献されました。

Gradium Phonon TTS

概要

Gradium Phonon TTS は、Gradium によるオンデバイス向けテキスト読み上げモデルのファミリーです。Pocket TTS のレシピで訓練されており、因果型 Transformer が音声プロンプトとテキストを読み取り、1 ステップごとに 12.5 Hz で 1 つの連続的な 32 次元の音声潜在変数を 1 ステップフローヘッドを通じて出力します。また、発話の終了タイミングを判定するエンドオブスピーチヘッドを備えています。これらの潜在変数は、プロセッサが保持する Pocket TTS audio tokenizer によって 24 kHz の音声にデコードされます。Pocket TTS の PocketTTSProcessor です。

Pocket TTS との違いは、ボイスの条件付けにあります。ボイスプロンプトは、別のスピーカーコーデックの 512 次元の潜在変数で構成され、学習されたスピーカーベクトルがすべてのオーディオ潜在変数の位置に追加されます。スピーカーコーデックは公開されていないため、ボイスは事前計算された潜在変数として提供されます(各チェックポイントの default-voice.safetensors、および gradium/phonon-voices のカタログ)。また、オーディオトークナイザーはデコーダーのみで構成されるため、録音からボイスをクローンすることはできません。

チェックポイントパラメータ言語ライセンス
gradium/phonon-31m-en31M英語Apache 2.0
gradium/phonon-40m-en40M英語CC BY-NC 4.0
gradium/phonon-40m-fr40Mフランス語CC BY-NC 4.0
gradium/phonon-40m-de40Mドイツ語CC BY-NC 4.0
gradium/phonon-40m-es40Mスペイン語CC BY-NC 4.0
gradium/phonon-40m-pt40Mポルトガル語CC BY-NC 4.0
gradium/phonon-40m-multilingual40M英語、フランス語、ドイツ語、スペイン語、ポルトガル語CC BY-NC 4.0

すべて同じ方法で読み込まれます。チェックポイントを切り替えるには、リポジトリIDを変更するだけです。

このモデルはEustache Le Bihanによって提供されました。元のコードはgradium-ai/xn-pttsです。

使用のコツ

  • apply_chat_template() を使用して入力を準備します。テキストごとに user メッセージを 1 つ、音声が入る場所には空の {"type": "audio"} アイテムを、音声の潜在変数は processor_kwargs={"audio_prompt_latents": [...]} に、そして add_generation_prompt=True を指定します。
  • トークナイザーは、数値、金額、記号、住所をそのままの形で展開しません。テキスト正規化を参照してください。
  • generate は audio_latents と audio_latents_mask を返します。PocketTTSProcessor.decode() を使用してデコードしてください。
  • Gradium のランタイムと同様に生成サンプルを作成します: temperature 0.3 (フローの初期ノイズの分散) を設定し、eos_threshold を speech-end の logit が超えた直後に停止します。 do_sample=False を設定すると、フローはゼロノイズから開始されます。
  • モデルは、重みが保存されている dtype である bf16 で読み込まれます。CPU の場合は、Gradium のランタイムに合わせるために dtype=torch.float32 を渡してください。
  • 長いテキストは、PocketTTSProcessor.split_text() を使用して分割し、チャンクごとに1つの会話にしてください。

使用方法

ボイス

ボイスは (num_frames, 512) のテンソルで表される潜在変数です。各チェックポイントには 1 つのボイス (default-voice.safetensors) が同梱されており、gradium/phonon-voices には約 100 以上のボイスが用意されています。これらはあらゆる言語に対応しており、それぞれに固有のボイス ID が割り当てられています (voices.jsonl に名称、言語、説明が記載されています)。どのボイスもどのチェックポイントとでも組み合わせることができます。

import torch
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
from transformers import AutoProcessor, GradiumPhononTTSForConditionalGeneration

model_id = "gradium/phonon-31m-en"
processor = AutoProcessor.from_pretrained(model_id, device_map="auto")
model = GradiumPhononTTSForConditionalGeneration.from_pretrained(model_id, device_map="auto")


def load_voice(voice_id):
    """A voice of gradium/phonon-voices, as latents of shape (num_frames, 512)."""
    path = hf_hub_download("gradium/phonon-voices", f"voices/{voice_id}.safetensors")
    return load_file(path)["speaker_wavs"][0].T.float()


# Easton (en-us); the checkpoint's own voice: hf_hub_download(model_id, "default-voice.safetensors")
voice = load_voice("LMDIYE0Oa377Qh6Z")
# an empty `audio` item marks the voice
conversation = [
    {"role": "user", "content": [{"type": "audio"}, {"type": "text", "text": "Hello from Phonon."}]}
]
inputs = processor.apply_chat_template(
    conversation,
    tokenize=True,
    return_dict=True,
    add_generation_prompt=True,
    processor_kwargs={"audio_prompt_latents": [voice]},
).to(model.device)

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

バッチと長いテキスト

複数のテキストをバッチ処理し、それぞれに独自のボイスを割り当て、長いテキストはチャンクに分割します:

text = (
    "Phonon is a small text-to-speech model that runs on your device. "
    "Long texts are split into sentences, and each chunk is one conversation of the batch."
)
chunks = processor.split_text(text)
texts = chunks + ["And this one is said by another voice."]
voices = [load_voice("LMDIYE0Oa377Qh6Z")] * len(chunks) + [load_voice("NbpkqMVS3CJeq2j8")]
conversations = [
    [{"role": "user", "content": [{"type": "audio"}, {"type": "text", "text": text}]}] for text in texts
]
inputs = processor.apply_chat_template(
    conversations,
    tokenize=True,
    return_dict=True,
    add_generation_prompt=True,
    processor_kwargs={"audio_prompt_latents": voices},
).to(model.device)

outputs = model.generate(**inputs)
audio = processor.decode(outputs.audio_latents, outputs.audio_latents_mask)
processor.save_audio([torch.cat(audio[: len(chunks)]), audio[-1]], ["long.wav", "other.wav"])

テキスト正規化

Gradium のランタイムと同様に、トークナイザーは言語に依存しない部分を正規化します。

テキストトークナイザー
“Hello” — it’s here…"Hello" it's here.
hello (world); see you 🚀Hello, world, see you.

数値、数量、記号、住所などの言語によって異なる要素は、読み上げられません。

テキストトークナイザーGradiumのランタイム
It costs $1,234.56.It costs $1,234.56.It costs 1 thousand 234 dollars and 56 cents.
Write to jean@gradium.aiWrite to jean@gradium.ai.Write to jean at gradium dot A-I.
It is 21°CIt is 21°C.It is 21 degrees Celsius.

それらについては、Gradium のランタイムのテキスト正規化である ptts を使用するか、そのまま書き出してください。

GradiumPhononTTSConfig

クラス transformers.GradiumPhononTTSConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneflow_head_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonevocab_size: int = 4001hidden_size: int = 768num_hidden_layers: int = 6num_attention_heads: int = 12num_key_value_heads: int | None = Nonehead_dim: int | None = Noneintermediate_size: int = 3072hidden_act: str = 'gelu'layer_norm_eps: float = 1e-05attention_bias: bool = Falseattention_dropout: float = 0.0max_position_embeddings: int = 8192rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Nonelatent_dim: int = 32pad_token_id: int = 3bos_token_id: int | None = Noneeos_token_id: int | None = Noneaudio_prompt_token_id: int = 5audio_latent_token_id: int = 6audio_bos_token_id: int = 4frame_rate: float = 12.5initializer_range: float = 0.02use_cache: bool = Trueeos_loss_weight: float = 0.1flow_loss_num_samples: int = 4lsd_distill_probability: float = 0.25lsd_diagonal_weight: float = 0.75lsd_time_logit_mean: float = 0.4lsd_time_logit_std: float = 1.0latent_stats_ema_steps: int = 1000latent_stats_ema_decay: float = 0.999audio_prompt_dim: int = 512num_speakers: int = 1num_speakers_vocab_size: int = 32num_speakers_embedding_dim: int = 16duration_delta: float = 0.0duration_delta_embedding_dim: int = 128duration_delta_scale: float = 1000.0duration_delta_max_period: float = 10000.0 )

パラメータ

  • flow_head_config (Union[GradiumPhononTTSFlowHeadConfig, dict], 任意) — バックボーンの隠れ状態から各潜在変数をサンプリングするフローヘッドの設定です。
  • vocab_size (int、任意、デフォルトは 4001) — モデルの語彙サイズ。input_ids で表現できるトークンの種類数を定義します。
  • hidden_size (int、任意、デフォルトは 768) — 隠れ表現の次元数。
  • num_hidden_layers (int、任意、デフォルトは 6) — Transformer デコーダーの隠れ層の数。
  • num_attention_heads (int、任意、デフォルトは12) — Transformerデコーダーの各アテンション層におけるアテンションヘッドの数。
  • num_key_value_heads (int, 任意) — 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 ヘッドは、そのグループ内の元のすべてのヘッドを平均プーリングして構築する必要があります。詳細については、この論文を参照してください。指定されない場合、デフォルトで num_attention_heads が使用されます。
  • head_dim (int、省略可) — アテンションヘッドの次元です。None の場合、hidden_size // num_attention_heads がデフォルトとして使用されます。
  • intermediate_size (int、任意、デフォルトは3072) — MLP 表現の次元数。
  • hidden_act (str、任意、デフォルトは gelu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、 "relu"、"silu" など。
  • layer_norm_eps (float、任意、デフォルトは 1e-05) — バックボーンのレイヤーノーマライゼーションの epsilon。
  • attention_bias (bool、任意、デフォルトはFalse) — 自己注意機構において、クエリ、キー、バリュー、出力の投影層にバイアスを使用するかどうかを指定します。
  • attention_dropout (float、任意、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
  • 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_latents)。flow head とオーディオ tokenizer の latent_dim と等しい。
  • pad_token_id (int、任意、デフォルトは 3) — 語彙内でパディングに使用されるトークン ID。
  • bos_token_id (int, 省略可) — 語彙におけるストリーム開始に使用されるトークン ID。
  • eos_token_id (int, 省略可) — 語彙内でストリーム終了に使用されるトークン ID。
  • audio_prompt_token_id (int、任意、デフォルト値は 5)— input_ids 内の音声プロンプトフレームのプレースホルダトークン ID (<|audio_prompt|>)。
  • audio_latent_token_id (int, 任意、デフォルト値は 6) — input_ids におけるオーディオ潜在位置のプレースホルダトークン ID (<|audio_latent|>)。
  • audio_bos_token_id (int、任意、デフォルト値は 4)— 最初の音声位置のトークン ID。プロンプトを閉じるために使用され、学習済みの BOS 潜在変数を保持し、そこから最初のフレームが生成されます(<|audio_bos|>)。
  • frame_rate (float、任意、デフォルト値は 12.5)— 1 秒あたりのオーディオの潜在変数(latents)の数です。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 ロスの対角項(瞬間フロー項)の重み。自己蒸留項が残り(1 - 0.75)の重みを担います。
  • lsd_time_logit_mean (float、任意、デフォルト値は 0.4) — LSD ロスによってサンプリングされるフロー時間のロジット正規分布の平均値です。
  • lsd_time_logit_std (float、任意、デフォルト値は 1.0)— LSD ロスによってサンプリングされるフロー時間のロジット正規分布の標準偏差です。
  • latent_stats_ema_steps (int、任意、デフォルト値は 1000)— latent_mean と latent_std が、ターゲットの潜在変数に対する指数移動平均に従う最初の学習ステップ数です。0 に設定すると、これらは固定されます。
  • latent_stats_ema_decay (float、任意、デフォルト値は 0.999) — この移動平均の減衰率です。
  • audio_prompt_dim (int、任意、デフォルト値は 512) — 音声プロンプトの潜在変数 (audio_prompt_latents) の次元です。これは Gradium のスピーカーコーデック(Mimi エンコーダーであり、オーディオ トークナイザーのものではない)の量子化されていない潜在変数であり、バックボーンによって hidden_size に射影されます。
  • num_speakers (int、省略可、デフォルト値は 1) — num_speakers 条件の値です。これは、すべてのオーディオ潜在位置に追加されるルックアップテーブルの行です。
  • num_speakers_vocab_size (int、任意、デフォルトは 32) — num_speakersルックアップテーブルの行数。
  • num_speakers_embedding_dim (int、任意、デフォルトは 16) — num_speakers のルックアップテーブルの幅。これは hidden_size に射影されます。
  • duration_delta (float、任意、デフォルトは 0.0) — duration_delta 条件の値です。正弦波埋め込みとしてエンコードされ、すべてのオーディオ潜在位置に追加されます。
  • duration_delta_embedding_dim (int、任意、デフォルトは 128)— duration_delta の正弦波埋め込みのサイズで、hidden_size に射影されます。
  • duration_delta_scale (float、任意、デフォルト値は 1000.0) — duration_delta のサイン波埋め込みを適用する前に乗算される係数。
  • duration_delta_max_period (float、任意、デフォルト値は 10000.0) — duration_delta の正弦波埋め込みの最大周期です。

これは GradiumPhononTTSModel の設定を保存するための設定クラスです。指定された引数に基づいて Gradium Phonon Tts モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、gradium/phonon-31m-en と同様の設定が得られます。

設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。

GradiumPhononTTSFlowHeadConfig

クラス transformers.GradiumPhononTTSFlowHeadConfig

< >

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

パラメータ

  • hidden_size (int、任意、デフォルトは 512) — 隠れ表現の次元数。
  • num_hidden_layers (int、任意、デフォルトは 6) — Transformer デコーダーの隠れ層の数。
  • latent_dim (int、任意、デフォルトは 32) — ヘッドが予測する連続オーディオ潜在変数の次元(オーディオトークナイザーの潜在次元)。
  • condition_dim (int、任意、デフォルトは 768) — ヘッドが条件付けられるバックボーンの隠れ状態の次元数(バックボーンの 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"(Lagrangian self-distillation): フローステップの開始時刻と終了時刻で条件付けられ、ガウスノイズから Euler ステップでサンプリングされます。 "drifting": 時刻による条件付けはなく、ヘッドが 1 回の呼び出しでノイズを潜在変数にマッピングします。
  • loss_weighting_hidden_size (int, 任意、デフォルト値は 32) — LSD の損失項のフロータイムから不確実性重みを学習するための MLP の幅(学習時のみ使用)。
  • loss_weighting_num_layers (int、任意、デフォルト値は 3) — その MLP の隠れ層の数です。

これは GradiumPhononTTSModel の設定を保存するための設定クラスです。指定された引数に基づいて Gradium Phonon Tts モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、gradium/phonon-31m-en と同様の設定が得られます。

設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。

GradiumPhononTTSModel

class transformers.GradiumPhononTTSModel

< >

( config: GradiumPhononTTSConfig )

パラメータ

  • config (GradiumPhononTTSConfig) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

Gradium Phonon TTS バックボーン: 音声プロンプト(スピーカー・コーデックの潜在変数)、テキストトークン、およびオーディオ潜在変数からなる単一のストリームに対する因果型 Transformer で、正規化された隠れ状態を返します。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneaudio_prompt_latents: typing.Optional[torch.FloatTensor] = Noneaudio_prompt_latents_mask: typing.Optional[torch.Tensor] = Noneaudio_latents: typing.Optional[torch.FloatTensor] = 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.FloatTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • audio_prompt_latents (torch.FloatTensor、shape (batch_size, num_prompt_frames, latent_dim)、任意) — audio tokenizer のボイスポンプトの潜在変数(processor によってエンコードされたもの、またはチェックポイントの voices/)。 バッチ内でもっとも長いボイスに合わせて右パディングされ、audio_prompt_token_id の位置に配置されます。
  • audio_prompt_latents_mask (torch.Tensor、形状 (batch_size, num_prompt_frames)、任意) — audio_prompt_latents における音声フレーム(1)とパディング(0)を区別するためのマスクです。
  • audio_latents (torch.FloatTensor、形状 (batch_size, num_latents, latent_dim)、任意) — 正規化されたオーディオ潜在変数です。audio_latent_token_id の位置に配置されます。その直前の audio_bos_token_id の位置は、プロンプトを閉じ、最初のフレームの生成を開始する位置であり、常に学習された BOS 潜在変数が割り当てられます。
  • audio_latents_mask (torch.Tensor、形状 (batch_size, num_latents)、任意) — 行ごとに潜在位置の数が異なる場合(学習時)、audio_latents における各行の潜在変数(1)とパディング(0)を区別するためのマスク。
  • 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].

    ポジションIDとは?

  • past_key_values (~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した past_key_values であり、 use_cache=True または config.use_cache=True.

    入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。 past_key_values が渡されない場合、デフォルトで DynamicCache が初期化されます。

    モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

    past_key_values を使用する場合、すべての input_ids(形状 (batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理の input_ids(形状 (batch_size, unprocessed_length))のみを入力することになります。

  • inputs_embeds (torch.FloatTensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。

戻り値

BaseModelOutputWithPast または tuple(torch.FloatTensor)

torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または BaseModelOutputWithPast。設定(GradiumPhononTTSConfig)や入力に応じて、さまざまな要素で構成されます。

GradiumPhononTTSModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • last_hidden_state (torch.FloatTensor、shape (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 cache ガイドを参照してください。

    自己アテンションブロック(および config.is_encoder_decoder=True の場合、クロスカレンションブロック)の事前計算済みヒドゥンステート(キーとバリュー)を保持します。これらは逐次デコーディングを高速化するために使用できます(past_key_values 入力参照)。

  • hidden_states (tuple(torch.FloatTensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます)— torch.FloatTensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

GradiumPhononTTSForConditionalGeneration

クラス transformers.GradiumPhononTTSForConditionalGeneration

< >

( config: GradiumPhononTTSConfig )

パラメータ

  • config (GradiumPhononTTSConfig) — モデルのすべてのパラメータを含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

Gradium Phonon TTS テキスト読み上げモデル: バックボーン、1ステップごとに1つのオーディオ潜在変数をサンプリングするフローヘッド、および発話終了ヘッド。このモデルはオーディオトークナイザーの潜在変数を生成し、プロセッサがそれを 24 kHz のオーディオにデコードします。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneaudio_prompt_latents: typing.Optional[torch.FloatTensor] = Noneaudio_prompt_latents_mask: typing.Optional[torch.Tensor] = Noneaudio_latents: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.FloatTensor] = 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.FloatTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → GradiumPhononTTSOutputWithPast or tuple(torch.FloatTensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • audio_prompt_latents (torch.FloatTensor、形状 (batch_size, num_prompt_frames, latent_dim)、任意) — 音声トークナイザーの音声プロンプトの潜在変数です。右パディングが適用され、audio_prompt_token_id の位置に配置されています。
  • audio_prompt_latents_mask (torch.Tensor、形状 (batch_size, num_prompt_frames)、任意) — audio_prompt_latents における音声フレーム(1)とパディング(0)を区別するためのマスクです。
  • audio_latents (torch.FloatTensor、shape (batch_size, num_latents, latent_dim)、任意) — audio_latent_token_id の位置に分散配置された、正規化されたオーディオ潜在変数です。
  • labels (torch.FloatTensor、shape (batch_size, num_frames, latent_dim)、任意) — 音声トークナイザーのターゲット潜在変数(学習用)、右パディング済み。各行のプロンプトは、audio_bos_token_id の位置で始まり、その後、フレームごとに 1 つの audio_latent_token_id 位置が続きます。モデルは正規化されたターゲット(ティーチャージング)を入力し、BOS および最後のフレームを除くすべてのフレームの出力にフロー損失を適用します(これらはフレームを予測します)。また、すべてのフレームに発話終了損失を適用し、最後のフレームが発話の終了を表します。
  • labels_mask (torch.Tensor、形状 (batch_size, num_frames)、任意) — labels における各行のターゲットフレーム(1)とパディング(0)を区別するためのマスク。
  • 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].

    ポジションIDとは?

  • past_key_values (~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した past_key_values であり、 use_cache=True または config.use_cache=True.

    入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。 past_key_values が渡されない場合、デフォルトで DynamicCache が初期化されます。

    モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

    past_key_values を使用する場合、すべての input_ids(形状 (batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理の input_ids(形状 (batch_size, unprocessed_length))のみを入力することになります。

  • inputs_embeds (torch.FloatTensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込みルックアップ行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。

戻り値

GradiumPhononTTSOutputWithPast または tuple(torch.FloatTensor)

GradiumPhononTTSOutputWithPast、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(GradiumPhononTTSConfig)や入力に応じて、さまざまな要素で構成されます。

GradiumPhononTTSForConditionalGenerationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • loss (torch.FloatTensor、shape ()、optional、labels が渡された場合に返されます) — 学習損失: ターゲットの潜在変数の LSD フロー損失に、config.eos_loss_weight 倍の end-of-speech 損失を加えた値。

  • logits (torch.FloatTensor、形状 (batch_size, sequence_length, 1)) — 音声終了の logits。各位置ごとに1つ。

  • past_key_values (Cache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。

    逐次デコーディングを高速化するために使用できる(past_key_values 入力参照)、事前計算済みの隠れ状態(自己注意ブロックのキーとバリュー)が含まれます。

  • hidden_states (tuple(torch.FloatTensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます)— torch.FloatTensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

  • attentions (tuple(torch.FloatTensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.FloatTensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

  • last_hidden_state (torch.FloatTensor、shape (batch_size, sequence_length, hidden_size)) — フローヘッドを条件づける、バックボーンの正規化された隠れ状態です。

例:

>>> from transformers import AutoProcessor, GradiumPhononTTSForConditionalGeneration

>>> model = GradiumPhononTTSForConditionalGeneration.from_pretrained("gradium/phonon-31m-en")

>>> processor = AutoProcessor.from_pretrained("gradium/phonon-31m-en")
>>> inputs = processor(text="Hello, my dog is cute", return_tensors="pt")

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

generate

< >

( inputs: typing.Optional[torch.Tensor] = None**kwargs )

パラメータ

  • inputs (torch.LongTensor、形状 (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) に設定します。その他の処理は、通常の生成フックを通じて行われます。

Update on GitHub