Kircore

Kircore

t.me/govnokoder
На Пикабу
1190 рейтинг 27 подписчиков 1 подписка 3 поста 1 в горячем
Награды:
5 лет на Пикабу
1

Нейросетевые каверы для чайников

Пару недель назад я захотел сделать кавер с одним определённым голосом на какую-нибудь популярную песню. tl;dr всё получилось и ниже вы узнаете, как повторить такой результат:

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

платно

платно

Если допустить немного пердолинга, то есть инструмент для локальной установки с простым веб-интерфейсом и кнопкой "Generate".

Но для полноценной работы ему требуются обученные голосовые модели в формате RVC (об этом ниже), функционала обучения в нём нет.

Ещё немного поисков выдают вариации такого колаба.

Для обучения нужно оплатить подписку Colab Pro, иначе процесс будет прибит сервером с ошибкой "недопустимая инструкция для бесплатного аккаунта".

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

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

Realistic Voice Cloning (реалистичное копирование голоса) или RVC работает по вполне понимаемому алгоритму.

При обучении:

  • дорожка с голосом, который нужно скопировать, нарезается на короткие отрезки

  • эти отрезки сортируются по высоте тона, тембру и эмоциям или настроению (используется нейросетевой инструмент оценки эмоциональности)

  • результат собирается в базу данных и индексируется

При копировании голоса:

  • заменяемая звуковая дорожка тоже нарезается на короткие отрезки

  • эти куски анализируются и подбирается наиболее подходящий аналог из базы данных (модели) обученного голоса

  • подобранному кусочку меняется высота тона, скорость воспроизведения и, если точного аналога не найдено, накладывается "акцент" для создания похожего звука

  • результат сшивается в цельную звуковую дорожку

Конечно "под капотом" всё устроено значительно сложнее, но принцип понятен.

Устанавливаем скрипты для обучения локально

Всё необходимое можно взять отсюда.

Если умеете пользоваться гитом и командной строкой, то можете сразу перейти к пункту про обучение модели. Ниже будет подробная инструкция по установке.

Требования к железу:

  • компьютер с Windows или Linux

  • дискретная видеокарта с 8 ГБ памяти или больше (поддерживаются NVIDIA, AMD и Intel)

Git

Пользователи линукса разберутся сами, остальным качать отсюда.

Из важных флагов установки только этот:

После запустите командную строку (Win+R > powershell > Enter) и проверьте правильность установки командой:

git -v

Должно быть что-то типа этого:

Теперь командную строку можно закрыть.

Python

Установим python версии 3.9 (это нужно для инструмента генерации в будущем) отсюда (внизу страницы):

При установке необходимо отметить эти опции:

менеджер пакетов для установки зависимостей

менеджер пакетов для установки зависимостей

добавление в переменные среды для запуска из командной строки

добавление в переменные среды для запуска из командной строки

Ещё раз запускаем командную строку и проверяем правильность установки:

python --version

FFmpeg

Качаем отсюда архив:

И распаковываем в любую папку. В моём случае C:\ffmpeg и файл ffmpeg.exe находится по адресу C:\ffmpeg\bin\ffmpeg.exe

Почти готово, нужно только добавить путь к ffmpeg в переменную path.

Нажимаем Win и начинаем вводить "изменение переменных среды":

выбираем этот пункт

выбираем этот пункт

В системных переменных выбираем Path и нажимаем "Изменить..."

Создаём новую переменную с путём до файла ffmpeg.exe

Опять открываем командную строку и проверяем правильность установки:

ffmpeg

Непосредственно установка

Создайте на диске папку, где будет размещаться софт для обучения модели. У меня это C:\AIcovers (обойдитесь без пробелов в именах папок, это упростит работу в будущем).

Откройте командную строку и перейдите в только что созданную папку.

cd C:\AIcovers

Клонируем этот репозиторий в папку train командой:

git clone https://github.com/RVC-Project/Retrieval-based-Voice-Convers... train

Переходим в папку train:

cd train

Устанавливаем необходимые библиотеки:

pip install torch torchvision torchaudio

Для связки Windows и карт RTX30xx нужно выполнить:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117

Для варианта Linux и AMD:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.4.2

