Skip to main content

基于nonebot2和vits的本地化角色语音合成插件

Project description

nonebot

nonebot-plugin-tts-gal

Nonebot2 基于nonebot2和vits的本地化角色语音合成插件 ✨

license Python NoneBot pypi

💬 前言

平时因为学业问题,有时可能会回复得比较慢,请见谅。

📖 介绍

vits的nonebot的本地化插件,使用已训练好的模型,按照配置要求,使机器人发送文本对应的语音

(PS: 语音生成比较吃配置,生成过程花费时间可能会比较长,且大文本量会占用较大内存,过大会导致机器人进程 killed ,请留意)

💿 安装

nb-cli安装 在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装
nb plugin install nonebot-plugin-tts-gal
pip安装
pip install nonebot_plugin_tts_gal

🍰 资源文件

data文件夹中的nonebot_plugin_tts_gal会存储与插件有关的文件

可以安装完插件后运行一次自动建立再退出

也可以按照该页面的data文件夹进行手动建立

具体的资源下载示例请查看例子示例

💻 相关依赖

ffmpeg的安装

Windows

在ffmpeg官网下载,选择对应的版本,下载后解压,并将位于bin目录添加到环境变量中

其他具体细节可自行搜索

Linux

Ubuntu下

apt-get install ffmpeg

或者下载源码安装(具体可搜索相关教程)

⚙️ 配置

配置项 必填 类型 默认值 说明
tts_gal Dict[Tuble[str],List[str]] {():[""]} 生成指定角色语音的关键配置,具体可见tts_gal的配置要求
auto_delete_voice Bool True 是否自动删除生成语音,True为是,False为否
(配置文件中请填truefalse)
decibel int -10 发送语音相对生成的分贝数
(原生成的音频音量可能比较大,因此通过此项来降低,负数为降,整数位升)
tts_gal_is_at Bool True 使用该功能是否需要@机器人,
(若填写,填truefalse)
tts_gal_prefix str ""(空) 使用该插件时的触发匹配前缀,减少冲突
tts_gal_priority int 3 该插件的优先级大小
tts_gal_tran_type List[str] ["youdao"] 文本翻译使用项,默认为有道翻译("youdao"),可支持百度翻译("baidu")和腾讯翻译("tencent"),填写顺序为翻译调用优先级,若填写百度和腾讯翻译后需填写对应的配置项
baidu_tran_appid str ""(空) 百度翻译接口对应的appid,可在百度翻译控制台获取
baidu_tran_apikey str ""(空) 百度翻译接口对应的apikey,可在百度翻译控制台获取
tencent_tran_region str "ap-shanghai" 腾讯翻译接口对应的地域,可在地域列表获取
tencent_tran_secretid str ""(空) 腾讯翻译接口对应secretid,可在云API密钥获取
tencent_tran_secretkey str ""(空) 腾讯翻译接口对应secretkey,可在云API密钥获取
tencent_tran_projectid int 0 腾讯翻译接口对应projectid,该项可以根据控制台-账号中心-项目管理中的配置填写,如无配置请填写默认项目ID:0或不填

🎉 使用

群聊和私聊仅有细微差别,其中下面语句中,name为合成语音的角色,text为转语音的文本内容(根据模型配置文件中的language会自动翻译为对应语言),具体的相关功能解释可查看这里

指令 可使用者 说明
[name]说[text]

[name]发送[text]
所有人 生成语音,
若配置了tts_gal_is_attruetts_gal_prefix不为空,
那么分别要@机器人和在name前添加配置的前缀,
如设置前缀tts,那么使用时为 tts[name]说[text]
禁用翻译 xxx 超级用户(SUPERUSER) 禁用名为xxx的翻译项,在启用前都不会使用xxx的翻译
启用翻译 xxx 超级用户(SUPERUSER) 启用名为xxx的翻译项,将会使用xxx的翻译(按原来配置设置的优先级)
查看翻译 超级用户(SUPERUSER) 查看插件目前调用的翻译项
查看禁用翻译 超级用户(SUPERUSER) 查看插件目前禁用的翻译项

例如:

  • 宁宁说おはようございます.
  • 禁用翻译 baidu
  • 启用翻译 baidu
  • 查看翻译
  • 查看禁用翻译

✏️ 今后

添加更多的模型

添加更多的翻译选项

❔ Q&A

安装pyopenjtalk

如果出现如下错误

图3

可能由于缺少cmake和MSVC造成的,需要在本机安装

Windows

第一步 安装Visual Studio

在Visual Studio的官网下载安装器,VS2022点击此处下载

下载社区版,即Visual Studio Community

第二步 下载相关工具

下载后点击,进入如图所示先点击修改,然后选择如图所示的项目

图1 图2

第三步 设置环境变量

下载好后,在安装目录中找到cmake和MSVC的bin目录

下面是参考目录,前面的目录即为之前强调的路径

E:\Program Files (x86)\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin

E:\Program Files (x86)\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\Hostx86\x64

将这两个目录添加到环境变量中

这样,windows安装pyopenjtalk的前置依赖便解决了

Linux

Linux如出现以下情况

图4

原因为缺少cmake工具,可以使用apt命令下载安装

sudo apt install cmake

安装好后便可安装pyopenjtalk

无法生成语音

如果出现下载open_jtalk的错误信息,可以再次尝试,如果实在不行,可以使用pip install openjtalk

💡 鸣谢

📝 更新日志

2023.1.1 version 0.3.7:

支持百度翻译和腾讯翻译的api使用,增加是否需要@机器人、自定义前缀、自定义插件priority等配置

2022.12.9 version 0.3.3:

自动读取已加载的角色模型,可通过PicMenu插件进行显示可使用的角色;对代码进行相关优化

2022.10.27 version 0.3.2:

修改正则表达式,避免文本出现"说/发送"而造成name的匹配错误

2022.10.21 version 0.3.1:

修复对配置项auto_delete_voice的判断bug

2022.10.19 version 0.3.0:

支持添加中文模型,优化相关代码,增添更多提示

2022.10.7 version 0.2.3:

适配nonebot2-rc1版本,并添加部分报错信息提醒

2022.9.28 version 0.2.2:

添加中文逗号替换成英文逗号

version 0.2.1:

将pyopenjtalk依赖更新为0.3.0,使python3.10也能使用

2022.9.25 version 0.2.0:

优化修改代码逻辑,支持自行添加vits模型,简单修复了一下有道翻译的翻译问题,启动时自动检测所需文件是否缺失

2022.9.21 version 0.1.1:

修改依赖

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nonebot_plugin_tts_gal-0.3.7.tar.gz (1.1 MB view hashes)

Uploaded Source

Built Distribution

nonebot_plugin_tts_gal-0.3.7-py3-none-any.whl (1.2 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page