Git Product home page Git Product logo

aiautocover's Introduction

✨ AiAutoCover

Данный блокнот позволяет заменить голос в песне всего в несколько кликов. Вам понадобятся ссылка на YouTube и ссылка на модель вокала. Всё, нейро-кавер готов! Не нужно ничего устанавливать. Все вычисления происходят на серверах гугл (около 2 часов в день - бесплатно).
Используются open-source модели и репозиторий UVR для отделения вокала от инструментала, RVC для преобразования вокала, SadTalker для анимирования лица (если используете блокнот с SadTalker).
Open In Colab - AI Auto Cover
Open In Colab - AI Auto Cover + SadTalker

💪 Как работает

Установка и подготовка

Подготовка к работе включает в себя установку зависимостей (UVR + RVC), скачивание исходного аудио и модели вокала.

Обработка аудио

Здесь происходит отделение вокала от инструментала. Далее происходит дополнительная обработка от реверберации и эха, а также, есть возможность поэкспериментировать с настройками преобразования голоса. Затем происходит преобразование вокала с использованием выбранной модели

Пост-обработка и финальные штрихи

После преобразования вокала следует пост-обработка, которая включает в себя компрессию, нормализацию, лёгкую реверберацию и разведение по стерео-панораме. Затем вокал и инструментал смешиваются обратно, и вуаля, ваш кавер готов!

Анимирование фотографии

Используя блокнот с SadTalker можно заставить "петь" под готовый кавер любую фотографию.

Повторное использование

Система позволяет возвращаться к любому предыдущему шагу без необходимости запускать полный процесс заново. Например, вы можете загрузить другую модель вокала и преобразовать её, не возвращаясь к отделению вокала от инструмента.

📌 TODO

Вот некоторые вещи, которые я планирую добавить или улучшить:

Прикрутить Google Drive

Сейчас каждый раз приходится скачивать репозитории и устанавливать зависимости, так что первым делом надо сделать Google Drive основным хранилищем. Это облегчит жизнь и сэкономит время.

DeepFake в v2: клипы на новом уровне

На следующем этапе планирую прикрутить DeepFake, чтобы можно было не только делать аудио-каверы, но и менять лица в клипах. Во прикол будет!

Интеграция с SoundCloud, Spotify, Apple Music и другими платформами

Думаю, будет удобно, если добавить возможность напрямую скачивать треки из музыкальных стриминговых сервисов, таких как SoundCloud, Spotify или Apple Music. Наверное, это упростит процесс и сделает его ещё быстрее.

💬 Задать вопрос

Все предложения и замечания приветствуются! Пожалуйста, используйте специальные каналы для вопросов и обсуждений. Помощь гораздо ценнее, если она предоставляется публично, чтобы ею могли воспользоваться больше людей.

Type Platforms
🚨 Баг-репорты GitHub Трекер
🎁 Feature Requests & Идеи GitHub Pull Requests

👩‍💻 Контрибьютеры и поддержка 🐸

Спасибо NeuroDonu за помощь ❤

Star History Chart

 

aiautocover's People

Contributors

self-destruction avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

aiautocover's Issues

Getting error in AI_Auto_Cover_V1.ipynb - Обработка исходного аудио

/content/MVSEP-MDX23-Colab_v2
GPU use: 0
started!

Options:
BigShifts: 7

weight_InstVoc: 8.0
weight_VitLarge: 5.0

overlap_InstVoc: 1
overlap_VitLarge: 1

use_VOCFT: False
vocals_only: True
output_format: PCM_16