Далее выберите свой вариант

Карта NVIDIA:

pip install -r requirements.txt

Windows и карта AMD или Intel:

pip install -r requirements-dml.txt

Linux и карта Intel:

pip install -r requirements-ipex.txt

Linux и AMD:

pip install -r requirements-amd.txt

Осталось скачать предобученные модели для обработки звука. В основном репозитории нет скрипта для автоматического скачивания этих файлов, поэтому я набросал нечто корявое, но рабочее и отправил PR в основной репозиторий. После мержа курсивный текст будет неактуален.

Скачайте и сохраните у себя файл download_models.py в папке train/tools, куда мы клонировали репозиторий. Затем выполните команду:

python tools/download_models.py

Готово. Запускаем командой:

python infer-web.py

И у нас автоматически должно открыться окно браузера с интерфейсом

Если видите это — поздравляю, вы всё сделали правильно. Читайте дальше, чтобы понять, как этим пользоваться.

Обучаем голосовую модель

В интерфейсе переходим на вкладку "Обучение модели":

Нужно подготовить данные для обучения модели.

Задайте название для модели голоса в соответствующем поле.

Создайте на диске папку и положите в неё один или несколько файлов с записью голоса. Это должны быть аудиофайлы почти в любом формате. Точно поддерживаются wav, mp3 и m4a.

Голос должен быть максимально очищен от шумов и фоновой музыки. Не должно быть посторонних звуков, которые человек не может издавать ртом.

Для редактирования звука можно воспользоваться бесплатным редактором Audacity.

Введите адрес к папке с аудиозаписями в это поле:

Если в пути к этой папке есть пробелы, то добавьте кавычки.

Нажмите кнопку "Обработать данные" и дождитесь сообщения "end preprocess" в поле справа от кнопки.

Следующая операция выполняется немного дольше. Сперва выберите алгоритм обработки данных (извлечения черт):

Лучшее качество дают rmvpe и rmvpe_gpu. Они по-разному нагружают видеокарту и центральный процессор. Я так и не понял, какой лучше, поэтому выбираю второй.

Нажмите кнопку "Извлечь черты" и дождитесь сообщения "all-feature-done" в поле справа от кнопки.

В последнем пункте задайте число "эпох обучения".

Рекомендуется задавать такие значения:

• 20-30 для исходника низкого качества с высоким уровнем шума, большее число не улучшит качества обучения

• ~200 для датасета высокого качества, с низким уровнем фонового шума и достаточной продолжительностью (10 минут и более)

Этот параметр влияет на использование видеопамяти:

Рекомендаций по оптимальному значению не дам, подбирайте экспериментально для каждого датасета, чтобы расход видеопамяти не вылезал за общий её объём, иначе будет использована системная ОЗУ (та самая DDR на материнской плате) и вместо ускорения обучения вы получите замедление.

использовано 3.9 ГБ более медленной системной памяти

использовано 3.9 ГБ более медленной системной памяти

Нажимайте кнопку "Обучить модель" и ждите окончания процесса. Как и в предыдущих этапах в правом поле будет отображаться результат. В консоли можете следить за ходом процесса.

Дожидаемся окончания обучения и нажимаем кнопку "Обучить индекс черт" и ждём ещё немного.

Заходим в папку с нажим скриптом и по пути assets\weights находим файл *имя-модели*.pth (в моём случае my-voice.pth) и копируем его в отдельную папку.

Теперь по пути logs\*имя-модели* (в моём случае logs\my-voice) находим файл с именем формата added_IVFxxx_Flat_nprobe_1_*имя-модели*_v2.index (у меня это added_IVF2050_Flat_nprobe_1_my-voice_v2.index) и копируем его в папку к файлу .pth из предыдущего пункта.

Запакуйте оба файла в архив zip с любым именем. Можно использовать встроенный инструмент Windows из контекстного меню Отправить > Сжатая zip-папка.

Или значительно более быстрый бесплатный 7zip.

Поздравляю, этот архив и есть нужная голосовая модель в формате RVC.

В этом места закончился лимит на картинки. Все иллюстрации можете посмотреть в статье на телеграфе.

Замена голоса в треках

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

Установка

Для начала установим необходимый sox.

