EmotiVoice易魔声 - 强大的开源情感语音合成引擎
简介
EmotiVoice(易魔声)是网易有道开源的一款强大的 TTS (文本转语音)引擎。它具有以下主要特点:
完全免费开源 支持中英文双语 包含2000多种不同音色 支持情感合成,可以生成包含快乐、兴奋、悲伤、愤怒等多种情感的语音 提供简单易用的 Web 界面和批量处理脚本接口
最新动态
支持类 OpenAI TTS 的 API,新增调节语速功能 已发布 Mac 版一键安装包 提供 HTTP API 服务,单账户可免费调用超过 13,000 次 支持用户使用自己的数据定制音色
使用方法
Docker 快速部署
最简单的使用方式是通过 Docker 镜像运行(需要 NVIDIA GPU):
docker run -dp 127.0.0.1:8501:8501 syq163/emoti-voice:latest
然后访问 http://localhost:8501
即可使用 Web 界面。
完整安装
1. 环境配置
# 创建并激活 conda 环境
conda create -n EmotiVoice python=3.8 -y
conda activate EmotiVoice
# 安装基础依赖
pip install torch torchaudio
pip install numpy numba scipy transformers soundfile yacs g2p_en jieba pypinyin pypinyin_dict
python -m nltk.downloader "averaged_perceptron_tagger_eng"
2. 下载预训练模型
# 安装 git lfs
git lfs install
# 下载模型文件(二选一)
# 方式1:从 huggingface 下载
git lfs clone https://huggingface.co/WangZeJun/simbert-base-chinese WangZeJun/simbert-base-chinese
# 方式2:从 modelscope 下载
git clone https://www.modelscope.cn/syq163/WangZeJun.git
3. 准备推理模型
# 下载预训练模型
git clone https://www.modelscope.cn/syq163/outputs.git
4. 运行服务
Web界面方式
# 安装 streamlit
pip install streamlit
# 启动 Web 界面
streamlit run demo_page.py
API服务方式
# 安装依赖
pip install fastapi pydub uvicorn[standard] pyrubberband
# 启动 API 服务
uvicorn openaiapi:app --reload
5. 文本转语音示例
# 1. 生成音素文件
python frontend.py data/my_text.txt > data/my_text_for_tts.txt
# 2. 运行推理
TEXT=data/inference/text
python inference_am_vocoder_joint.py \
--logdir prompt_tts_open_source_joint \
--config_folder config/joint \
--checkpoint g_00140000 \
--test_file $TEXT
生成的语音文件将保存在 outputs/prompt_tts_open_source_joint/test_audio
目录下。
使用示例
1. 基础文本格式
输入文本格式为:<speaker>|<style_prompt/emotion_prompt/content>|<phoneme>|<content>
示例:
8051|非常开心|<sos/eos> uo3 sp1 l ai2 sp0 d ao4 sp1 b ei3 sp0 j ing1 sp3 q ing1 sp0 h ua2 sp0 d a4 sp0 x ve2 <sos/eos>|我来到北京,清华大学
2. API调用示例
import requests
url = "http://localhost:8000/v1/audio/speech"
headers = {
"Content-Type": "application/json"
}
data = {
"model": "emoti-voice",
"input": "这是一段测试文本",
"voice": "8051", # 音色ID
"emotion": "happy" # 情感类型
}
response = requests.post(url, json=data, headers=headers)
主要功能
1. 多语言支持
目前支持中文和英文 计划支持更多语言如日语、韩语等
2. 丰富的音色
内置2000多种音色 支持自定义音色训练
3. 情感合成
支持多种情感表达 可以通过提示词控制语音风格
4. 便捷的接口
Web 图形界面 命令行接口 HTTP API 类 OpenAI TTS API
开发计划
扩展支持更多语言 优化情感控制系统 提升合成音质 增加更多特色功能
许可证
EmotiVoice 采用 Apache-2.0 许可证开源。
这是一个非常有前景的开源项目,特别适合需要情感语音合成的应用场景。它不仅完全免费,而且提供了丰富的功能和便捷的使用方式,值得关注和尝试。
开源地址:https://github.com/netease-youdao/EmotiVoice