Transformers documentation
VITS
このモデルは2021年6月11日にHF papersで公開され、2023年9月1日にHugging Face Transformersに貢献されました。
VITS
VITS (敵対的学習を用いたエンドツーエンドのテキスト読み上げのための変分推論)は、従来の2段階のテキスト読み上げ(TTS)システムを簡素化したエンドツーエンドの音声合成モデルです。変分推論、敵対的学習、ノーマライジングフローを用いてテキストから直接音声を合成し、多様なリズムやイントネーションを持つ自然で表現力豊かな音声を生成できる点が特徴です。
すべてのオリジナルのVITSチェックポイントは、AI at Meta組織の下で確認できます。
VITS の適用方法のより多くの例については、右側のサイドバーにある VITS モデルをクリックしてください。
以下の例では、PipelineまたはAutoModelクラスを使用して、画像に基づいてテキストを生成する方法を示しています。
from scipy.io.wavfile import write
from transformers import pipeline, set_seed
set_seed(555)
pipe = pipeline(
task="text-to-speech",
model="facebook/mms-tts-eng",
device=0
)
speech = pipe("Hello, my dog is cute")
# Extract audio data and sampling rate
audio_data = speech["audio"]
sampling_rate = speech["sampling_rate"]
# Save as WAV file
write("hello.wav", sampling_rate, audio_data.squeeze())import scipy
import torch
from IPython.display import Audio
from transformers import AutoTokenizer, VitsModel, set_seed
tokenizer = AutoTokenizer.from_pretrained("facebook/mms-tts-eng")
model = VitsModel.from_pretrained("facebook/mms-tts-eng", device_map="auto")
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt").to(model.device)
set_seed(555)
with torch.no_grad():
outputs = model(**inputs)
waveform = outputs.waveform[0]
scipy.io.wavfile.write("hello.wav", rate=model.config.sampling_rate, data=waveform)
# display in Colab notebook
Audio(waveform, rate=model.config.sampling_rate)注記
VITS は非決定論的に音声合成を行うため、再現性を確保するためにシードを設定します。
ローマ字以外の文字体系(韓国語、アラビア語など)を使用する言語の場合、テキスト入力をローマ字に前処理するためにuromanパッケージをインストールしてください。以下に示すように、トークナイザーがuromanを必要とするかどうかを確認できます。
# pip install -U uroman from transformers import VitsTokenizer tokenizer = VitsTokenizer.from_pretrained("facebook/mms-tts-eng") print(tokenizer.is_uroman)言語がuromanを必要とする場合、トークナイザーはテキスト入力に自動的に適用します。
VitsConfig
クラス transformers.VitsConfig
< 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 = Nonevocab_size: int = 38hidden_size: int = 192num_hidden_layers: int = 6num_attention_heads: int = 2window_size: int = 4use_bias: bool = Trueffn_dim: int = 768layerdrop: float | int = 0.1ffn_kernel_size: int = 3flow_size: int = 192spectrogram_bins: int = 513hidden_act: str = 'relu'hidden_dropout: float | int = 0.1attention_dropout: float | int = 0.1activation_dropout: float | int = 0.1initializer_range: float = 0.02layer_norm_eps: float = 1e-05use_stochastic_duration_prediction: bool = Truenum_speakers: int = 1speaker_embedding_size: int = 0upsample_initial_channel: int = 512upsample_rates: list[int] | tuple[int, ...] = (8, 8, 2, 2)upsample_kernel_sizes: list[int] | tuple[int, ...] = (16, 16, 4, 4)resblock_kernel_sizes: list[int] | tuple[int, ...] = (3, 7, 11)resblock_dilation_sizes: list | tuple = ((1, 3, 5), (1, 3, 5), (1, 3, 5))leaky_relu_slope: float = 0.1depth_separable_channels: int = 2depth_separable_num_layers: int = 3duration_predictor_flow_bins: int = 10duration_predictor_tail_bound: float = 5.0duration_predictor_kernel_size: int = 3duration_predictor_dropout: float | int = 0.5duration_predictor_num_flows: int = 4duration_predictor_filter_channels: int = 256prior_encoder_num_flows: int = 4prior_encoder_num_wavenet_layers: int = 4posterior_encoder_num_wavenet_layers: int = 16wavenet_kernel_size: int = 5wavenet_dilation_rate: int = 1wavenet_dropout: float | int = 0.0speaking_rate: float | int = 1.0noise_scale: float = 0.667noise_scale_duration: float = 0.8sampling_rate: int = 16000pad_token_id: int | None = None )
パラメータ
- vocab_size (
int、任意、デフォルトは38) — モデルの語彙サイズ。input_idsで表現できるトークンの種類数を定義します。 - hidden_size (
int、任意、デフォルトは192) — 隠れ表現の次元数。 - num_hidden_layers (
int、任意、デフォルトは6) — Transformer デコーダーの隠れ層の数。 - num_attention_heads (
int、任意、デフォルトは2) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。 - window_size (
int, 任意、デフォルトは 4) — Transformer エンコーダーの注意層における相対位置埋め込みのウィンドウサイズです。 - use_bias (
bool、任意、デフォルトはTrue) — Transformer エンコーダーのキー、クエリ、バリューの投影層でバイアスを使用するかどうか。 - ffn_dim (
int、任意、デフォルトは768) — MLP 表現の次元数。 - layerdrop (
Union[float, int]、任意、デフォルトは0.1) — LayerDrop の確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。 - ffn_kernel_size (
int, 任意、デフォルトは 3) — Transformer エンコーダーのフィードフォワードネットワークで使用される 1 次元畳み込み層のカーネルサイズ。 - flow_size (
int、任意、デフォルト値は 192)— フロー層の次元数です。 - spectrogram_bins (
int, 任意、デフォルトは 513) — ターゲットのスペクトログラムにおける周波数ビンの数。 - hidden_act (
str、任意、デフォルトはrelu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu"など。 - hidden_dropout (
Union[float, int]、省略可、デフォルトは0.1) — embeddings、encoder、pooler 内のすべての全結合層における dropout 確率です。 - attention_dropout (
Union[float, int]、任意、デフォルトは0.1) — アテンション確率のドロップアウト率です。 - activation_dropout (
Union[float, int]、任意、デフォルトは0.1) — 全結合層内の活性化の dropout 率です。 - initializer_range (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - layer_norm_eps (
float、任意、デフォルトは1e-05) — レイヤーノーマル層で使用する epsilon です。 - use_stochastic_duration_prediction (
bool、任意、デフォルトはTrue) — 確率的な duration prediction モジュールを使用するか、通常の duration predictor を使用するかを指定します。 - num_speakers (
int、任意、デフォルトは 1)— マルチスピーカーモデルの場合のスピーカー数。 - speaker_embedding_size (
int、任意、デフォルト値は 0)— 話者埋め込みで使用されるチャネル数です。単一話者モデルの場合は 0 です。 - upsample_initial_channel (
int、任意、デフォルト値は 512) — HiFi-GAN のアップサンプリングネットワークへの入力チャネル数です。 - upsample_rates (
tuple[int]またはlist[int]、任意、デフォルトは[8, 8, 2, 2]) — HiFi-GAN のアップサンプリングネットワークにおける各 1 次元畳み込み層のストライドを定義する整数のタプルです。upsample_ratesの長さが畳み込み層の数を定義し、upsample_kernel_sizesの長さと一致する必要があります。 - upsample_kernel_sizes (
tuple[int]またはlist[int]、省略可能、デフォルトは[16, 16, 4, 4]) — HiFi-GAN のアップサンプリングネットワークにおける各1次元畳み込み層のカーネルサイズを定義する整数のタプルです。upsample_kernel_sizesの長さが畳み込み層の数を定義し、upsample_ratesの長さと一致する必要があります。 - resblock_kernel_sizes (
tuple[int]またはlist[int]、省略可、デフォルトは[3, 7, 11]) — HiFi-GAN の multi-receptive field fusion (MRF) モジュール内の 1 次元畳み込み層のカーネルサイズを定義する整数のタプルです。 - resblock_dilation_sizes (
tuple[tuple[int]]またはlist[list[int]]、任意、デフォルトは[[1, 3, 5], [1, 3, 5], [1, 3, 5]]) — HiFi-GAN のマルチレセプティブフィールドフュージョン(MRF)モジュール内の、拡張 1 次元畳み込み層のディレーション率を定義する整数のネストされたタプルです。 - leaky_relu_slope (
float、任意、デフォルト値は 0.1) — Leaky ReLU 活性化関数で使用する負の傾きの角度です。 - depth_separable_channels (
int, 任意、デフォルトは 2) — 各 depth-separable ブロックで使用するチャネル数。 - depth_separable_num_layers (
int、任意、デフォルト値は 3) — 各 depth-separable ブロックで使用する畳み込み層の数。 - duration_predictor_flow_bins (
int、任意、デフォルト値は 10) — duration predictor モデルにおいて、unconstrained rational spline を用いてマッピングするチャネル数。 - duration_predictor_tail_bound (
float、任意、デフォルト値は 5.0) — duration predictor モデルで、制約なしの有理スプラインを計算する際の、テールビンの境界値。 - duration_predictor_kernel_size (
int, 任意、デフォルト値は 3) — duration predictor モデルで使用される 1 次元畳み込み層のカーネルサイズ。 - duration_predictor_dropout (
float、任意、デフォルトは 0.5) — duration predictor モデルの dropout 率です。 - duration_predictor_num_flows (
int、任意、デフォルト値は 4)— duration predictor モデルで使用される flow ステージの数です。 - duration_predictor_filter_channels (
int、任意、デフォルト値は 256) — duration predictor モデルで使用する畳み込み層のチャネル数です。 - prior_encoder_num_flows (
int、任意、デフォルトは 4) — prior encoder の flow モデルで使用する flow ステージの数。 - prior_encoder_num_wavenet_layers (
int, 任意、デフォルト値は 4) — prior encoder の flow モデルで使用される WaveNet レイヤーの数。 - posterior_encoder_num_wavenet_layers (
int、任意、デフォルト値は 16)— 後方エンコーダモデルで使用される WaveNet レイヤーの数。 - wavenet_kernel_size (
int, 任意、デフォルト値は 5) — WaveNet モデルで使用される 1 次元畳み込み層のカーネルサイズ。 - wavenet_dilation_rate (
int, 任意、デフォルトは 1) — WaveNet モデルで使用される、拡張 1 次元畳み込み層の dilation rate です。 - wavenet_dropout (
float、任意、デフォルト値は 0.0) — WaveNet 層の dropout 率です。 - speaking_rate (
float、任意、デフォルト値は 1.0)— 話速です。値が大きいほど、合成された音声は速くなります。 - noise_scale (
float、任意、デフォルト値は 0.667) — 音声予測のランダム性を示します。値が大きいほど、予測される音声のバリエーションが増えます。 - noise_scale_duration (
float、任意、デフォルト値は 0.8) — 再生時間予測のランダム性を示します。値が大きいほど、予測される再生時間のばらつきが大きくなります。 - sampling_rate (
int、任意、デフォルトは16000) — オーディオファイルをデジタル化するためのサンプリングレート (Hz)。 - pad_token_id (
int, 任意) — 語彙内でパディングに使用されるトークン ID。
これはVitsModelの設定を保存するための設定クラスです。指定された引数に基づいてVitsモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、facebook/mms-tts-eng と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import VitsModel, VitsConfig
>>> # Initializing a "facebook/mms-tts-eng" style configuration
>>> configuration = VitsConfig()
>>> # Initializing a model (with random weights) from the "facebook/mms-tts-eng" style configuration
>>> model = VitsModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configVitsTokenizer
クラス transformers.VitsTokenizer
< source >( vocab_filepad_token = '<pad>'unk_token = '<unk>'language = Noneadd_blank = Truenormalize = Truephonemize = Trueis_uroman = False**kwargs )
パラメータ
- vocab_file (
str) — 語彙ファイルへのパス。 - language (
str, 省略可) — 言語識別子。 - add_blank (
bool、省略可能、デフォルトはTrue) — 他のトークンの間にトークン ID 0 を挿入するかどうか。 - normalize (
bool、任意、デフォルトはTrue) — 大文字・小文字の区別をなくし、句読点をすべて除去して入力テキストを正規化するかどうかを指定します。 - phonemize (
bool、任意、デフォルトはTrue) — 入力テキストを音素に変換するかどうかを指定します。 - is_uroman (
bool、省略可能、デフォルトはFalse) — トークン化の前に、入力テキストにuromanローマ字化を適用する必要があるかどうかを示します。
VITSのトークナイザーを構築します。MMS-TTSにも対応しています。
このトークナイザーは、PreTrainedTokenizer を継承しており、主要なメソッドのほとんどが含まれています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。
__call__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
パラメータ
- text (
str、list[str]、list[list[str]]、任意) — エンコード対象のシーケンスまたはシーケンスのバッチです。各シーケンスは、文字列または文字列のリスト(事前トークン化済み文字列)であることができます。シーケンスが文字列のリスト(事前トークン化済み)として提供される場合、is_split_into_words=Trueを設定する必要があります(シーケンスのバッチとの曖昧さを解消するため)。 - text_pair (
str、list[str]、list[list[str]]、任意) — エンコード対象のシーケンスまたはシーケンスのバッチです。各シーケンスは、文字列または文字列のリスト(事前トークン化された文字列)であることができます。シーケンスが文字列のリスト(事前トークン化済み)として提供される場合、is_split_into_words=Trueを設定する必要があります(シーケンスのバッチとの曖昧さを解消するため)。 - text_target (
str、list[str]、list[list[str]]、任意) — ターゲットテキストとしてエンコードされるシーケンスまたはシーケンスのバッチです。各シーケンスは文字列、または文字列のリスト(プレトークナイズ済み文字列)であることができます。シーケンスが文字列のリスト(プレトークナイズ済み)として提供される場合、is_split_into_words=Trueを設定する必要があります(シーケンスのバッチとの曖昧さを解消するため)。 - text_pair_target (
str、list[str]、list[list[str]]、任意) — ターゲットテキストとしてエンコードされるシーケンスまたはシーケンスのバッチです。各シーケンスは文字列、または文字列のリスト(プレトークナイズ済み文字列)であることができます。シーケンスが文字列のリスト(プレトークナイズ済み)として提供される場合、is_split_into_words=Trueを設定する必要があります(シーケンスのバッチとの曖昧さを解消するため)。 - tokenizer_kwargs (
dict[str, Any]、省略可) — トークナイザーに渡す追加の kwargs です。これらは明示的なパラメータおよびその他の kwargs とマージされますが、明示的なパラメータが優先されます。 - add_special_tokens (
bool、省略可、デフォルトはTrue) — シーケンスをエンコードする際に特殊トークンを追加するかどうかを指定します。これは、入力 ID に自動的に追加されるトークンを定義する基盤となるPretrainedTokenizerBase.build_inputs_with_special_tokens関数を使用します。bosやeosトークンを自動的に追加したい場合に便利です。 - padding (
bool,strまたは PaddingStrategy, 省略可, デフォルトはFalse) — パディングの有効化と制御を行います。以下の値を受け入れます:Trueまたは'longest': バッチ内の最長のシーケンスの長さにパディングします(単一のシーケンスのみが提供された場合は、パディングを行いません)。'max_length': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長までパディングします。Falseまたは'do_not_pad'(デフォルト):パディングを行いません(つまり、長さが異なるシーケンスのバッチを出力できます)。
- truncation (
bool,strまたは TruncationStrategy, 省略可能, デフォルトはFalse) — 切り詰めを有効にし、制御します。以下の値を受け取ります:Trueまたは'longest_first': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。この場合、トークン単位で切り詰めが行われ、ペアのシーケンス(またはペアのバッチ)が提供されている場合は、ペアの中で最も長いシーケンスから1トークンずつ削除します。'only_first': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れることのできる最大入力長まで切り詰めます。この設定では、ペアのシーケンス(またはペアのバッチ)が提供された場合のみ、ペアの最初のシーケンスだけが切り詰められます。'only_second': 引数max_lengthで指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長まで切り詰めます。このモードでは、シーケンスのペア(またはペアのバッチ)が提供された場合のみ、ペアの2番目のシーケンスが切り詰められます。Falseまたは'do_not_truncate'(デフォルト): トランケーションを行いません(つまり、モデルが許容する最大入力サイズを超えるシーケンス長を持つバッチを出力する可能性があります)。
- max_length (
int, 省略可能) — truncation/padding パラメータのいずれかによって使用される最大長を制御します。未設定のまま、または
Noneに設定されている場合、truncation/padding パラメータのいずれかが最大長を必要とする場合、事前に定義されたモデルの最大長が使用されます。モデルに特定の最大入力長がない場合(XLNet など)、最大長への truncation/padding は無効になります。 - stride (
int、省略可能、デフォルトは 0) —max_lengthとともに数値が設定されている場合、return_overflowing_tokens=Trueで返されるオーバーフローしたトークンは、切り詰められたシーケンスの末尾の一部のトークンを含み、切り詰められたシーケンスとオーバーフローしたシーケンスの間に重複を確保します。この引数の値は、重複するトークンの数を定義します。 - is_split_into_words (
bool、任意、デフォルトはFalse) — 入力がすでに事前トークン化済み(例:単語に分割済み)かどうかを指定します。Trueに設定すると、トークナイザーは入力がすでに単語に分割済み(たとえば空白で分割済み)であると仮定し、それをトークン化します。これは NER やトークン分類に有用です。 - pad_to_multiple_of (
int, 任意) — 設定すると、指定された値の倍数にシーケンスをパディングします。paddingが有効になっている必要があります。 これは、計算能力が>= 7.5(Volta) の NVIDIA ハードウェア上で Tensor Cores を使用可能にするために特に有用です。 - padding_side (
str, 省略可) — モデルにパディングを適用する側です。[‘right’, ‘left’] のいずれかを選択してください。 デフォルト値は、同名のクラス属性から取得されます。 - return_tensors (
strまたは TensorType, 省略可) — 設定すると、Python の整数のリストではなくテンソルを返します。指定可能な値は以下の通りです:'pt': PyTorchのtorch.Tensorオブジェクトを返します。'np': Numpy のnp.ndarrayオブジェクトを返します。
- return_token_type_ids (
bool, 省略可能) — トークンタイプIDを返すかどうか。デフォルトのままにすると、特定のトークナイザーのデフォルトに従ってトークンタイプIDを返します。これはreturn_outputs属性で定義されます。 - return_attention_mask (
bool, 省略可能) — attention mask を返すかどうか。デフォルトのままにすると、return_outputs属性によって定義される、特定の tokenizer のデフォルトに従って attention mask を返します。 - return_overflowing_tokens (
bool、任意、デフォルトはFalse) — 溢れ出したトークンシーケンスを返すかどうかを指定します。入力 ID のシーケンスのペア(またはペアのバッチ)がtruncation_strategy = longest_firstまたはTrueとともに提供された場合、溢れ出したトークンを返す代わりにエラーが発生します。 - return_special_tokens_mask (
bool、省略可能、デフォルトはFalse) — 特殊トークンのマスク情報を返すかどうかを指定します。 - return_offsets_mapping (
bool, 省略可能, デフォルトはFalse) — 各トークンについて(char_start, char_end)を返すかどうか。この機能は、PreTrainedTokenizerFast を継承する高速トークナイザーでのみ利用可能です。Python のトークナイザーを使用している場合、このメソッドは
NotImplementedErrorを送出します。 - return_length (
bool、任意、デフォルトはFalse) — エンコードされた入力の長さを返すかどうかを指定します。 - verbose (
bool、任意、デフォルトはTrue) — より多くの情報や警告を表示するかどうかを指定します。 - **kwargs —
self.tokenize()メソッドに渡されます
戻り値
以下のフィールドを持つBatchEncoding:
-
input_ids — モデルに与えるトークン ID のリスト。
-
token_type_ids — モデルに渡すトークンタイプIDのリスト(
return_token_type_ids=Trueの場合、またはself.model_input_namesに“token_type_ids”が含まれている場合)。 -
attention_mask — モデルがどのトークンに注意を向けるべきかを指定するインデックスのリスト(
return_attention_mask=Trueの場合、またはself.model_input_namesに “attention_mask” が含まれている場合)。 -
overflowing_tokens — 溢れ出したトークンシーケンスのリスト(
max_lengthが指定され、return_overflowing_tokens=Trueの場合)。 -
num_truncated_tokens — トークンが切り詰められた数(
max_lengthが指定され、return_overflowing_tokens=Trueの場合)。 -
special_tokens_mask — 0 と 1 のリスト。1 は追加された特殊トークンを、0 は通常のシーケンストークンを示します(
add_special_tokens=Trueかつreturn_special_tokens_mask=Trueの場合)。 -
length — 入力データの長さ(
return_length=Trueの場合)
1 つ以上のシーケンス、または 1 つ以上のシーケンスのペアをトークナイズし、モデル用に準備するためのメインメソッドです。
VitsModel
クラス transformers.VitsModel
< source >( config: VitsConfig )
パラメータ
- config (VitsConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
テキストから音声への合成を行う、完全なVITSモデル。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonespeaker_id: int | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelabels: typing.Optional[torch.Tensor] = Nonespeaking_rate: float | None = None**kwargs ) → VitsModelOutput or tuple(torch.Tensor)
パラメータ
- input_ids (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。
- attention_mask (
torch.Tensorの形状(batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。[0, 1]:- マスクされていないトークンに対して1
- マスクされたトークンに対しては 0 です。
- speaker_id (
int, 任意) — 使用するスピーカー埋め込みを指定します。マルチスピーカーモデルでのみ使用されます。 - output_attentions (
bool, 省略可) — すべてのアテンション層のアテンションテンソルを返すかどうかを指定します。詳細は、返されるテンソルのattentionsを参照してください。 - output_hidden_states (
bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルのhidden_statesを参照してください。 - return_dict (
bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。 - labels (
torch.Tensor、形状(batch_size, config.spectrogram_bins, sequence_length)、任意) — ターゲットスペクトログラムの浮動小数点値。タイムステップが-100.0に設定されている場合は、損失の計算において無視(マスク)されます。 - speaking_rate (
float、任意) — 話速。
戻り値
VitsModelOutput または tuple(torch.Tensor)
VitsModelOutput、またはtorch.Tensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(VitsConfig)と入力に応じて、さまざまな要素で構成されます。
VitsModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
waveform (
torch.Tensor、形状(batch_size, sequence_length)) — モデルが予測した最終的な音声波形。sequence_lengths (
torch.Tensor、形状(batch_size,)) —waveformバッチ内の各要素のサンプル数での長さです。spectrogram (
torch.Tensor、形状(batch_size, sequence_length, num_bins)) — フローモデルの出力で予測されるログメルスペクトログラムです。このスペクトログラムは Hi-Fi GAN デコーダーモデルに渡され、最終的な音声波形が得られます。hidden_states (
tuple[torch.Tensor]、optional、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]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます) —torch.Tensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
例:
>>> from transformers import VitsTokenizer, VitsModel, set_seed
>>> import torch
>>> tokenizer = VitsTokenizer.from_pretrained("facebook/mms-tts-eng")
>>> model = VitsModel.from_pretrained("facebook/mms-tts-eng")
>>> inputs = tokenizer(text="Hello - my dog is cute", return_tensors="pt")
>>> set_seed(555) # make deterministic
>>> with torch.no_grad():
... outputs = model(inputs["input_ids"])
>>> outputs.waveform.shape
torch.Size([1, 45824])