Установите его и добавьте в переменные среды путь к папке установки, как мы делали в прошлый раз для FFmpeg.

Откройте командную строку и проверьте правильность установки командой:

sox --version

Перейдите в папку, которую мы создавали для инструмента обучения моделей и клонируйте репозиторий:

cd C:\AIcovers

git clone https://github.com/SociallyIneptWeeb/AICoverGen.git make

Установим зависимости:

cd make pip install -r requirements.txt

Скачаем предобученные модели:

python src/download_models.py

Готово. Запускаем:

python src/webui.py

В консоли после запуска будет ссылка, по которой открывается веб-интерфейс.

Для задания другого сетевого порта добавьте параметр --listen-port *номер порта*, а для доступности интерфейса с других компьютеров в локальной сети добавьте параметр --listen.

python src/webui.py --listen --listen-port 8081

Для доступности из интернета можно добавить параметр --share.

Использование

Откроем интерфейс и перейдём на вкладку "Upload model", чтобы добавить обученную на предыдущем этапе модель голоса.

Выберите файл для загрузки, задайте имя модели в поле "Model name" и нажмите кнопку "Upload model".

Если всё правильно, то в поле "Output message" вы увидите сообщение "model successfully uploaded!".

Теперь переходите на вкладку "Generate" и нажимайте кнопку "Refresh models". В списке "Voice models" появится загруженная вами модель. Выберите её.

В поле "Song input" можно либо вставить ссылку на ролик на YouTube, либо загрузить файл, выбрать вариант "Upload file instead". Рекомендую начать эксперименты с песни Джонни Кэша, у неё хорошо отделяется вокал и достаточно разборчивый голос для замены.

Нажимайте кнопку "Generate" и ждите результата. Подбирайте параметры, пока не получится что-то хорошее. Делитесь получившимися шедеврами.

Если будут вопросы, то можете задать их мне в телеграме.

Подписывайтесь на канал, ставьте лайки, жмите на колокольчик и всё такое. Всех люблю и обнимаю.

Показать полностью 24
1008

Фильм о технологиях производства электроники: от легирования кремния, до сборки компьютера

Я перевёл на русский язык фильм Silicon Run II (Кремниевый забег, часть 2), в котором очень интересно и наглядно показаны этапы производства современной электроники. Видеоряд почти целиком состоит из съёмок реальных производственных линий, многие из которых не найти в других местах.

Текст читает Павел Поцелуев (канал Alpha Centauri). Приятного просмотра.

Хоть фильм и снят в 1993 году, но эти же самые технологии используются сегодня на производстве компьютеров, смартфонов и других электронных устройств.

Например многочиповые сборки сейчас применяются не только в суперкомпьютерах, но и в бытовых компьютерах:

«Чиплет» AMD Threadripper 3990X со снятой металлической крышкой-теплораспределителем.

Графический модуль XBOX 360 из двух чипов на одной подложке.


Технология поверхностного монтажа практически не изменилась. Сегодняшние установщики компонентов (pick-and-place machine) работают быстрее и способны размещать компоненты меньшего размера.

Я работал с таким станком: одна голова, две камеры снизу для компонентов, одна на голове, около 40 автоматических питателей (податчиков) компонентов, автоматическая смена насадок.


Пайка волной используется для выводных компонентов. Приклеенные компоненты можно увидеть, например, на печатных платах блоков питания с нижней стороны.

Плата компьютерной мыши. Видно красные капли клея под SMD-компонентами.


Корпусирование кристаллов в пластик с различными видами выводных рамок, широко применяется в производстве компонентов бытовой электроники.

Печатная плата интернет-маршрутизатора.


Часть про программное обеспечение немного устарела, но в общем смысле верна. Список типов системного ПО значительно расширился, а приложения всё так же используют ОС для управления компонентами компьютера.


Интересные места в фильме


Станок контролирует усилие при установке выводных компонентов. Здесь установщик не попал с первого раза в отверстия и сделал ещё несколько попыток.

Обычно, при некотором числе ошибок станок должен выбросить компонент в корзину дефектных деталей, взять другой компонент из питателя и попытаться установить его. Это позволяет не останавливать сборочную линию.


