HuggingFace Diffusers 0.12 : パイプライン : 音声拡散

HuggingFace Diffusers 0.12 : API : パイプライン – 音声拡散 (翻訳/解説)

翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 03/12/2023 (v0.14.0)

* 本ページは、HuggingFace Diffusers の以下のドキュメントを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット 人工知能 研究開発支援サービス

クラスキャット は人工知能・テレワークに関する各種サービスを提供しています。お気軽にご相談ください :

◆ 人工知能とビジネスをテーマに WEB セミナーを定期的に開催しています。スケジュール
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。

お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。

  • 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
  • sales-info@classcat.com  ;  Web: www.classcat.com  ;   ClassCatJP

 

 

HuggingFace Diffusers 0.12 : API : パイプライン – 音声拡散

概要

Robert Dargavel Smith による 音声拡散

音声拡散は、音声サンプルをメルスペクトログラム画像に/から変換することにより、拡散モデルを使用した画像生成の最近の進歩を活用しています。

この実装のオリジナルなコードベースは、訓練スクリプトとサンプル・ノートブックも含めて、ここ で見つけられます。

 

利用可能なパイプライン

 

サンプル

音声拡散

import torch
from IPython.display import Audio
from diffusers import DiffusionPipeline

device = "cuda" if torch.cuda.is_available() else "cpu"
pipe = DiffusionPipeline.from_pretrained("teticio/audio-diffusion-256").to(device)

output = pipe()
display(output.images[0])
display(Audio(output.audios[0], rate=mel.get_sample_rate()))

 
潜在的音声拡散

import torch
from IPython.display import Audio
from diffusers import DiffusionPipeline

device = "cuda" if torch.cuda.is_available() else "cpu"
pipe = DiffusionPipeline.from_pretrained("teticio/latent-audio-diffusion-256").to(device)

output = pipe()
display(output.images[0])
display(Audio(output.audios[0], rate=pipe.mel.get_sample_rate()))

 
音声拡散 with DDIM (より高速)

import torch
from IPython.display import Audio
from diffusers import DiffusionPipeline

device = "cuda" if torch.cuda.is_available() else "cpu"
pipe = DiffusionPipeline.from_pretrained("teticio/audio-diffusion-ddim-256").to(device)

output = pipe()
display(output.images[0])
display(Audio(output.audios[0], rate=pipe.mel.get_sample_rate()))

 
バリエーション, インペインティング, アウトペインティング etc.

output = pipe(
    raw_audio=output.audios[0, 0],
    start_step=int(pipe.get_default_steps() / 2),
    mask_start_secs=1,
    mask_end_secs=1,
)
display(output.images[0])
display(Audio(output.audios[0], rate=pipe.mel.get_sample_rate()))

 

AudioDiffusionPipeline

class AudioDiffusionPipeline(DiffusionPipeline):
    def __init__(
        self,
        vqvae: AutoencoderKL,
        unet: UNet2DConditionModel,
        mel: Mel,
        scheduler: Union[DDIMScheduler, DDPMScheduler],
    ):

パラメータ

  • vqae (AutoencoderKL) — 変分オートエンコーダ for 潜在的音声拡散 or None
  • unet (UNet2DConditionModel) — UNET モデル
  • mel (Mel) — 変換 音声 <-> スペクトログラム
  • scheduler ([DDIMScheduler or DDPMScheduler]) — ノイズ除去スケジューラ

このモデルは DiffusionPipeline から継承されます。(ダウンロードやセーブ, 特定のデバイス上の実行等のような) すべてのパイプラインに対してライブラリが実装する汎用メソッドについてはスーパークラスのドキュメントを確認してください。

class Mel(ConfigMixin, SchedulerMixin):
    def __init__(
        self,
        x_res: int = 256,
        y_res: int = 256,
        sample_rate: int = 22050,
        n_fft: int = 2048,
        hop_length: int = 512,
        top_db: int = 80,
        n_iter: int = 32,
    ):

パラメータ

  • x_res (int) — x 解像度 of スペクトログラム (時間)
  • y_res (int) — y 解像度 of スペクトログラム (周波数ビン)
  • sample_rate (int) — 音声のサンプリングレート
  • n_fft (int) — number of 高速フーリエ変化の数
  • hop_length (int) — ホップ長 (256 y_res より低い場合は、より高い数値が推奨されます)
  • top_db (int) — 最大音量 in デシベル
  • n_iter (int) — Griffin Linn mel inversion の反復数

 

以上