AI语音AI文本转语音

EmotiVoice

开源多声音文本转语音引擎,支持情感合成及中英文。

标签:

综合介绍

EmotiVoice是一个由网易有道开发的多声音和情感提示控制的文本转语音(TTS)引擎。此开源TTS引擎支持英文和中文,拥有超过2000种不同的声音,并具备情感合成能力,能够创建带有快乐、兴奋、悲伤和愤怒等多种情绪的语音。它提供了易于使用的WEB界面和批量生成结果的脚本接口。

 

 

功能列表

提供WEB界面和脚本批处理接口
支持情感合成
多种声音选择
支持中英文合成

 

 

使用帮助

查看GitHub仓库获取安装、使用说明
运行Docker镜像试用EmotiVoice
参考Wiki页面下载预训练模型等额外资料
加入微信群交流反馈

 

 

为了响应社区需求,我们很开心地发布了声音克隆功能,并提供了两个教程示例!

注意事项:

 

  1. 该功能至少需要一张 Nvidia GPU 显卡 。
  2. 目标声音的数据至关重要!详细要求将在下一节中提供。
  3. 目前,该功能仅支持中文和英文,这意味着你可以使用中文数据或英文数据进行训练,从而得到一个能够说两种语言的音色模型
  4. 尽管EmotiVoice支持情感控制,但如果想要你的声音传达情感,训练数据也需要富有情感。
  5. 在仅使用你的数据进行训练后,来自EmotiVoice的原始声音将被改变。这意味着新的模型将完全根据你的数据进行定制。如果想使用EmotiVoice的2000+个原始声音,建议使用原始的预训练模型。

训练数据的详细需求

 

  1. 音频数据应该有较高质量,需要清晰无失真的单个人语音。时长或句数暂时不做强制要求,几句话也行,不过推荐在100句话以上。
  2. 与每个音频对应的文本应该与语音的内容严格相符。在进行训练之前,原始文本会使用G2P转换为音素。需要注意停顿(sp*)和多音字的转换结果,它们对训练质量影响很大。
  3. 如果希望你的声音传达情感,训练数据也需要富有情感。此外,**标签’prompt’**的内容应该根据每个音频进行修改。提示词的内容可以包括情感、语速以及说话风格等任何形式的文本描述。
  4. 然后,你会得到一个名为 data directory 的目录,包含两个子目录,分别是 train 和 valid。每个子目录都有一个datalist.jsonl 文件,且每行的格式为: {"key": "LJ002-0020", "wav_path": "data/LJspeech/wavs/LJ002-0020.wav", "speaker": "LJ", "text": ["<sos/eos>", "[IH0]", "[N]", "engsp1", "[EY0]", "[T]", "[IY1]", "[N]", "engsp1", "[TH]", "[ER1]", "[T]", "[IY1]", "[N]", ".", "<sos/eos>"], "original_text": "In 1813", "prompt": "common"} 。

分布训练步骤:

 

中文请参考 DataBaker Recipe,英文请参考:LJSpeech Recipe。以下是概要:

  1. 准备训练环境——只需要配置一次。
    # create conda enviroment
    conda create -n EmotiVoice python=3.8 -y
    conda activate EmotiVoice
    # then run:
    pip install EmotiVoice[train]
    # or
    git clone https://github.com/netease-youdao/EmotiVoice
    pip install -e .[train]
  2. 参考 Detailed requirements for training data 进行数据准备,推荐参考示例DataBaker Recipe 和 LJSpeech Recipe中的方法和脚本。
  3. 接下来,运行以下命令创建一个用于训练的目录:python prepare_for_training.py --data_dir <data directory> --exp_dir <experiment directory>。替换 <data directory> 为准备好的数据目录的实际路径, <experiment directory> 为实验目录的期望路径。
  4. 可以根据服务器配置和数据的情况修改 <experiment directory>/config/config.py 。完成修改后,通过运行以下命令启动训练过程 torchrun --nproc_per_node=1 --master_port 8018 train_am_vocoder_joint.py --config_folder <experiment directory>/config --load_pretrained_model True。这个命令将使用指定的配置文件夹启动训练过程,并加载任何指定的预训练模型)。目前该方法适用于Linux,Windows可能会遇到问题!
  5. 在完成一些训练步骤后,选择某个checkpoint,运行以下命令确认效果是否符合预期: python inference_am_vocoder_exp.py --config_folder exp/DataBaker/config --checkpoint g_00010000 --test_file data/inference/text。别忘了修改data/inference/text中speaker字段的内容。如果结果满意,就可以随意使用了!我们提供了一个修改版的demo page: demo_page_databaker.py来体验用DataBaker克隆后的音色效果。
  6. 如果结果不尽人意,可以继续训练,或者检查你的数据和环境。当然,欢迎在社区讨论,或者提交issue!

运行时间的参考信息:

 

我们提供如下运行时间信息和硬件配置信息,供大家参考:

  • Pip包的版本:Python 3.8.18, torch 1.13.1, cuda 11.7
  • GPU卡型号:NVIDIA GeForce RTX 3090, NVIDIA A40
  • 训练耗时:训练一万步,大概需要1-2个小时。

它甚至可以不用GPU显卡,只用CPU来训练。请静候佳音!

相关导航