Написание статьи по материаловедению прервано маленьким человеком одним из самых жестоких способов.

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

Принцип УЗС основан на приложении к области интерфейса проволоки и контактной площадки механических колебаний высокой частоты (~70 – 100 кГц) при одновременном воздействии давления в течение определённого периода времени. В результате высокочастотного трения соприкасающиеся поверхности деформируются, разогреваются и освобождаются от оксидных плёнок. В результате происходит соединение материалов проволоки и контактной площадки на атомарном уровне.

отсюда


Плюшевая игрушка на шкафу мейнфрейма.

Ещё один способ разделения пластины на отдельные кристаллы — скрайбирование. Та же алмазная пила надрезает пластины, а затем они прокатываются роликом и разламываются на части.

На заставке фильма бегущая вафля, характерной круглой формы со срезанной хордой.

Кремниевая пластина на английском называется «wafer», что буквально переводится, как «вафля». После изготовления чипов, на ней виден рисунок «в клеточку».

Если кому-то нужно, то на aliexpress недорого продаются неразрезанные кремниевые пластины с чипами. Искать по тексту «silicon wafer».


По числу промаркированных чипов можно оценить процент выхода годных кристаллов с одной пластины.

По слухам, для процессоров Intel и AMD с большими кристаллами, это значение лежит в диапазоне 30-70%, в зависимости от отлаженности технологического процесса.


Набор дискет со скринсейверами для Мака на тему Стартрека за 75 долларов.

Компьютеры в фильме


Macintosh SE/30


В первых кадрах с упаковкой компьютеров можно видеть модификацию Macintosh SE, выпускавшуюся с 1989 года.

HP 95LX


Предшественник наладонников от Hewlett Packard с MS-DOS и аналогом процессора Intel 8088.


В фильме работа с этим компьютером не выглядит комфортной.

DECStation 5000


Инженер использует одну из модификаций рабочей станции DECstation 5000 c двумя блоками дополнительных накопителей справа. Работает на MIPS процессоре R3000/R4000, один из вариантов которого также установлен в Sony PlayStation (первого поколения) и в Sony PSP. Операционной системой является разработанный DEC вариант Unix.

Apollo DN4000


Apollo Computer (в конце 1980-х купленная HP) производила серию рабочих станций, одну из которых можно увидеть в фильме в эпизоде про трассировку печатных плат. Работает на Motorola 68k и варианте операционной системы Unix.


В фильме яркий зелёный светодиод монитора в верхнем правом углу заклеен пользователем.

Macintosh II


На сборочной линии Macintosh IIci, выпускавшийся с 1989 года.

PowerBook


Слева в кадре Apple Macintosh PowerBook 140/145, справа PowerBook 160. Это второе поколение ноутбуков от Apple. У обоих был монохромный экран и процессор Motorola 68k.

Macintosh


Одна из модификаций первого «Макинтоша» управляет установкой для тестирования материнских плат.

VAX 9000


Мейнфрейм с плюшевой игрушкой — это суперкомпьютер от DEC VAX 9000. Точную модификацию определить сложно. Видел такой же компьютер в фильме Майкрософта от 1991 года.

IBM PS/2 Model 9577


Упомянутая выше статья по материаловедению пишется на IBM PS/2 с процессором Intel 80486DX2 и операционной системой OS/2 v2.00.

Компьютеры, используемые для управления станками на производстве, сложно идентифицировать. Но даже при определении аппаратной платформы они работают на специализированном ПО, информацию о котором крайне трудно найти, если вообще возможно.


Что дальше?


Я планирую перевести фильм Silicon Run I из этой же серии , в котором детальнее рассказывается о процессе изготовления полупроводников на кремниевой пластине. В нём с наглядными анимациями и пояснениями показаны процессы выращивания кристалла, легирования пластин, осаждения, травления и принципы работы МОП-транзисторов.


Ещё есть фильм о МЭМС-технологиях, в котором, в частности, есть пример изготовления и объяснение принципа работы печатающей головки струйного принтера.


Если хотите поддержать меня в этом, то можете прислать донат, который я использую для оплаты работы актёра озвучания.


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


Спасибо за внимание.

Показать полностью 16 8
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества