diff --git a/README.md b/README.md
index 11e0dca..5287a64 100644
--- a/README.md
+++ b/README.md
@@ -23,6 +23,8 @@ Go to https://soundcloud.com/teticio2/sets/audio-diffusion-loops for more exampl
---
#### Updates
+**5/12/2022** 🤗 Exciting news! `AudioDiffusionPipeline` has been migrated to the Hugging Face `diffusers` package so that it is even easier for others to use and contribute.
+
**2/12/2022**. Added Mel to pipeline and updated the pretrained models to save Mel config (they are now no longer compatible with previous versions of this repo). It is relatively straightforward to migrate previously trained models to the new format (see https://huggingface.co/teticio/audio-diffusion-256).
**7/11/2022**. Added pre-trained latent audio diffusion models [teticio/latent-audio-diffusion-256](https://huggingface.co/teticio/latent-audio-diffusion-256) and [teticio/latent-audio-diffusion-ddim-256](https://huggingface.co/teticio/latent-audio-diffusion-ddim-256). You can use the pre-trained VAE to train your own latent diffusion models on a different set of audio files.
@@ -62,12 +64,20 @@ You can play around with some pre-trained models on [Google Colab](https://colab
## Generate Mel spectrogram dataset from directory of audio files
-#### Install
+#### Install from GitHub (includes training scripts)
```bash
+git clone https://github.com/teticio/audio-diffusion.git
+cd audio-diffusion
pip install .
```
+#### Install from PyPI
+
+```bash
+pip install audiodiffusion
+```
+
#### Training can be run with Mel spectrograms of resolution 64x64 on a single commercial grade GPU (e.g. RTX 2080 Ti). The `hop_length` should be set to 1024 for better results
```bash
diff --git a/audiodiffusion/__init__.py b/audiodiffusion/__init__.py
index 27fda4c..22ff5ec 100644
--- a/audiodiffusion/__init__.py
+++ b/audiodiffusion/__init__.py
@@ -1,13 +1,13 @@
-from typing import Iterable, Tuple, Union
+from typing import Iterable, Tuple
import torch
import numpy as np
from PIL import Image
from tqdm.auto import tqdm
from librosa.beat import beat_track
-#from diffusers import DiffusionPipeline
+from diffusers import AudioDiffusionPipeline
-VERSION = "1.3.1"
+VERSION = "1.3.2"
class AudioDiffusion:
@@ -131,6 +131,7 @@ def loop_it(audio: np.ndarray,
return None
+'''
# This code will be migrated to diffusers shortly
#-----------------------------------------------------------------------------#
@@ -140,6 +141,7 @@ def loop_it(audio: np.ndarray,
from typing import Any, Dict, Optional, Union
from diffusers.configuration_utils import ConfigMixin, register_to_config
+from diffusers.schedulers.scheduling_utils import SchedulerMixin
warnings.filterwarnings("ignore")
@@ -150,7 +152,7 @@ def loop_it(audio: np.ndarray,
from PIL import Image # noqa: E402
-class Mel(ConfigMixin):
+class Mel(ConfigMixin, SchedulerMixin):
"""
Parameters:
x_res (`int`): x resolution of spectrogram (time)
@@ -272,88 +274,6 @@ def image_to_audio(self, image: Image.Image) -> np.ndarray:
)
return audio
- @classmethod
- def from_pretrained(
- cls,
- pretrained_model_name_or_path: Dict[str, Any] = None,
- subfolder: Optional[str] = None,
- return_unused_kwargs=False,
- **kwargs,
- ):
- r"""
- Instantiate a Mel class from a pre-defined JSON configuration file inside a directory or Hub repo.
-
- Parameters:
- pretrained_model_name_or_path (`str` or `os.PathLike`, *optional*):
- Can be either:
-
- - A string, the *model id* of a model repo on huggingface.co. Valid model ids should have an
- organization name, like `google/ddpm-celebahq-256`.
- - A path to a *directory* containing the mel configurations saved using [`~Mel.save_pretrained`],
- e.g., `./my_model_directory/`.
- subfolder (`str`, *optional*):
- In case the relevant files are located inside a subfolder of the model repo (either remote in
- huggingface.co or downloaded locally), you can specify the folder name here.
- return_unused_kwargs (`bool`, *optional*, defaults to `False`):
- Whether kwargs that are not consumed by the Python class should be returned or not.
- cache_dir (`Union[str, os.PathLike]`, *optional*):
- Path to a directory in which a downloaded pretrained model configuration should be cached if the
- standard cache should not be used.
- force_download (`bool`, *optional*, defaults to `False`):
- Whether or not to force the (re-)download of the model weights and configuration files, overriding the
- cached versions if they exist.
- resume_download (`bool`, *optional*, defaults to `False`):
- Whether or not to delete incompletely received files. Will attempt to resume the download if such a
- file exists.
- proxies (`Dict[str, str]`, *optional*):
- A dictionary of proxy servers to use by protocol or endpoint, e.g., `{'http': 'foo.bar:3128',
- 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request.
- output_loading_info(`bool`, *optional*, defaults to `False`):
- Whether or not to also return a dictionary containing missing keys, unexpected keys and error messages.
- local_files_only(`bool`, *optional*, defaults to `False`):
- Whether or not to only look at local files (i.e., do not try to download the model).
- use_auth_token (`str` or *bool*, *optional*):
- The token to use as HTTP bearer authorization for remote files. If `True`, will use the token generated
- when running `transformers-cli login` (stored in `~/.huggingface`).
- revision (`str`, *optional*, defaults to `"main"`):
- The specific model version to use. It can be a branch name, a tag name, or a commit id, since we use a
- git-based system for storing models and other artifacts on huggingface.co, so `revision` can be any
- identifier allowed by git.
-
-
-
- It is required to be logged in (`huggingface-cli login`) when you want to use private or [gated
- models](https://huggingface.co/docs/hub/models-gated#gated-models).
-
-
-
-
-
- Activate the special ["offline-mode"](https://huggingface.co/transformers/installation.html#offline-mode) to
- use this method in a firewalled environment.
-
-
-
- """
- config, kwargs = cls.load_config(
- pretrained_model_name_or_path=pretrained_model_name_or_path,
- subfolder=subfolder,
- return_unused_kwargs=True,
- **kwargs,
- )
- return cls.from_config(config, return_unused_kwargs=return_unused_kwargs, **kwargs)
-
- def save_pretrained(self, save_directory: Union[str, os.PathLike], push_to_hub: bool = False, **kwargs):
- """
- Save a mel configuration object to the directory `save_directory`, so that it can be re-loaded using the
- [`~Mel.from_pretrained`] class method.
-
- Args:
- save_directory (`str` or `os.PathLike`):
- Directory where the configuration JSON file will be saved (will be created if it does not exist).
- """
- self.save_config(save_directory=save_directory, push_to_hub=push_to_hub, **kwargs)
-
#-----------------------------------------------------------------------------#
from math import acos, sin
@@ -603,3 +523,4 @@ class audio_diffusion():
setattr(diffusers, AudioDiffusionPipeline.__name__, AudioDiffusionPipeline)
diffusers.pipeline_utils.LOADABLE_CLASSES['audio_diffusion'] = {}
diffusers.pipeline_utils.LOADABLE_CLASSES['audio_diffusion']['Mel'] = ["save_pretrained", "from_pretrained"]
+'''
diff --git a/notebooks/test_model.ipynb b/notebooks/test_model.ipynb
index 560e1c7..95e4b35 100644
--- a/notebooks/test_model.ipynb
+++ b/notebooks/test_model.ipynb
@@ -10,7 +10,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
"id": "6c7800a6",
"metadata": {},
"outputs": [],
@@ -27,7 +27,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"id": "b447e2c4",
"metadata": {},
"outputs": [],
@@ -39,7 +39,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 3,
"id": "c2fc0e7a",
"metadata": {},
"outputs": [],
@@ -55,7 +55,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 4,
"id": "b294a94a",
"metadata": {},
"outputs": [],
@@ -82,7 +82,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 5,
"id": "97f24046",
"metadata": {},
"outputs": [],
@@ -98,10 +98,61 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 11,
+ "id": "88bebba3",
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "AttributeError",
+ "evalue": "'AudioDiffusion' object has no attribute 'Mel'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
+ "Input \u001b[0;32mIn [11]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43maudio_diffusion\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mMel\u001b[49m\n",
+ "\u001b[0;31mAttributeError\u001b[0m: 'AudioDiffusion' object has no attribute 'Mel'"
+ ]
+ }
+ ],
+ "source": [
+ "audio_diffusion.Mel"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
"id": "a3d45c36",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "89e8b4345bab47378576244f4d3f7b44",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Downloading: 0%| | 0.00/244 [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "94fb620eb33841558c720e6be0b501a6",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Fetching 5 files: 0%| | 0/5 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"audio_diffusion = AudioDiffusion(model_id=model_id)\n",
"mel = audio_diffusion.pipe.mel"
@@ -117,10 +168,120 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 7,
"id": "b809fed5",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Seed = 3170503070637514\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "b972878804fc4e6782f8fae6786b9cf8",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ " 0%| | 0/1000 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " "
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " "
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Seed = 2275699277188148\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "e049bd4fb00542feba252d9f9da2334d",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ " 0%| | 0/1000 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "ename": "KeyboardInterrupt",
+ "evalue": "",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
+ "Input \u001b[0;32mIn [7]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSeed = \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mseed\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 4\u001b[0m generator\u001b[38;5;241m.\u001b[39mmanual_seed(seed)\n\u001b[1;32m 5\u001b[0m image, (sample_rate,\n\u001b[0;32m----> 6\u001b[0m audio) \u001b[38;5;241m=\u001b[39m \u001b[43maudio_diffusion\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgenerate_spectrogram_and_audio\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[43mgenerator\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgenerator\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 8\u001b[0m display(image)\n\u001b[1;32m 9\u001b[0m display(Audio(audio, rate\u001b[38;5;241m=\u001b[39msample_rate))\n",
+ "File \u001b[0;32m~/ML/huggingface/audio-diffusion/audiodiffusion/__init__.py:54\u001b[0m, in \u001b[0;36mAudioDiffusion.generate_spectrogram_and_audio\u001b[0;34m(self, steps, generator, step_generator, eta, noise)\u001b[0m\n\u001b[1;32m 32\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mgenerate_spectrogram_and_audio\u001b[39m(\n\u001b[1;32m 33\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 34\u001b[0m steps: \u001b[38;5;28mint\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 38\u001b[0m noise: torch\u001b[38;5;241m.\u001b[39mTensor \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 39\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Tuple[Image\u001b[38;5;241m.\u001b[39mImage, Tuple[\u001b[38;5;28mint\u001b[39m, np\u001b[38;5;241m.\u001b[39mndarray]]:\n\u001b[1;32m 40\u001b[0m \u001b[38;5;124;03m\"\"\"Generate random mel spectrogram and convert to audio.\u001b[39;00m\n\u001b[1;32m 41\u001b[0m \n\u001b[1;32m 42\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[38;5;124;03m (float, np.ndarray): sample rate and raw audio\u001b[39;00m\n\u001b[1;32m 52\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m 53\u001b[0m images, (sample_rate,\n\u001b[0;32m---> 54\u001b[0m audios) \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpipe\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbatch_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 55\u001b[0m \u001b[43m \u001b[49m\u001b[43msteps\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msteps\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 56\u001b[0m \u001b[43m \u001b[49m\u001b[43mgenerator\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mgenerator\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 57\u001b[0m \u001b[43m \u001b[49m\u001b[43mstep_generator\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstep_generator\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 58\u001b[0m \u001b[43m \u001b[49m\u001b[43meta\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43meta\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 59\u001b[0m \u001b[43m \u001b[49m\u001b[43mnoise\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnoise\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 60\u001b[0m \u001b[43m \u001b[49m\u001b[43mreturn_dict\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 61\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m images[\u001b[38;5;241m0\u001b[39m], (sample_rate, audios[\u001b[38;5;241m0\u001b[39m])\n",
+ "File \u001b[0;32m~/.local/share/virtualenvs/huggingface-OfWfm_Zx/lib/python3.10/site-packages/torch/autograd/grad_mode.py:27\u001b[0m, in \u001b[0;36m_DecoratorContextManager.__call__..decorate_context\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdecorate_context\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclone():\n\u001b[0;32m---> 27\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
+ "File \u001b[0;32m~/ML/huggingface/diffusers/src/diffusers/pipelines/audio_diffusion/pipeline_audio_diffusion.py:160\u001b[0m, in \u001b[0;36mAudioDiffusionPipeline.__call__\u001b[0;34m(self, batch_size, audio_file, raw_audio, slice, start_step, steps, generator, mask_start_secs, mask_end_secs, step_generator, eta, noise, return_dict)\u001b[0m\n\u001b[1;32m 157\u001b[0m mask \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mscheduler\u001b[38;5;241m.\u001b[39madd_noise(input_images, noise, torch\u001b[38;5;241m.\u001b[39mtensor(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mscheduler\u001b[38;5;241m.\u001b[39mtimesteps[start_step:]))\n\u001b[1;32m 159\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m step, t \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprogress_bar(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mscheduler\u001b[38;5;241m.\u001b[39mtimesteps[start_step:])):\n\u001b[0;32m--> 160\u001b[0m model_output \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43munet\u001b[49m\u001b[43m(\u001b[49m\u001b[43mimages\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mt\u001b[49m\u001b[43m)\u001b[49m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 162\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mscheduler, DDIMScheduler):\n\u001b[1;32m 163\u001b[0m images \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mscheduler\u001b[38;5;241m.\u001b[39mstep(\n\u001b[1;32m 164\u001b[0m model_output\u001b[38;5;241m=\u001b[39mmodel_output, timestep\u001b[38;5;241m=\u001b[39mt, sample\u001b[38;5;241m=\u001b[39mimages, eta\u001b[38;5;241m=\u001b[39meta, generator\u001b[38;5;241m=\u001b[39mstep_generator\n\u001b[1;32m 165\u001b[0m )[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mprev_sample\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n",
+ "File \u001b[0;32m~/.local/share/virtualenvs/huggingface-OfWfm_Zx/lib/python3.10/site-packages/torch/nn/modules/module.py:1130\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 1126\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m 1127\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m 1128\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m 1129\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1130\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1131\u001b[0m \u001b[38;5;66;03m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m 1132\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[38;5;241m=\u001b[39m [], []\n",
+ "File \u001b[0;32m~/ML/huggingface/diffusers/src/diffusers/models/unet_2d.py:247\u001b[0m, in \u001b[0;36mUNet2DModel.forward\u001b[0;34m(self, sample, timestep, return_dict)\u001b[0m\n\u001b[1;32m 245\u001b[0m sample, skip_sample \u001b[38;5;241m=\u001b[39m upsample_block(sample, res_samples, emb, skip_sample)\n\u001b[1;32m 246\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 247\u001b[0m sample \u001b[38;5;241m=\u001b[39m \u001b[43mupsample_block\u001b[49m\u001b[43m(\u001b[49m\u001b[43msample\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mres_samples\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43memb\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 249\u001b[0m \u001b[38;5;66;03m# 6. post-process\u001b[39;00m\n\u001b[1;32m 250\u001b[0m sample \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconv_norm_out(sample)\n",
+ "File \u001b[0;32m~/.local/share/virtualenvs/huggingface-OfWfm_Zx/lib/python3.10/site-packages/torch/nn/modules/module.py:1130\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 1126\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m 1127\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m 1128\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m 1129\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1130\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1131\u001b[0m \u001b[38;5;66;03m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m 1132\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[38;5;241m=\u001b[39m [], []\n",
+ "File \u001b[0;32m~/ML/huggingface/diffusers/src/diffusers/models/unet_2d_blocks.py:1317\u001b[0m, in \u001b[0;36mUpBlock2D.forward\u001b[0;34m(self, hidden_states, res_hidden_states_tuple, temb, upsample_size)\u001b[0m\n\u001b[1;32m 1315\u001b[0m hidden_states \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mutils\u001b[38;5;241m.\u001b[39mcheckpoint\u001b[38;5;241m.\u001b[39mcheckpoint(create_custom_forward(resnet), hidden_states, temb)\n\u001b[1;32m 1316\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 1317\u001b[0m hidden_states \u001b[38;5;241m=\u001b[39m \u001b[43mresnet\u001b[49m\u001b[43m(\u001b[49m\u001b[43mhidden_states\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtemb\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1319\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mupsamplers \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1320\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m upsampler \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mupsamplers:\n",
+ "File \u001b[0;32m~/.local/share/virtualenvs/huggingface-OfWfm_Zx/lib/python3.10/site-packages/torch/nn/modules/module.py:1130\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 1126\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m 1127\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m 1128\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m 1129\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1130\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1131\u001b[0m \u001b[38;5;66;03m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m 1132\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[38;5;241m=\u001b[39m [], []\n",
+ "File \u001b[0;32m~/ML/huggingface/diffusers/src/diffusers/models/resnet.py:467\u001b[0m, in \u001b[0;36mResnetBlock2D.forward\u001b[0;34m(self, input_tensor, temb)\u001b[0m\n\u001b[1;32m 464\u001b[0m hidden_states \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconv1(hidden_states)\n\u001b[1;32m 466\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m temb \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 467\u001b[0m temb \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtime_emb_proj\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnonlinearity\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtemb\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m[:, :, \u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;28;01mNone\u001b[39;00m]\n\u001b[1;32m 468\u001b[0m hidden_states \u001b[38;5;241m=\u001b[39m hidden_states \u001b[38;5;241m+\u001b[39m temb\n\u001b[1;32m 470\u001b[0m hidden_states \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnorm2(hidden_states)\n",
+ "File \u001b[0;32m~/.local/share/virtualenvs/huggingface-OfWfm_Zx/lib/python3.10/site-packages/torch/nn/modules/module.py:1130\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 1126\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m 1127\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m 1128\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m 1129\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1130\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1131\u001b[0m \u001b[38;5;66;03m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m 1132\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[38;5;241m=\u001b[39m [], []\n",
+ "File \u001b[0;32m~/.local/share/virtualenvs/huggingface-OfWfm_Zx/lib/python3.10/site-packages/torch/nn/modules/linear.py:114\u001b[0m, in \u001b[0;36mLinear.forward\u001b[0;34m(self, input)\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28minput\u001b[39m: Tensor) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Tensor:\n\u001b[0;32m--> 114\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m F\u001b[38;5;241m.\u001b[39mlinear(\u001b[38;5;28minput\u001b[39m, \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mweight\u001b[49m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbias)\n",
+ "File \u001b[0;32m~/.local/share/virtualenvs/huggingface-OfWfm_Zx/lib/python3.10/site-packages/torch/nn/modules/module.py:1194\u001b[0m, in \u001b[0;36mModule.__getattr__\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 1191\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_is_full_backward_hook\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__dict__\u001b[39m:\n\u001b[1;32m 1192\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_full_backward_hook \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m-> 1194\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__getattr__\u001b[39m(\u001b[38;5;28mself\u001b[39m, name: \u001b[38;5;28mstr\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Union[Tensor, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mModule\u001b[39m\u001b[38;5;124m'\u001b[39m]:\n\u001b[1;32m 1195\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_parameters\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__dict__\u001b[39m:\n\u001b[1;32m 1196\u001b[0m _parameters \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__dict__\u001b[39m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_parameters\u001b[39m\u001b[38;5;124m'\u001b[39m]\n",
+ "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
+ ]
+ }
+ ],
"source": [
"for _ in range(10):\n",
" seed = generator.seed()\n",
diff --git a/requirements.txt b/requirements.txt
index ab0083d..38e2823 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,7 @@
torch
numpy
Pillow
-diffusers>=0.9.0
+diffusers>=0.10.0
librosa
datasets
gradio
diff --git a/scripts/audio_to_images.py b/scripts/audio_to_images.py
index 54f5a85..12ac448 100644
--- a/scripts/audio_to_images.py
+++ b/scripts/audio_to_images.py
@@ -7,10 +7,9 @@
import numpy as np
import pandas as pd
from tqdm.auto import tqdm
+from diffusers.pipelines.audio_diffusion import Mel
from datasets import Dataset, DatasetDict, Features, Image, Value
-from audiodiffusion import Mel
-
logging.basicConfig(level=logging.WARN)
logger = logging.getLogger('audio_to_images')
diff --git a/scripts/train_unconditional.py b/scripts/train_unconditional.py
index f82d019..52e322b 100644
--- a/scripts/train_unconditional.py
+++ b/scripts/train_unconditional.py
@@ -11,11 +11,13 @@
from accelerate.logging import get_logger
from datasets import load_from_disk, load_dataset
from diffusers import (
+ AudioDiffusionPipeline,
DDPMScheduler,
UNet2DModel,
DDIMScheduler,
AutoencoderKL,
)
+from diffusers.pipelines.audio_diffusion import Mel
from huggingface_hub import HfFolder, Repository, whoami
from diffusers.optimization import get_scheduler
from diffusers.training_utils import EMAModel
@@ -27,7 +29,6 @@
import numpy as np
from tqdm.auto import tqdm
from librosa.util import normalize
-from audiodiffusion import AudioDiffusionPipeline, Mel
logger = get_logger(__name__)
diff --git a/scripts/train_vae.py b/scripts/train_vae.py
index 9f40268..fc3306d 100644
--- a/scripts/train_vae.py
+++ b/scripts/train_vae.py
@@ -14,13 +14,11 @@
from pytorch_lightning.trainer import Trainer
from torch.utils.data import DataLoader, Dataset
from datasets import load_from_disk, load_dataset
+from diffusers.pipelines.audio_diffusion import Mel
+from audiodiffusion.utils import convert_ldm_to_hf_vae
from pytorch_lightning.callbacks import Callback, ModelCheckpoint
from pytorch_lightning.utilities.distributed import rank_zero_only
-#from diffusers import Mel
-from audiodiffusion import Mel
-from audiodiffusion.utils import convert_ldm_to_hf_vae
-
class AudioDiffusion(Dataset):
diff --git a/setup.cfg b/setup.cfg
index db35447..290b46f 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -15,6 +15,6 @@ install_requires =
torch
numpy
Pillow
- diffusers>=0.9.0
+ diffusers>=0.10.0
librosa
datasets
| |