VoiceCraft — это языковая модель нейронного кодека, заполняющая токены, которая обеспечивает высочайшую производительность как при редактировании речи , так и при преобразовании текста в речь (TTS) с нулевым количеством кадров для реальных данных, включая аудиокниги, интернет-видео и подкасты.
Чтобы клонировать или редактировать невидимый голос, VoiceCraft требуется всего несколько секунд справки.
Есть три способа (помимо запуска Gradio в Colab):
Когда вы находитесь внутри образа докера или установили все зависимости, проверьте inference_tts.ipynb
.
Если вы хотите заняться разработкой модели, например обучением/тонкой настройкой, я рекомендую выполнить настройку и обучение среды.
22.04.2024: Здесь доступны расширенные модели TTS 330M/830M. Загрузите их через gradio_app.py
или inference_tts.ipynb
! Репликация демо готова, большое спасибо @chenxwh!
11.04.2024: VoiceCraft Gradio теперь доступен на HuggingFace Spaces здесь! Большое спасибо @zuev-stepan, @Sewlell, @pgsoar @Ph0rk0z.
05.04.2024: Настроил giga330M с объективом TTS на гигаспиче и 1/5 либрилайта. Веса здесь. Убедитесь, что максимальная продолжительность подсказки + генерация <= 16 секунд (из-за наших ограниченных вычислений нам пришлось отбрасывать высказывания длиной более 16 секунд в обучающих данных). В будущем появятся еще более сильные модели, следите за обновлениями!
28.03.2024: Вес моделей giga330M и giga830M указан на HuggingFace? здесь!
Чтобы опробовать редактирование речи или вывод TTS с помощью VoiceCraft, самый простой способ — использовать Google Colab. Инструкции по запуску находятся на самом Colab.
Чтобы использовать его как отдельный скрипт, проверьте tts_demo.py и voice_editing_demo.py. Обязательно сначала настройте свою среду. Без аргументов они будут запускать стандартные демонстрационные аргументы, используемые в качестве примера в другом месте этого репозитория. Вы можете использовать аргументы командной строки, чтобы указать уникальные входные аудио, целевые расшифровки и гиперпараметры вывода. Запустите команду справки для получения дополнительной информации: python3 tts_demo.py -h
Чтобы опробовать вывод TTS с помощью VoiceCraft, вы также можете использовать Docker. Спасибо @ubergarm и @jayc88 за то, что это произошло.
Протестировано в Linux и Windows и должно работать с любым хостом с установленным докером.
# 1. clone the repo on in a directory on a drive with plenty of free space
git clone [email protected]:jasonppy/VoiceCraft.git
cd VoiceCraft
# 2. assumes you have docker installed with nvidia container container-toolkit (windows has this built into the driver)
# https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/1.13.5/install-guide.html
# sudo apt-get install -y nvidia-container-toolkit-base || yay -Syu nvidia-container-toolkit || echo etc...
# 3. First build the docker image
docker build --tag " voicecraft " .
# 4. Try to start an existing container otherwise create a new one passing in all GPUs
./start-jupyter.sh # linux
start-jupyter.bat # windows
# 5. now open a webpage on the host box to the URL shown at the bottom of:
docker logs jupyter
# 6. optionally look inside from another terminal
docker exec -it jupyter /bin/bash
export USER=(your_linux_username_used_above)
export HOME=/home/ $USER
sudo apt-get update
# 7. confirm video card(s) are visible inside container
nvidia-smi
# 8. Now in browser, open inference_tts.ipynb and work through one cell at a time
echo GOOD LUCK
conda create -n voicecraft python=3.9.16
conda activate voicecraft
pip install -e git+https://github.com/facebookresearch/audiocraft.git@c5157b5bf14bf83449c17ea1eeb66c19fb4bc7f0#egg=audiocraft
pip install xformers==0.0.22
pip install torchaudio==2.0.2 torch==2.0.1 # this assumes your system is compatible with CUDA 11.7, otherwise checkout https://pytorch.org/get-started/previous-versions/#v201
apt-get install ffmpeg # if you don't already have ffmpeg installed
apt-get install espeak-ng # backend for the phonemizer installed below
pip install tensorboard==2.16.2
pip install phonemizer==3.2.1
pip install datasets==2.16.0
pip install torchmetrics==0.11.1
pip install huggingface_hub==0.22.2
# install MFA for getting forced-alignment, this could take a few minutes
conda install -c conda-forge montreal-forced-aligner=2.2.17 openfst=1.8.2 kaldi=5.5.1068
# install MFA english dictionary and model
mfa model download dictionary english_us_arpa
mfa model download acoustic english_us_arpa
# pip install huggingface_hub
# conda install pocl # above gives an warning for installing pocl, not sure if really need this
# to run ipynb
conda install -n voicecraft ipykernel --no-deps --force-reinstall
Если вы столкнулись с проблемами версии при запуске, проверьте среду.yml на предмет точного соответствия.
Оформить заказ inference_speech_editing.ipynb
и inference_tts.ipynb
После настройки среды установите дополнительные зависимости:
apt-get install -y espeak espeak-data libespeak1 libespeak-dev
apt-get install -y festival *
apt-get install -y build-essential
apt-get install -y flac libasound2-dev libsndfile1-dev vorbis-tools
apt-get install -y libxml2-dev libxslt-dev zlib1g-dev
pip install -r gradio_requirements.txt
Запустите сервер Gradio из терминала или gradio_app.ipynb
:
python gradio_app.py
Он готов к использованию по URL-адресу по умолчанию.
Умная расшифровка: пишите только то, что вы хотите сгенерировать
Режим TTS: TTS с нулевым выстрелом
Режим редактирования: редактирование речи
Режим длинного TTS: простой TTS для длинных текстов
Для обучения модели VoiceCraft необходимо подготовить следующие части:
Шаги 1,2,3 обрабатываются в ./data/phonemize_encodec_encode_hf.py, где
Пример запуска:
conda activate voicecraft
export CUDA_VISIBLE_DEVICES=0
cd ./data
python phonemize_encodec_encode_hf.py
--dataset_size xs
--download_to path/to/store_huggingface_downloads
--save_dir path/to/store_extracted_codes_and_phonemes
--encodec_model_path path/to/encodec_model
--mega_batch_size 120
--batch_size 32
--max_len 30000
где здесь доступен encodec_model_path. Данная модель обучена на Gigaspeech XL, имеет 56М параметров, 4 кодовые книги, в каждой кодовой книге по 2048 кодов. Подробности описаны в нашей статье. Если во время извлечения вы столкнулись с OOM, попробуйте уменьшить размер пакета и/или max_len. Извлеченные коды, фонемы и vocab.txt будут храниться по адресу path/to/store_extracted_codes_and_phonemes/${dataset_size}/{encodec_16khz_4codebooks,phonemes,vocab.txt}
.
Что касается манифеста, загрузите train.txt и validation.txt отсюда и поместите их в path/to/store_extracted_codes_and_phonemes/manifest/
. Также загрузите vocab.txt отсюда, если вы хотите использовать нашу предварительно обученную модель VoiceCraft (чтобы соответствие фонем и токенов было одинаковым).
Теперь вы готовы приступить к тренировкам!
conda activate voicecraft
cd ./z_scripts
bash e830M.sh
Это та же процедура, что и для подготовки собственного набора данных. Убедитесь, что если
Вам также необходимо выполнить шаги 1–4 в качестве обучения, и я рекомендую использовать AdamW для оптимизации, если вы настраиваете предварительно обученную модель для большей стабильности. скрипт оформления заказа ./z_scripts/e830M_ft.sh
.
Если в вашем наборе данных появляются новые фонемы (что весьма вероятно), которых нет в контрольной точке гига, убедитесь, что вы объединили исходные фонемы с фонемами из ваших данных при построении словаря. И вам нужно настроить --text_vocab_size
и --text_pad_token
так, чтобы первый был больше или равен размеру вашего словаря, а второй имел то же значение, что и --text_vocab_size
(т. е. --text_pad_token
всегда является последним токеном). Кроме того, поскольку встраивание текста теперь имеет другой размер, обязательно измените часть загрузки весов, чтобы не произошел сбой (вы можете пропустить загрузку text_embedding
или загрузить только существующую часть и случайно инициализировать новую)
Кодовая база находится под лицензией CC BY-NC-SA 4.0 (КОД ЛИЦЕНЗИИ), а вес модели — под лицензией Coqui Public Model License 1.0.0 (МОДЕЛЬ ЛИЦЕНЗИИ). Обратите внимание, что мы используем часть кода из другого репозитория, находящегося под другими лицензиями: ./models/codebooks_patterns.py
находится под лицензией MIT; ./models/modules
, ./steps/optim.py
, data/tokenizer.py
находятся под лицензией Apache версии 2.0; Фонемайзер, который мы использовали, находится под лицензией GNU 3.0.
Мы благодарим Фейтенга за воспроизведение VALL-E и благодарим команду audiocraft за кодек с открытым исходным кодом.
@article{peng2024voicecraft,
author = {Peng, Puyuan and Huang, Po-Yao and Mohamed, Abdelrahman and Harwath, David},
title = {VoiceCraft: Zero-Shot Speech Editing and Text-to-Speech in the Wild},
journal = {arXiv},
year = {2024},
}
Любой организации или частному лицу запрещено использовать любую технологию, упомянутую в этом документе, для создания или редактирования чьей-либо речи без его/ее согласия, включая, помимо прочего, государственных лидеров, политических деятелей и знаменитостей. Если вы не соблюдаете этот пункт, вы можете нарушить законы об авторских правах.