# UnivNet

## 概要

UnivNetモデルは、Won Jang、Dan Lim、Jaesam Yoon、Bongwan Kin、Juntae Kim によって [UnivNet: A Neural Vocoder with Multi-Resolution Spectrogram Discriminators for High-Fidelity Waveform Generation](https://huggingface.co/papers/2106.07889) で提案されました。UnivNetモデルは、高忠実度の音声波形を合成するように学習される生成敵対ネットワーク（GAN）です。`transformers` で共有されている UnivNet モデルは *generator* であり、条件付きの log-mel スペクトログラムと任意のノイズシーケンスを音声波形（例: ボコーダー）にマッピングします。推論には generator のみが必要です。`generator` の学習に使用される *discriminator* は実装されていません。

論文の抄録は以下の通りです。

*ほとんどのニューラルボコーダーは、帯域制限されたメルスペクトログラムを用いて波形を生成します。入力として全帯域のスペクトル特徴量を使用する場合、ボコーダーには可能な限り多くの音響情報が提供されます。しかし、全帯域メルスペクトログラムを用いる一部のモデルでは、スペクトログラムが鋭くならない過平滑化の問題が発生します。この問題に対処するため、リアルタイムで高忠実度の波形を合成するニューラルボコーダーであるUnivNetを提案します。音声活動検出分野の研究に着想を得て、さまざまなパラメータセットを用いて計算される複数の線形スペクトログラムの振幅を利用する、マルチリゾリューションスペクトログラムディスクリミネーターを追加しました。入力として全帯域メルスペクトログラムを使用し、複数の解像度のスペクトログラムを入力とするディスクリミネーターを追加することで、高解像度の信号を生成できると期待しています。数百人の話者の情報を含むデータセットでの評価において、UnivNetは、既知の話者および未知の話者の両方において、競合するモデルの中で主観的・客観的ないずれの評価でも最良の結果を獲得しました。これらの結果、特にテキスト読み上げ（TTS）における最良の主観的スコアは、ゼロからの学習を必要とせずに新しい話者に素早く適応できる可能性を示しています。*

ヒント:

- `noise_sequence` 引数は、[UnivNetModel.forward()](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetModel.forward) に対して標準ガウス分布のノイズ（`torch.randn` など）を指定するもので、その形状は `([batch_size], noise_length, model.config.model_in_channels)` である必要があります。ここで、`noise_length` は `input_features` 引数の長さ次元（次元 1）と一致させる必要があります。指定されない場合は、ランダムに生成されます。フォワードパスを再現できるようにするため、`torch.Generator` を `generator` 引数に指定できます。（[UnivNetFeatureExtractor](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetFeatureExtractor) はデフォルトで生成されたノイズを返すため、`noise_sequence` を手動で生成する必要はないはずです。）
- [UnivNetFeatureExtractor](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetFeatureExtractor)によって追加されたパディングは、`UnivNetFeatureExtractor.batch_decode()`メソッドを通じて[UnivNetModel](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetModel)の出力から除去できます。以下の使用例を参照してください。
- 各波形の末尾に無音をパディングすることで、生成された音声サンプルの末尾に生じるアーティファクトを軽減できます。これは、[UnivNetFeatureExtractor.__call__()](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetFeatureExtractor.__call__) に `pad_end = True` を指定することで実行できます。詳細は[この issue](https://github.com/seungwonpark/melgan/issues/8)を参照してください。

使用例:

```python
import torch
from datasets import Audio, load_dataset
from scipy.io.wavfile import write

from transformers import UnivNetFeatureExtractor, UnivNetModel

model_id_or_path = "dg845/univnet-dev"
model = UnivNetModel.from_pretrained(model_id_or_path, device_map="auto")
feature_extractor = UnivNetFeatureExtractor.from_pretrained(model_id_or_path)

ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
# Resample the audio to the model and feature extractor's sampling rate.
ds = ds.cast_column("audio", Audio(sampling_rate=feature_extractor.sampling_rate))
# Pad the end of the converted waveforms to reduce artifacts at the end of the output audio samples.
inputs = feature_extractor(
    ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], pad_end=True, return_tensors="pt"
)

with torch.no_grad():
    audio = model(**inputs)

# Remove the extra padding at the end of the output.
audio = feature_extractor.batch_decode(**audio)[0]
# Convert to wav file
write("sample_audio.wav", feature_extractor.sampling_rate, audio)
```

このモデルは[dg845](https://huggingface.co/dg845)によって提供されました。私の知る限り、公式なコードのリリースはありませんが、[maum-ai/univnet](https://github.com/maum-ai/univnet)に非公式な実装があり、事前学習済みチェックポイントは[こちら](https://github.com/maum-ai/univnet#pre-trained-model)で入手できます。

## UnivNetConfig[[transformers.UnivNetConfig]]

#### transformers.UnivNetConfig[[transformers.UnivNetConfig]]

```python
transformers.UnivNetConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, model_in_channels: int = 64, model_hidden_channels: int = 32, num_mel_bins: int = 100, resblock_kernel_sizes: list[int] | tuple[int, ...] = (3, 3, 3), resblock_stride_sizes: list[int] | tuple[int, ...] = (8, 8, 4), resblock_dilation_sizes: list | tuple = ((1, 3, 9, 27), (1, 3, 9, 27), (1, 3, 9, 27)), kernel_predictor_num_blocks: int = 3, kernel_predictor_hidden_channels: int = 64, kernel_predictor_conv_size: int = 3, kernel_predictor_dropout: float | int = 0.0, initializer_range: float = 0.01, leaky_relu_slope: float = 0.2)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/univnet/configuration_univnet.py#L24)

**パラメータ:**

model_in_channels (`int`、*optional*、デフォルト値は 64) : UnivNet 残差ネットワークの入力チャネル数です。`noise_sequence.shape[1]` および [UnivNetFeatureExtractor](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetFeatureExtractor) クラスで使用される値に対応する必要があります。

model_hidden_channels (`int`, *optional*, デフォルトは 32) : UnivNet の残差ネットワークにおける、各残差ブロックの隠れチャネル数です。

num_mel_bins (`int`、*optional*、デフォルト値は 100) : 条件付け用の log-mel スペクトログラムにおける周波数ビンの数です。[UnivNetFeatureExtractor](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetFeatureExtractor) クラスで使用された値と一致させる必要があります。

resblock_kernel_sizes (`tuple[int]` または `list[int]`、*optional*、デフォルトは `[3, 3, 3]`) : UnivNet の残差ネットワークにおける1次元畳み込み層のカーネルサイズを定義する整数のタプルです。`resblock_kernel_sizes` の長さがresnetブロックの数を定義し、`resblock_stride_sizes` および `resblock_dilation_sizes` の長さと一致する必要があります。

resblock_stride_sizes (`tuple[int]` または `list[int]`、*optional*、デフォルトは `[8, 8, 4]`) : UnivNet の残差ネットワークにおける1次元畳み込み層のストライドサイズを定義する整数のタプルです。`resblock_stride_sizes` の長さは、`resblock_kernel_sizes` および `resblock_dilation_sizes` の長さと一致する必要があります。

resblock_dilation_sizes (`tuple[tuple[int]]` または `list[list[int]]`、*任意*、デフォルトは `[[1, 3, 9, 27], [1, 3, 9, 27], [1, 3, 9, 27]]`) : UnivNet の残差ネットワークにおける、拡張された 1 次元畳み込み層の拡張率を定義する整数のネストされたタプルです。`resblock_dilation_sizes` の長さは、`resblock_kernel_sizes` および `resblock_stride_sizes` の長さと一致する必要があります。`resblock_dilation_sizes` 内の各ネストされたリストの長さは、各 ResNet ブロックあたりの畳み込み層の数を定義します。

kernel_predictor_num_blocks (`int`、*optional*、デフォルト値は 3) : UnivNet の残差ネットワークにおける各位置変数畳み込み層のカーネルとバイアスを計算するカーネル予測器ネットワークの残差ブロックの数。

kernel_predictor_hidden_channels (`int`、*optional*、デフォルトは 64) : カーネル予測ネットワーク内の各残差ブロックにおける隠れチャネル数。

kernel_predictor_conv_size (`int`, *optional*, デフォルトは 3) : カーネル予測ネットワーク内の各 1 次元畳み込み層のカーネルサイズ。

kernel_predictor_dropout (`float`、*optional*、デフォルト値は 0.0) : カーネル予測ネットワークの各残差ブロックにおける dropout 確率。

initializer_range (`float`、*任意*、デフォルトは `0.01`) : すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。

leaky_relu_slope (`float`, *optional*, デフォルトは 0.2) : leaky ReLU 活性化関数で使用される負の傾きの角度です。

これはUnivNetModelの設定を保存するための設定クラスです。指定された引数に基づいてUnivnetモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[dg845/univnet-dev](https://huggingface.co/dg845/univnet-dev)と類似した設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

例:

```python
>>> from transformers import UnivNetModel, UnivNetConfig

>>> # Initializing a Tortoise TTS style configuration
>>> configuration = UnivNetConfig()

>>> # Initializing a model (with random weights) from the Tortoise TTS style configuration
>>> model = UnivNetModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```

## UnivNetFeatureExtractor[[transformers.UnivNetFeatureExtractor]]

#### transformers.UnivNetFeatureExtractor[[transformers.UnivNetFeatureExtractor]]

```python
transformers.UnivNetFeatureExtractor(feature_size: int = 1, sampling_rate: int = 24000, padding_value: float = 0.0, do_normalize: bool = False, num_mel_bins: int = 100, hop_length: int = 256, win_length: int = 1024, win_function: str = 'hann_window', filter_length: int | None = 1024, max_length_s: int = 10, fmin: float = 0.0, fmax: float | None = None, mel_floor: float = 1e-09, center: bool = False, compression_factor: float = 1.0, compression_clip_val: float = 1e-05, normalize_min: float = -11.512925148010254, normalize_max: float = 2.3143386840820312, model_in_channels: int = 64, pad_end_length: int = 10, return_attention_mask = True, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/univnet/feature_extraction_univnet.py#L29)

**パラメータ:**

feature_size (`int`、*任意*、デフォルトは 1) : 抽出された特徴量の次元数。

sampling_rate (`int`, *optional*, デフォルトは 24000) : オーディオファイルをデジタル化するためのサンプリングレート (Hz)。

padding_value (`float`、*任意*、デフォルト値は 0.0) : [UnivNetFeatureExtractor.__call__()](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetFeatureExtractor.__call__) の `padding` 引数で定義されるパディング戦略を適用する際に、パディングに使用する値です。音声の無音に対応する値である必要があります。`__call__` の `pad_end` 引数も、このパディング値を使用します。

do_normalize (`bool`、*任意*、デフォルトは`False`) : 入力に対してTacotron 2正規化を実行するかどうか。正規化を行うことで、一部のモデルではパフォーマンスが大幅に向上する可能性があります。

num_mel_bins (`int`、*optional*、デフォルトは 100) : 抽出されるスペクトログラム特徴におけるメルフリークビン数です。`UnivNetModel.config.num_mel_bins` と一致させる必要があります。

hop_length (`int`、*optional*、デフォルトは 256) : スライディングウィンドウ間の直接のサンプル数です。多くの論文では「shift」とも呼ばれます。なお、これは [SpeechT5FeatureExtractor](/docs/transformers/main/ja/model_doc/speecht5#transformers.SpeechT5FeatureExtractor) などの他の音声特徴抽出器とは異なり、それらは `hop_length` をミリ秒単位で受け取ります。

win_length (`int`、*optional*、デフォルトは 1024) : 各スライディングウィンドウの直接のサンプル数です。[SpeechT5FeatureExtractor](/docs/transformers/main/ja/model_doc/speecht5#transformers.SpeechT5FeatureExtractor) などの他の音声フィーチャーエクストラクターは `win_length` をミリ秒単位で受け取るため、これとは異なります。

win_function (`str`、*任意*、デフォルトは`"hann_window"`) : ウィンドウ処理に使用するウィンドウ関数の名前です。`torch.{win_function}` 経由でアクセス可能である必要があります。

filter_length (`int`、*optional*、デフォルトは 1024) : 使用する FFT 成分の数。`None` の場合、`transformers.audio_utils.optimal_fft_length` を使用して決定されます。

max_length_s (`int`、*optional*、デフォルトは 10) : モデルの最大入力長（秒）。これはオーディオのパディングに使用されます。

fmin (`float`、*任意*、デフォルトは 0.0) : メル周波数の最小値 (Hz)。

fmax (`float`, *optional*) : メル周波数の最大値 (Hz)。設定されていない場合、デフォルトで `sampling_rate / 2` になります。

mel_floor (`float`、*任意*、デフォルト値は 1e-09) : メル周波数バンクの最小値。[UnivNetFeatureExtractor](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetFeatureExtractor) が `mel_floor` を使用する点は、[transformers.audio_utils.spectrogram()](/docs/transformers/main/ja/internal/audio_utils#transformers.audio_utils.spectrogram) と異なります。

center (`bool`, *任意*, デフォルトは `False`) : フレーム `t` が時刻 `t * hop_length` の中心に来るように、波形をパディングするかどうか。`False` の場合、フレーム `t` は時刻 `t * hop_length` から始まります。

compression_factor (`float`、*optional*、デフォルトは 1.0) : スペクトル正規化におけるダイナミックレンジ圧縮のための乗算圧縮係数です。

compression_clip_val (`float`、*optional*、デフォルトは 1e-05) : スペクトル正規化においてダイナミックレンジ圧縮を適用する前に、波形に適用されるクリップ値。

normalize_min (`float`、*optional*、デフォルト値は -11.512925148010254) : Tacotron 2 形式の線形正規化に使用される最小値です。デフォルト値は、Tacotron 2 の実装における元の値です。

normalize_max (`float`、*optional*、デフォルト値は 2.3143386840820312) : Tacotron 2 形式の線形正規化に使用される最大値です。デフォルト値は、Tacotron 2 の実装における元の値です。

model_in_channels (`int`、*optional*、デフォルトは 64) : [UnivNetModel](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetModel) モデルへの入力チャネル数です。`UnivNetModel.config.model_in_channels` と一致する必要があります。

pad_end_length (`int`、*optional*、デフォルトは 10) : 各波形の末尾をパディングする場合、追加するスペクトログラムフレーム相当のサンプル数です。追加されるサンプル数は `pad_end_length * hop_length` になります。

return_attention_mask (`bool`、*任意*、デフォルトは`True`) : [__call__()](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetFeatureExtractor.__call__)が`attention_mask`を返すかどうか。

UnivNetのフィーチャーエクストラクターを構築します。

このクラスは、短時間フーリエ変換（STFT）を使用して生音声からlog-mel-filter bank特徴を抽出します。STFTの実装は、TacoTron 2およびHifi-GANのものを踏襲しています。

このフィーチャーエクストラクターは、主要なメソッドの大部分を含む [SequenceFeatureExtractor](/docs/transformers/main/ja/main_classes/feature_extractor#transformers.SequenceFeatureExtractor) を継承しています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

#### __call__[[transformers.UnivNetFeatureExtractor.__call__]]

```python
__call__(raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]], sampling_rate: int | None = None, padding: bool | str | transformers.utils.generic.PaddingStrategy = True, max_length: int | None = None, truncation: bool = True, pad_to_multiple_of: int | None = None, return_noise: bool = True, generator: numpy.random._generator.Generator | None = None, pad_end: bool = False, pad_length: int | None = None, do_normalize: str | None = None, return_attention_mask: bool | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/univnet/feature_extraction_univnet.py#L286)

**パラメータ:**

raw_speech (`np.ndarray`、`list[float]`、`list[np.ndarray]`、`list[list[float]]`) : パディング対象のシーケンスまたはシーケンスのバッチです。各シーケンスは、NumPy 配列、浮動小数点数のリスト、NumPy 配列のリスト、または浮動小数点数のリストのリストであることができます。ステレオではなくモノラルのオーディオで、つまり 1 タイムステップあたり 1 つの浮動小数点数である必要があります。

sampling_rate (`int`, *任意*) : `raw_speech` 入力がサンプリングされたレートです。サイレントエラーを防ぎ、自動音声認識パイプラインを有効にするため、forward 呼び出し時に `sampling_rate` を渡すことを強く推奨します。

padding (`bool`、`str`または[PaddingStrategy](/docs/transformers/main/ja/internal/file_utils#transformers.utils.PaddingStrategy)、*optional*、デフォルトは`True`) : モデルのpadding sideとpadding indexに基づき、入力`raw_speech`波形をパディングするための戦略を以下のいずれかから選択します。 - `True`または`'longest'`: バッチ内の最長のシーケンス長までパディングします（単一のシーケンスのみが提供された場合は、パディングを行いません）。 - `'max_length'`: 引数`max_length`で指定された最大長までパディングします。この引数が提供されていない場合は、モデルが受け入れ可能な最大入力長までパディングします。 - `False`または`'do_not_pad'`（デフォルト）: パディングを行いません（つまり、長さが異なるシーケンスのバッチを出力できます）。 `pad_end = True`の場合、そのパディングは`padding`戦略が適用される前に実行されます。

max_length (`int`, *optional*) : 返されるリストの最大長、および必要に応じてパディング長（上記を参照）。

truncation (`bool`、*任意*、デフォルトは`True`) : `max_length`を超える長さの入力シーケンスを`max_length`に切り詰めるための切り詰め処理を有効にします。

pad_to_multiple_of (`int`, *optional*) : 設定されている場合、シーケンスを指定された値の倍数にパディングします。これは、計算能力が `>= 7.5` (Volta) の NVIDIA ハードウェアで Tensor Cores を使用可能にするため、またはシーケンス長が 128 の倍数であることで性能が向上する TPU で特に有用です。

return_noise (`bool`、*任意*、デフォルトは`True`) : [UnivNetModel.forward()](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetModel.forward)で使用するためのノイズ波形を生成して返すかどうか。

generator (`numpy.random.Generator`、*任意*、デフォルトは`None`) : ノイズを生成する際に使用する任意の`numpy.random.Generator`乱数生成器。

pad_end (`bool`, *任意*, デフォルトは `False`) : 各波形の末尾に無音をパディングするかどうか。これにより、生成されたオーディオサンプルの末尾でのアーティファクトを軽減できる場合があります。詳細は https://github.com/seungwonpark/melgan/issues/8 を参照してください。このパディングは、`padding` で指定されたパディング戦略が実行される前に適用されます。

pad_length (`int`, *任意*, デフォルトは `None`) : 各波形の末尾をパディングする場合、スペクトログラムフレーム単位でのパディングの長さです。設定されていない場合、`self.config.pad_end_length` がデフォルトとして使用されます。

do_normalize (`bool`, *任意*) : 入力に対して Tacotron 2 の正規化を実行するかどうか。正規化を行うことで、一部のモデルではパフォーマンスが大幅に向上する場合があります。設定されていない場合、`self.config.do_normalize` がデフォルト値として使用されます。

return_attention_mask (`bool`、*任意*) : attention mask を返すかどうか。デフォルトのままにすると、特定の feature_extractor のデフォルトに従って attention mask を返します。 [attention mask とは?](../glossary#attention-mask)

return_tensors (`str` または [TensorType](/docs/transformers/main/ja/internal/file_utils#transformers.TensorType)、*optional*) : 設定されている場合、Python の整数のリストではなくテンソルを返します。受け入れ可能な値は以下の通りです: - `'pt'`: PyTorch の `torch.np.array` オブジェクトを返します。 - `'np'`: Numpy の `np.ndarray` オブジェクトを返します。

1つ以上のシーケンスを特徴量化し、モデル用に準備するための主要なメソッド。

## UnivNetModel[[transformers.UnivNetModel]]

#### transformers.UnivNetModel[[transformers.UnivNetModel]]

```python
transformers.UnivNetModel(config: UnivNetConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/univnet/modeling_univnet.py#L425)

**パラメータ:**

config ([UnivNetConfig](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

特定のヘッドを付加せずに、生のhidden-statesを出力する素のUnivnet Modelです。

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

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

#### forward[[transformers.UnivNetModel.forward]]

```python
forward(input_features: Tensor, noise_sequence: typing.Optional[torch.Tensor] = None, padding_mask: typing.Optional[torch.Tensor] = None, generator: typing.Optional[torch.Generator] = None, return_dict: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/univnet/modeling_univnet.py#L469)

**パラメータ:**

input_features (`torch.Tensor`、形状 `(batch_size, sequence_length, feature_dim)`) : 入力音声特徴に対応するテンソルです。音声特徴は [UnivNetFeatureExtractor](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetFeatureExtractor) を使用して取得できます。詳細は [UnivNetFeatureExtractor.__call__()](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetFeatureExtractor.__call__) を参照してください（`processor_class` は音声の処理に [UnivNetFeatureExtractor](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetFeatureExtractor) を使用します）。

noise_sequence (`torch.Tensor`, *optional*) : 標準ガウスノイズのノイズシーケンスを含むテンソル。バッチ化して形状が`(batch_size, sequence_length, config.model_in_channels)`、またはバッチ化せずに形状が(sequence_length, config.model_in_channels)`である必要があります。指定されない場合、ランダムに生成されます。

padding_mask (`torch.BoolTensor`, *任意*) : 各シーケンスのどの部分がパディングされているかを示すマスク。マスクの値は`[0, 1]`から選択されます:  - **マスクされていない**トークンは1 - **マスクされている**トークンは0  マスクはバッチ化されて`(batch_size, sequence_length)`の形状を持つことも、バッチ化され`(sequence_length,)`の形状を持つこともできます。

generator (`torch.Generator`, *任意*) : 生成を決定論的にするための [torch generator](https://pytorch.org/docs/stable/generated/torch.Generator.html)。return_dict: プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) のサブクラスを返すかどうか。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

**戻り値:** `UnivNetModelOutput` または `tuple(torch.Tensor)`

`UnivNetModelOutput`、または`torch.Tensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。設定（[UnivNetConfig](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetConfig)）と入力に応じて、さまざまな要素で構成されます。

[UnivNetModel](/docs/transformers/main/ja/model_doc/univnet#transformers.UnivNetModel)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

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

- **波形**（`torch.Tensor`、形状 `(batch_size, sequence_length)`）-- バッチ化された1次元（モノラル）出力音声波形。
- **waveform_lengths** (`torch.Tensor`、形状 `(batch_size,)`) -- `waveforms` 内の各パディングなし波形のサンプル単位のバッチ長。

例:

```python
>>> from transformers import UnivNetFeatureExtractor, UnivNetModel
>>> from datasets import load_dataset, Audio

>>> model = UnivNetModel.from_pretrained("dg845/univnet-dev")
>>> feature_extractor = UnivNetFeatureExtractor.from_pretrained("dg845/univnet-dev")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> # Resample the audio to the feature extractor's sampling rate.
>>> ds = ds.cast_column("audio", Audio(sampling_rate=feature_extractor.sampling_rate))
>>> inputs = feature_extractor(
...     ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], return_tensors="pt"
... )
>>> audio = model(**inputs).waveforms
>>> list(audio.shape)
[1, 140288]
```

