VoiceCraft 是一種代幣填充神經編解碼器語言模型,它在語音編輯和零樣本文本轉語音 (TTS)方面實現了最先進的性能,對野外數據(包括有聲讀物、互聯網視頻和播客。
要複製或編輯看不見的聲音,VoiceCraft 只需要幾秒鐘的參考。
有三種方法(除了在 Colab 中運行 Gradio 之外):
當您位於 docker 映像內或已安裝所有相依性時,請檢查inference_tts.ipynb
。
如果您想進行模型開發,例如訓練/微調,我建議您進行以下環境設定和訓練。
04/22/2024:330M/830M TTS 增強模型在這裡,透過gradio_app.py
或inference_tts.ipynb
載入它們!複製演示已經完成,主要感謝@chenxwh!
2024 年 4 月 11 日:VoiceCraft Gradio 現已在 HuggingFace Spaces 上提供!主要感謝@zuev-stepan、@Sewell、@pgsoar @Ph0rk0z。
04/05/2024:我在 gigaspeech 和 1/5 的 librilight 上使用 TTS 目標對 giga330M 進行了微調。權重在這裡。確保最大提示 + 生成長度 <= 16 秒(由於我們的計算有限,我們不得不在訓練資料中丟棄超過 16 秒的話語)。更強大的模型即將推出,敬請期待!
2024 年 3 月 28 日:HuggingFace 上 giga330M 和 giga830M 的模型權重增加?這裡!
若要嘗試使用 VoiceCraft 進行語音編輯或 TTS 推理,最簡單的方法是使用 Google Colab。運行說明位於 Colab 本身。
要將其用作獨立腳本,請查看 tts_demo.py 和peech_editing_demo.py。請務必先設定您的環境。如果沒有參數,他們將運行此儲存庫中其他地方用作範例的標準演示參數。您可以使用命令列參數來指定唯一的輸入音訊、目標轉錄本和推理超參數。執行幫助命令以獲取更多資訊: python3 tts_demo.py -h
若要嘗試使用 VoiceCraft 進行 TTS 推理,您也可以使用 docker。感謝@ubergarm 和@jayc88 讓這一切發生。
在 Linux 和 Windows 上進行了測試,應該適用於任何安裝了 docker 的主機。
# 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
如果您在運行時遇到版本問題,請檢查environment.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_app.ipynb
運行 gradio 伺服器:
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上訓練,有56M參數,4個碼本,每個碼本有2048個代碼。我們的論文中描述了詳細資訊。如果在提取過程中遇到 OOM,請嘗試減少batch_size 和/或 max_len。提取的代碼、音素和 vocab.txt 將儲存在path/to/store_extracted_codes_and_phonemes/${dataset_size}/{encodec_16khz_4codebooks,phonemes,vocab.txt}
。
至於manifest,請從這裡下載train.txt和validation.txt,並將它們放在path/to/store_extracted_codes_and_phonemes/manifest/
下。如果您想使用我們預先訓練的 VoiceCraft 模型(以便音素到標記的匹配相同),也請從此處下載 vocab.txt。
現在,您可以開始訓練了!
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 (LICENSE-CODE),模型權重遵循 Coqui 公共模型授權 1.0.0 (LICENSE-MODEL)。請注意,我們使用了其他儲存庫中不同許可證下的一些程式碼: ./models/codebooks_patterns.py
codebooks_patterns.py 是在 MIT 許可證下; ./models/modules
、 ./steps/optim.py
、 data/tokenizer.py
皆遵循 Apache 許可證,版本 2.0;我們使用的phonemizer 是在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},
}
禁止任何組織或個人未經本人同意,使用本文提及的任何技術來產生或編輯他人的言論,包括但不限於政府領導人、政治人物、名人。如果您不遵守本條款,您可能會違反著作權法。