VoiceCraft é um modelo de linguagem de codec neural com preenchimento de token, que atinge desempenho de última geração tanto na edição de fala quanto na conversão de texto em fala (TTS) de disparo zero em dados in-the-wild, incluindo audiolivros, vídeos da Internet e podcasts.
Para clonar ou editar uma voz invisível, o VoiceCraft precisa de apenas alguns segundos de referência.
Existem três maneiras (além de executar o Gradio no Colab):
Quando você estiver dentro da imagem do docker ou tiver instalado todas as dependências, faça Checkout inference_tts.ipynb
.
Se você deseja desenvolver um modelo, como treinamento/ajuste, recomendo seguir a configuração e o treinamento do ambiente.
22/04/2024: Modelos aprimorados TTS 330M/830M estão aqui, carregue-os através de gradio_app.py
ou inference_tts.ipynb
! A demonstração replicada está disponível, muito obrigado a @chenxwh!
11/04/2024: VoiceCraft Gradio já está disponível no HuggingFace Spaces aqui! Muito obrigado a @zuev-stepan, @Sewlell, @pgsoar @Ph0rk0z.
05/04/2024: Ajustei o giga330M com a objetiva TTS em gigaspeech e 1/5 de librilight. Os pesos estão aqui. Certifique-se de que o comprimento máximo do prompt + geração seja <= 16 segundos (devido à nossa computação limitada, tivemos que eliminar declarações com mais de 16 segundos nos dados de treinamento). Modelos ainda mais fortes estão por vir, fique ligado!
28/03/2024: Os pesos dos modelos para giga330M e giga830M estão em alta no HuggingFace? aqui!
Para experimentar a edição de fala ou inferência TTS com VoiceCraft, a maneira mais simples é usar o Google Colab. As instruções para execução estão no próprio Colab.
Para usá-lo como um script independente, verifique tts_demo.py e Speech_editing_demo.py. Certifique-se de primeiro configurar seu ambiente. Sem argumentos, eles executarão os argumentos de demonstração padrão usados como exemplo em outras partes deste repositório. Você pode usar os argumentos da linha de comando para especificar áudios de entrada exclusivos, transcrições de destino e hiperparâmetros de inferência. Execute o comando de ajuda para obter mais informações: python3 tts_demo.py -h
Para experimentar a inferência TTS com VoiceCraft, você também pode usar o docker. Obrigado @ubergarm e @jayc88 por fazerem isso acontecer.
Testado em Linux e Windows e deve funcionar com qualquer host com 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
Se você encontrou problemas de versão ao executar coisas, verifique Environment.yml para correspondência exata.
Confira inference_speech_editing.ipynb
e inference_tts.ipynb
Após a configuração do ambiente, instale dependências adicionais:
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
Execute o servidor gradio do terminal ou gradio_app.ipynb
:
python gradio_app.py
Ele está pronto para ser usado no URL padrão.
Transcrição inteligente: escreva apenas o que deseja gerar
Modo TTS: TTS de disparo zero
Modo de edição: edição de fala
Modo TTS longo: TTS fácil em textos longos
Para treinar um modelo VoiceCraft, você precisa preparar as seguintes partes:
As etapas 1,2,3 são tratadas em ./data/phonemize_encodec_encode_hf.py, onde
Um exemplo de execução:
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
onde encodec_model_path está disponível aqui. Este modelo é treinado em Gigaspeech XL, possui 56M parâmetros, 4 livros de códigos, cada livro de códigos possui 2.048 códigos. Os detalhes estão descritos em nosso artigo. Se você encontrar OOM durante a extração, tente diminuir o batch_size e/ou max_len. Os códigos, fonemas e vocab.txt extraídos serão armazenados em path/to/store_extracted_codes_and_phonemes/${dataset_size}/{encodec_16khz_4codebooks,phonemes,vocab.txt}
.
Quanto ao manifesto, baixe train.txt e validação.txt aqui e coloque-os em path/to/store_extracted_codes_and_phonemes/manifest/
. Baixe também vocab.txt aqui se quiser usar nosso modelo VoiceCraft pré-treinado (para que a correspondência entre fonema e token seja a mesma).
Agora você está pronto para começar a treinar!
conda activate voicecraft
cd ./z_scripts
bash e830M.sh
É o mesmo procedimento para preparar seu próprio conjunto de dados personalizado. Certifique-se de que se
Você também precisa executar as etapas 1 a 4 como treinamento, e eu recomendo usar AdamW para otimização se você ajustar um modelo pré-treinado para melhor estabilidade. script de checkout ./z_scripts/e830M_ft.sh
.
Se o seu conjunto de dados introduzir novos fonemas (o que é muito provável) que não existem no ponto de verificação giga, certifique-se de combinar os fonemas originais com o fonema dos seus dados ao construir o vocabulário. E você precisa ajustar --text_vocab_size
e --text_pad_token
para que o primeiro seja maior ou igual ao tamanho do seu vocabulário, e o último tenha o mesmo valor que --text_vocab_size
(ou seja, --text_pad_token
é sempre o último token). Além disso, como a incorporação de texto agora tem um tamanho diferente, certifique-se de modificar a parte de carregamento dos pesos para que eu não trave (você pode pular o carregamento de text_embedding
ou apenas carregar a parte existente e inicializar aleatoriamente a nova)
A base de código está sob CC BY-NC-SA 4.0 (LICENSE-CODE) e os pesos do modelo estão sob Coqui Public Model License 1.0.0 (LICENSE-MODEL). Observe que usamos parte do código de outro repositório que está sob licenças diferentes: ./models/codebooks_patterns.py
está sob licença do MIT; ./models/modules
, ./steps/optim.py
, data/tokenizer.py
estão sob licença Apache, versão 2.0; o fonemizador que usamos está sob licença GNU 3.0.
Agradecemos a Feiteng por sua reprodução do VALL-E e agradecemos à equipe da audiocraft pelo codificador de código aberto.
@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},
}
Qualquer organização ou indivíduo está proibido de usar qualquer tecnologia mencionada neste documento para gerar ou editar o discurso de alguém sem o seu consentimento, incluindo, entre outros, líderes governamentais, figuras políticas e celebridades. Se você não cumprir este item, poderá estar violando as leis de direitos autorais.