Loading InstVoc into memory
100% 427M/427M [00:01<00:00, 287MB/s]
100% 709/709 [00:00<00:00, 3.24MB/s]
Loading VitLarge into memory
100% 824M/824M [00:04<00:00, 209MB/s]
100% 1.21k/1.21k [00:00<00:00, 4.60MB/s]
model.safetensors: 100% 850M/850M [00:10<00:00, 84.1MB/s]
Go for: /content/input/audio.mp3
Input audio: (2, 9353217) Sample rate: 44100
Processing vocals with VitLarge model...
0% 0/7 [00:00<?, ?it/s]
2
0% 0/7 [07:07<?, ?it/s]
Traceback (most recent call last):
File "/content/MVSEP-MDX23-Colab_v2/inference.py", line 816, in
predict_with_model(options)
File "/content/MVSEP-MDX23-Colab_v2/inference.py", line 715, in predict_with_model
result, sample_rates = model.separate_music_file(audio.T, sr, i, len(options['input_audio']))
File "/content/MVSEP-MDX23-Colab_v2/inference.py", line 525, in separate_music_file
vocals4, instrum4 = demix_full_vitlarge(audio, self.device, self.model_vl)
File "/content/MVSEP-MDX23-Colab_v2/inference.py", line 311, in demix_full_vitlarge
sources = demix_vitlarge(model, shifted_mix, device)
File "/content/MVSEP-MDX23-Colab_v2/inference.py", line 286, in demix_vitlarge
x = model(part.unsqueeze(0))[0]
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1518, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1527, in _call_impl
return forward_call(*args, **kwargs)
File "/content/MVSEP-MDX23-Colab_v2/modules/segm_models.py", line 135, in forward
x = self.unet_model(x)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1518, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1527, in _call_impl
return forward_call(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/segmentation_models_pytorch/base/model.py", line 29, in forward
features = self.encoder(x)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1518, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1527, in _call_impl
return forward_call(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/segmentation_models_pytorch/encoders/timm_universal.py", line 30, in forward
features = self.model(x)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1518, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1527, in _call_impl
return forward_call(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/timm/models/_features.py", line 281, in forward
return list(self._collect(x).values())
File "/usr/local/lib/python3.10/dist-packages/timm/models/_features.py", line 235, in _collect
x = module(x)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1518, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1527, in _call_impl
return forward_call(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/timm/models/maxxvit.py", line 1064, in forward
x = self.blocks(x)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1518, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1527, in _call_impl
return forward_call(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/container.py", line 215, in forward
input = module(input)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1518, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1527, in _call_impl
return forward_call(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/timm/models/maxxvit.py", line 949, in forward
x = self.conv(x)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1518, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1527, in _call_impl
return forward_call(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/timm/models/maxxvit.py", line 542, in forward
x = self.conv2_kxk(x)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1518, in _wrapped_call_impl
return self._call_impl(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py", line 1527, in _call_impl
return forward_call(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/conv.py", line 460, in forward
return self._conv_forward(input, self.weight, self.bias)
File "/usr/local/lib/python3.10/dist-packages/torch/nn/modules/conv.py", line 456, in _conv_forward
return F.conv2d(input, weight, bias, self.stride,
KeyboardInterrupt

Послушаем разделённый трек.
Нужно немного подождать, сейчас появится...
Вокал:


ValueError Traceback (most recent call last)

in <cell line: 53>()
51 get_ipython().system('ffmpeg -y -i {INSTRUM_FILE} -vn -ar 44100 -ac 2 -b:a 192k {os.path.join(OUTPUT_UVR_FOLDER, INPUT_NAME + "_instrum")}.mp3 &> /dev/null')
52 print("Вокал:")
---> 53 audio_vocal = Audio(os.path.join(OUTPUT_UVR_FOLDER, INPUT_NAME + "_vocals.mp3"), autoplay=False)
54 display(audio_vocal)
55 print("Инструментал:")

/usr/local/lib/python3.10/dist-packages/IPython/lib/display.py in init(self, data, filename, url, embed, rate, autoplay, normalize, element_id)
114 if self.data is not None and not isinstance(self.data, bytes):
115 if rate is None:
--> 116 raise ValueError("rate must be specified when data is a numpy array or list of audio samples.")
117 self.data = Audio._make_wav(data, rate, normalize)
118

ValueError: rate must be specified when data is a numpy array or list of audio samples.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.