VoiceCraft ist ein Token-füllendes neuronales Codec-Sprachmodell, das modernste Leistung sowohl bei der Sprachbearbeitung als auch bei Zero-Shot-Text-to-Speech (TTS) für In-the-Wild-Daten wie Hörbücher, Internetvideos usw. erreicht Podcasts.
Um eine unsichtbare Stimme zu klonen oder zu bearbeiten, benötigt VoiceCraft nur wenige Referenzsekunden.
Es gibt drei Möglichkeiten (neben der Ausführung von Gradio in Colab):
Wenn Sie sich im Docker-Image befinden oder alle Abhängigkeiten installiert haben, checken Sie inference_tts.ipynb
aus.
Wenn Sie Modellentwicklungen wie Training/Feinabstimmung durchführen möchten, empfehle ich Ihnen, die Einrichtung und Schulung der Umgebung zu befolgen.
22.04.2024: 330M/830M TTS Enhanced Models sind hier, laden Sie sie über gradio_app.py
oder inference_tts.ipynb
! Die Replikate-Demo ist online, vielen Dank an @chenxwh!
11.04.2024: VoiceCraft Gradio ist jetzt hier auf HuggingFace Spaces verfügbar! Großer Dank geht an @zuev-stepan, @Sewlell, @pgsoar @Ph0rk0z.
05.04.2024: Ich habe giga330M mit dem TTS-Objektiv auf Gigaspeech und 1/5 von Librilight verfeinert. Gewichte gibt es hier. Stellen Sie sicher, dass die maximale Eingabeaufforderung + Generierungslänge <= 16 Sekunden beträgt (aufgrund unserer begrenzten Rechenleistung mussten wir Äußerungen, die länger als 16 Sekunden dauerten, in den Trainingsdaten löschen). Es folgen noch stärkere Modelle, bleiben Sie dran!
28.03.2024: Modellgewichte für giga330M und giga830M sind auf HuggingFace verfügbar? Hier!
Um Sprachbearbeitung oder TTS-Inferenz mit VoiceCraft auszuprobieren, ist die Verwendung von Google Colab am einfachsten. Anweisungen zum Ausführen finden Sie auf dem Colab selbst.
Um es als eigenständiges Skript zu verwenden, sehen Sie sich tts_demo.py und Speech_editing_demo.py an. Stellen Sie sicher, dass Sie zuerst Ihre Umgebung einrichten. Ohne Argumente führen sie die Standard-Demoargumente aus, die an anderer Stelle in diesem Repository als Beispiel verwendet werden. Sie können die Befehlszeilenargumente verwenden, um eindeutige Eingabeaudios, Zieltranskripte und Inferenzhyperparameter anzugeben. Führen Sie den Hilfebefehl aus, um weitere Informationen zu erhalten: python3 tts_demo.py -h
Um die TTS-Inferenz mit VoiceCraft auszuprobieren, können Sie auch Docker verwenden. Vielen Dank an @ubergarm und @jayc88, dass sie dies möglich gemacht haben.
Getestet unter Linux und Windows und sollte mit jedem Host funktionieren, auf dem Docker installiert ist.
# 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
Wenn beim Ausführen von Dingen Versionsprobleme aufgetreten sind, überprüfen Sie die Datei „environment.yml“ auf genaue Übereinstimmung.
Schauen Sie sich inference_speech_editing.ipynb
und inference_tts.ipynb
an
Installieren Sie nach dem Einrichten der Umgebung zusätzliche Abhängigkeiten:
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
Führen Sie den Gradio-Server über das Terminal oder gradio_app.ipynb
aus:
python gradio_app.py
Es kann unter der Standard-URL verwendet werden.
Intelligentes Transkript: Schreiben Sie nur das, was Sie generieren möchten
TTS-Modus: Zero-Shot TTS
Bearbeitungsmodus: Sprachbearbeitung
Langer TTS-Modus: Einfaches TTS bei langen Texten
Um ein VoiceCraft-Modell zu trainieren, müssen Sie die folgenden Teile vorbereiten:
Die Schritte 1,2,3 werden in ./data/phonemize_encodec_encode_hf.py behandelt, wo
Ein Beispiellauf:
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
wo encodec_model_path hier verfügbar ist. Dieses Modell ist auf Gigaspeech XL trainiert, es verfügt über 56 Millionen Parameter, 4 Codebücher, jedes Codebuch hat 2048 Codes. Details sind in unserem Papier beschrieben. Wenn Sie beim Extrahieren auf OOM stoßen, versuchen Sie, die Batch_size und/oder max_len zu verringern. Die extrahierten Codes, Phoneme und vocab.txt werden unter path/to/store_extracted_codes_and_phonemes/${dataset_size}/{encodec_16khz_4codebooks,phonemes,vocab.txt}
gespeichert.
Was das Manifest betrifft, laden Sie bitte train.txt und validation.txt hier herunter und legen Sie sie unter path/to/store_extracted_codes_and_phonemes/manifest/
ab. Bitte laden Sie hier auch vocab.txt herunter, wenn Sie unser vorab trainiertes VoiceCraft-Modell verwenden möchten (damit der Phonem-zu-Token-Abgleich derselbe ist).
Jetzt können Sie mit dem Training beginnen!
conda activate voicecraft
cd ./z_scripts
bash e830M.sh
Mit dem gleichen Verfahren können Sie Ihren eigenen benutzerdefinierten Datensatz vorbereiten. Stellen Sie sicher, dass wenn
Sie müssen auch die Schritte 1–4 als Training durchführen, und ich empfehle die Verwendung von AdamW zur Optimierung, wenn Sie ein vorab trainiertes Modell für eine bessere Stabilität verfeinern. Checkout-Skript ./z_scripts/e830M_ft.sh
.
Wenn Ihr Datensatz neue Phoneme einführt (was sehr wahrscheinlich ist), die im Giga-Checkpoint nicht vorhanden sind, stellen Sie sicher, dass Sie bei der Vokabelkonstruktion die Originalphoneme mit den Phonemen aus Ihren Daten kombinieren. Und Sie müssen --text_vocab_size
und --text_pad_token
so anpassen, dass ersteres größer oder gleich Ihrer Vokabelgröße ist und letzteres denselben Wert wie --text_vocab_size
hat (dh --text_pad_token
ist immer das letzte Token). Da die Texteinbettungen jetzt eine andere Größe haben, stellen Sie außerdem sicher, dass Sie den Teil zum Laden der Gewichte so ändern, dass es nicht zum Absturz kommt (Sie könnten das Laden text_embedding
überspringen oder nur den vorhandenen Teil laden und den neuen zufällig initialisieren).
Die Codebasis steht unter CC BY-NC-SA 4.0 (LICENSE-CODE) und die Modellgewichte stehen unter der Coqui Public Model License 1.0.0 (LICENSE-MODEL). Beachten Sie, dass wir einen Teil des Codes aus anderen Repositorys verwenden, die unter anderen Lizenzen stehen: ./models/codebooks_patterns.py
steht unter MIT-Lizenz; ./models/modules
, ./steps/optim.py
, data/tokenizer.py
stehen unter der Apache-Lizenz, Version 2.0; Der von uns verwendete Phonemizer steht unter der GNU 3.0-Lizenz.
Wir danken Feiteng für seine VALL-E-Reproduktion und wir danken dem Audiocraft-Team für den Open-Source-Encodec.
@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},
}
Es ist jeder Organisation oder Einzelperson untersagt, die in diesem Dokument erwähnte Technologie zu nutzen, um die Rede einer anderen Person ohne deren Zustimmung zu erstellen oder zu bearbeiten, einschließlich, aber nicht beschränkt auf Regierungsführer, politische Persönlichkeiten und Prominente. Wenn Sie diesen Punkt nicht einhalten, verstoßen Sie möglicherweise gegen das Urheberrecht.