VoiceCraft est un modèle de langage de codec neuronal à remplissage de jetons, qui atteint des performances de pointe en matière d'édition vocale et de synthèse vocale (TTS) sans prise de vue sur des données naturelles, notamment des livres audio, des vidéos Internet et podcasts.
Pour cloner ou éditer une voix invisible, VoiceCraft n'a besoin que de quelques secondes de référence.
Il existe trois manières (en plus d'exécuter Gradio dans Colab) :
Lorsque vous êtes dans l'image Docker ou que vous avez installé toutes les dépendances, consultez inference_tts.ipynb
.
Si vous souhaitez effectuer du développement de modèles tels que la formation/le réglage fin, je vous recommande de suivre la configuration et la formation de l'environnement.
22/04/2024 : Les modèles améliorés TTS 330M/830M sont ici, chargez-les via gradio_app.py
ou inference_tts.ipynb
! La démo de réplication est disponible, un grand merci à @chenxwh !
11/04/2024 : VoiceCraft Gradio est désormais disponible sur HuggingFace Spaces ici ! Un grand merci à @zuev-stepan, @Sewlell, @pgsoar @Ph0rk0z.
05/04/2024 : J'ai peaufiné le giga330M avec l'objectif TTS sur gigaspeech et 1/5 de librilight. Les poids sont ici. Assurez-vous que l'invite maximale + la durée de génération <= 16 secondes (en raison de notre calcul limité, nous avons dû supprimer les énoncés de plus de 16 secondes dans les données d'entraînement). Des modèles encore plus puissants à venir, restez connectés !
28/03/2024 : Les poids des modèles pour giga330M et giga830M sont en hausse sur HuggingFace ? ici!
Pour essayer l'édition vocale ou l'inférence TTS avec VoiceCraft, le moyen le plus simple consiste à utiliser Google Colab. Les instructions d'exécution se trouvent sur le Colab lui-même.
Pour l'utiliser comme script autonome, consultez tts_demo.py et Speech_editing_demo.py. Assurez-vous d’abord de configurer votre environnement. Sans arguments, ils exécuteront les arguments de démonstration standard utilisés comme exemple ailleurs dans ce référentiel. Vous pouvez utiliser les arguments de ligne de commande pour spécifier des audios d'entrée uniques, des transcriptions cibles et des hyperparamètres d'inférence. Exécutez la commande d'aide pour plus d'informations : python3 tts_demo.py -h
Pour essayer l'inférence TTS avec VoiceCraft, vous pouvez également utiliser Docker. Merci @ubergarm et @jayc88 d'avoir rendu cela possible.
Testé sous Linux et Windows et devrait fonctionner avec n'importe quel hôte sur lequel Docker est installé.
# 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
Si vous avez rencontré des problèmes de version lors de l'exécution des choses, consultez Environment.yml pour une correspondance exacte.
Commander inference_speech_editing.ipynb
et inference_tts.ipynb
Après la configuration de l'environnement, installez des dépendances supplémentaires :
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
Exécutez le serveur gradio depuis le terminal ou gradio_app.ipynb
:
python gradio_app.py
Il est prêt à être utilisé sur l'URL par défaut.
Transcription intelligente : écrivez uniquement ce que vous souhaitez générer
Mode TTS : TTS sans tir
Mode édition : édition vocale
Mode TTS long : TTS facile sur les textes longs
Pour entraîner un modèle VoiceCraft, vous devez préparer les parties suivantes :
Les étapes 1,2,3 sont gérées dans ./data/phonemize_encodec_encode_hf.py, où
Un exemple d'exécution :
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
où encodec_model_path est disponible ici. Ce modèle est formé sur Gigaspeech XL, il dispose de 56 millions de paramètres, 4 livres de codes, chaque livre de codes contient 2048 codes. Les détails sont décrits dans notre article. Si vous rencontrez un MOO lors de l'extraction, essayez de diminuer batch_size et/ou max_len. Les codes, phonèmes et vocab.txt extraits seront stockés dans path/to/store_extracted_codes_and_phonemes/${dataset_size}/{encodec_16khz_4codebooks,phonemes,vocab.txt}
.
En ce qui concerne le manifeste, veuillez télécharger train.txt et validation.txt à partir d'ici et placez-les sous path/to/store_extracted_codes_and_phonemes/manifest/
. Veuillez également télécharger vocab.txt à partir d'ici si vous souhaitez utiliser notre modèle VoiceCraft pré-entraîné (afin que la correspondance phonème-jeton soit la même).
Maintenant, vous êtes prêt à commencer l’entraînement !
conda activate voicecraft
cd ./z_scripts
bash e830M.sh
C'est la même procédure pour préparer votre propre ensemble de données personnalisé. Assurez-vous que si
Vous devez également effectuer les étapes 1 à 4 en tant que formation, et je vous recommande d'utiliser AdamW pour l'optimisation si vous affinez un modèle pré-entraîné pour une meilleure stabilité. script de paiement ./z_scripts/e830M_ft.sh
.
Si votre ensemble de données introduit de nouveaux phonèmes (ce qui est très probable) qui n'existent pas dans le point de contrôle giga, assurez-vous de combiner les phonèmes d'origine avec le phonème de vos données lors de la construction du vocabulaire. Et vous devez ajuster --text_vocab_size
et --text_pad_token
pour que le premier soit plus grand ou égal à la taille de votre vocabulaire, et que le second ait la même valeur que --text_vocab_size
(c'est-à-dire que --text_pad_token
est toujours le dernier jeton). De plus, comme les intégrations de texte sont maintenant d'une taille différente, assurez-vous de modifier la partie de chargement des poids afin que je ne plante pas (vous pouvez ignorer le chargement text_embedding
ou charger uniquement la partie existante et initialiser la nouvelle de manière aléatoire)
La base de code est sous CC BY-NC-SA 4.0 (LICENSE-CODE) et les poids du modèle sont sous Coqui Public Model License 1.0.0 (LICENSE-MODEL). Notez que nous utilisons une partie du code d'autres référentiels sous différentes licences : ./models/codebooks_patterns.py
est sous licence MIT ; ./models/modules
, ./steps/optim.py
, data/tokenizer.py
sont sous licence Apache, version 2.0 ; le phonémiseur que nous avons utilisé est sous licence GNU 3.0.
Nous remercions Feiteng pour sa reproduction VALL-E, et nous remercions l'équipe audiocraft pour l'encodec open source.
@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},
}
Il est interdit à toute organisation ou individu d'utiliser toute technologie mentionnée dans ce document pour générer ou modifier le discours d'une personne sans son consentement, y compris, mais sans s'y limiter, les dirigeants gouvernementaux, les personnalités politiques et les célébrités. Si vous ne respectez pas cet article, vous pourriez enfreindre les lois sur le droit d'auteur.