VoiceCraft

2个月前发布 34 0 0

VoiceCraft是一款新型语音模型,支持克隆语音和修改音频文本。

收录时间:
2025-02-23
VoiceCraftVoiceCraft

VoiceCraft:零样本语音编辑和文本转语音

VoiceCraft是一款新型语音模型,支持克隆语音和修改音频文本。据称其性能超越了XTTS,引起了业界关注。模型具有强大的音频克隆能力和编辑功能,专注于零样本语音编辑和文本到语音(TTS)任务。该模型采用Transformer架构,通过创新的token重排过程,结合因果掩蔽和延迟叠加技术,可零样本实现在现有音频序列内的高效生成。VoiceCraft在多种口音、风格和噪声条件下的语音编辑和TTS任务上展现出卓越性能,生成的语音自然甚至难以与原声区分。

 

 

快速入门 Colab

⭐ 要尝试使用 VoiceCraft 进行语音编辑或 TTS 推理,最简单的方法是使用 Google Colab。运行说明在 Colab 上。

  1. 尝试语音编辑
  2. 尝试TTS 推理

快速启动命令行

⭐ 要将其用作独立脚本,请查看 tts_demo.py 和 Speech_editing_demo.py。请务必先设置您的环境。如果没有参数,它们将运行此存储库中其他地方用作示例的标准演示参数。您可以使用命令行参数来指定唯一的输入音频、目标成绩单和推理超参数。运行 help 命令以获取更多信息: python3 tts_demo.py -h

快速入门 Docker

⭐ 要尝试使用 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 git@github.com: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.ipynbinference_tts.ipynb

格拉迪奥

在 colab 中运行

VoiceCraft

本地运行

环境设置完成后安装其他依赖项:

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 服务器或者gradio_app.ipynb

python gradio_app.py

它已准备好在默认 URL上使用。

如何使用

  1. (可选)选择型号
  2. 加载模型
  3. 录制
  4. (可选)调整一些参数
  5. 跑步
  6. (可选)在长 TTS 模式下逐部分重新运行

一些功能

智能转录:只写您想要生成的内容

TTS 模式:零样本 TTS

编辑模式:语音编辑

长 TTS 模式:轻松对长文本进行 TTS

训练

要训​​练 VoiceCraft 模型,您需要准备以下部分:

  1. 言论及其记录
  2. 使用 Encodec 将话语编码成代码
  3. 将转录文本转换为音素序列和音素集(我们将其命名为 vocab.txt)
  4. 清单(即元数据)

步骤 1、2、3 在./data/phonemize_encodec_encode_hf.py中处理,其中

  1. Gigaspeech 是通过 HuggingFace 下载的。请注意,您需要签署协议才能下载数据集(需要您的身份验证令牌)
  2. 还使用该脚本提取音素序列和编解码器代码。

运行示例:

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}

至于清单,请从此处下载 train.txt 和 validation.txt ,并将它们放在 下。如果您想使用我们预先训练的 VoiceCraft 模型(以便音素到标记的匹配相同),请从此处path/to/store_extracted_codes_and_phonemes/manifest/下载 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或仅加载现有部分,并随机初始化新部分)

数据统计

相关导航