VoiceCraft es un modelo de lenguaje de códec neuronal de relleno de tokens que logra un rendimiento de vanguardia tanto en la edición de voz como en la conversión de texto a voz (TTS) de disparo cero en datos en estado salvaje, incluidos audiolibros, videos de Internet y podcasts.
Para clonar o editar una voz invisible, VoiceCraft sólo necesita unos segundos de referencia.
Hay tres formas (además de ejecutar Gradio en Colab):
Cuando esté dentro de la imagen de la ventana acoplable o haya instalado todas las dependencias, consulte inference_tts.ipynb
.
Si desea realizar desarrollo de modelos, como capacitación/ajuste, le recomiendo seguir la configuración y capacitación del entorno.
22/04/2024: Los modelos mejorados TTS de 330M/830M están aquí, cárguelos a través de gradio_app.py
o inference_tts.ipynb
. La demostración replicada está disponible, ¡muchas gracias a @chenxwh!
11/04/2024: ¡VoiceCraft Gradio ya está disponible en HuggingFace Spaces aquí! Muchas gracias a @zuev-stepan, @Sewlell, @pgsoar @Ph0rk0z.
05/04/2024: Ajusté giga330M con el objetivo TTS en gigaspeech y 1/5 de librilight. Los pesos están aquí. Asegúrese de que el mensaje máximo + duración de generación sea <= 16 segundos (debido a nuestro cálculo limitado, tuvimos que eliminar expresiones de más de 16 segundos en los datos de entrenamiento). Próximamente habrá modelos aún más potentes, ¡estad atentos!
28/03/2024: ¿Los pesos de los modelos para giga330M y giga830M están aumentados en HuggingFace? ¡aquí!
Para probar la edición de voz o la inferencia TTS con VoiceCraft, la forma más sencilla es utilizar Google Colab. Las instrucciones para ejecutar están en el propio Colab.
Para usarlo como un script independiente, consulte tts_demo.py y Speech_editing_demo.py. Asegúrese de configurar primero su entorno. Sin argumentos, ejecutarán los argumentos de demostración estándar utilizados como ejemplo en otras partes de este repositorio. Puede utilizar los argumentos de la línea de comando para especificar audios de entrada únicos, transcripciones de destino e hiperparámetros de inferencia. Ejecute el comando de ayuda para obtener más información: python3 tts_demo.py -h
Para probar la inferencia TTS con VoiceCraft, también puedes utilizar la ventana acoplable. Gracias a @ubergarm y @ jayc88 por hacer que esto suceda.
Probado en Linux y Windows y debería funcionar con cualquier host que tenga Docker instalado.
# 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 ha encontrado problemas de versión al ejecutar cosas, consulte el archivo Environment.yml para obtener una coincidencia exacta.
Consulte inference_speech_editing.ipynb
e inference_tts.ipynb
Después de la configuración del entorno, instale dependencias adicionales:
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
Ejecute el servidor gradio desde la terminal o gradio_app.ipynb
:
python gradio_app.py
Está listo para usar en la URL predeterminada.
Transcripción inteligente: escribe solo lo que quieras generar
Modo TTS: TTS de disparo cero
Modo de edición: edición de voz
Modo TTS largo: TTS fácil en textos largos
Para entrenar un modelo de VoiceCraft, debe preparar las siguientes partes:
Los pasos 1,2,3 se manejan en ./data/phonemize_encodec_encode_hf.py, donde
Una ejecución de ejemplo:
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
donde encodec_model_path está disponible aquí. Este modelo está entrenado en Gigaspeech XL, tiene 56 millones de parámetros, 4 libros de códigos, cada libro de códigos tiene 2048 códigos. Los detalles se describen en nuestro artículo. Si encuentra OOM durante la extracción, intente disminuir el tamaño del lote y/o el max_len. Los códigos, fonemas y vocab.txt extraídos se almacenarán en path/to/store_extracted_codes_and_phonemes/${dataset_size}/{encodec_16khz_4codebooks,phonemes,vocab.txt}
.
En cuanto al manifiesto, descargue train.txt y validation.txt desde aquí y colóquelos en path/to/store_extracted_codes_and_phonemes/manifest/
. Descargue también vocab.txt desde aquí si desea utilizar nuestro modelo VoiceCraft previamente entrenado (para que la coincidencia de fonema con token sea la misma).
¡Ahora estás listo para empezar a entrenar!
conda activate voicecraft
cd ./z_scripts
bash e830M.sh
Es el mismo procedimiento para preparar su propio conjunto de datos personalizado. Asegúrate de que si
También debe realizar los pasos 1 a 4 como Entrenamiento, y recomiendo usar AdamW para la optimización si ajusta un modelo previamente entrenado para una mejor estabilidad. script de pago ./z_scripts/e830M_ft.sh
.
Si su conjunto de datos introduce nuevos fonemas (lo cual es muy probable) que no existen en el punto de control giga, asegúrese de combinar los fonemas originales con el fonema de sus datos cuando construya el vocabulario. Y necesita ajustar --text_vocab_size
y --text_pad_token
para que el primero sea mayor o igual a su tamaño de vocabulario, y el segundo tenga el mismo valor que --text_vocab_size
(es decir, --text_pad_token
es siempre el último token). Además, dado que el texto incrustado ahora tiene un tamaño diferente, asegúrese de modificar la parte de carga de pesos para que no se bloquee (puede omitir la carga de text_embedding
o solo cargar la parte existente e inicializar aleatoriamente la nueva)
El código base está bajo CC BY-NC-SA 4.0 (LICENCIA-CÓDIGO), y los pesos del modelo están bajo Coqui Public Model License 1.0.0 (LICENCIA-MODELO). Tenga en cuenta que utilizamos parte del código de otro repositorio que tiene licencias diferentes: ./models/codebooks_patterns.py
está bajo licencia MIT; ./models/modules
, ./steps/optim.py
, data/tokenizer.py
están bajo licencia Apache, versión 2.0; El fonemizador que utilizamos está bajo la licencia GNU 3.0.
Agradecemos a Feiteng por su reproducción VALL-E y agradecemos al equipo de audiocraft por el codificador de código abierto.
@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},
}
Cualquier organización o individuo tiene prohibido utilizar cualquier tecnología mencionada en este documento para generar o editar el discurso de alguien sin su consentimiento, incluidos, entre otros, líderes gubernamentales, figuras políticas y celebridades. Si no cumple con este artículo, podría estar infringiendo las leyes de derechos de autor.