From c5a5511d74ee6f84995a9614ef97603c4a125d33 Mon Sep 17 00:00:00 2001 From: lazy <2512087764@qq.com> Date: Mon, 2 Oct 2023 18:09:42 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=88=E6=9C=ACv1.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/.vuepress/theme.ts | 6 + src/posts/PluginsUse/plugin_network.md | 36 +++ src/posts/PluginsUse/plugin_voice.md | 216 ++++++++++++++++++ src/posts/PluginsUse/pluginsList.md | 4 +- .../deploymentTutorial/auto_app_linux.md | 4 + src/posts/deploymentTutorial/auto_app_win.md | 6 + 6 files changed, 270 insertions(+), 2 deletions(-) create mode 100644 src/posts/PluginsUse/plugin_network.md create mode 100644 src/posts/PluginsUse/plugin_voice.md diff --git a/src/.vuepress/theme.ts b/src/.vuepress/theme.ts index a0c6f7c16..c48d881b8 100644 --- a/src/.vuepress/theme.ts +++ b/src/.vuepress/theme.ts @@ -40,6 +40,12 @@ export default hopeTheme({ }, plugins: { + components: { + components: [ + "BiliBili", + "Share" + ] + }, // You should generate and use your own comment service // comment: { // provider: "Giscus", diff --git a/src/posts/PluginsUse/plugin_network.md b/src/posts/PluginsUse/plugin_network.md new file mode 100644 index 000000000..52c6b092a --- /dev/null +++ b/src/posts/PluginsUse/plugin_network.md @@ -0,0 +1,36 @@ +--- +title: WebwlkrPlugin插件 +icon: network +order: 2 +author: Lazy +date: 2023-09-30 +category: + - 插件使用 +--- +> 本期教程操作需要网络使用魔法,请自行解决 + +前提:已经安装了QChatGPT和mirai,没有安装的请根据[部署教程](../deploymentTutorial/README.md)自行安装 + +打开这个网页 + +[https://github.com/RockChinQ/WebwlkrPlugin](https://github.com/RockChinQ/WebwlkrPlugin) + +看到提示主程序版本高于要高于v2.5.0,所以发送(管理员向机器人QQ发送,管理员qq号是你自己设置的,在QChatGPT文件夹的config.py文件中可以看到) + +```sh +!version +``` + +如果回复的当前版本符号要求,即可继续本教程,否则先要更新版本(发送`!update`或自行手动安装新版本) + +向机器人发送(注意网络要使用魔法) + +```sh +!plugin get https://github.com/RockChinQ/WebwlkrPlugin +``` + +然后安装成功后可以看到机器人回复 + +![图1.png](https://s2.loli.net/2023/08/12/zmZBc8yfV1NL3vg.png) + +发送`!reload`即可成功使用 \ No newline at end of file diff --git a/src/posts/PluginsUse/plugin_voice.md b/src/posts/PluginsUse/plugin_voice.md new file mode 100644 index 000000000..8ca52bf7d --- /dev/null +++ b/src/posts/PluginsUse/plugin_voice.md @@ -0,0 +1,216 @@ +--- +title: chat_voice插件 +icon: community +order: 3 +author: Lazy +date: 2023-09-30 +category: + - 插件使用 +--- +:::info 目录 +[[toc]] +::: + +:::tip 建议配合视频使用 + +::: + +> 本教程为尽可能地简化部署流程,降低部署难度,特意提供了项目所需的python包(内含所需依赖)和chat_voice包(**已经对内容进行了修改**) + +前提:已经安装了QChatGPT和mirai,没有安装的请根据[部署教程](../deploymentTutorial/README.md)自行安装 + +## 准备工作 + +### 使用Huggingface的在线语音生成 +> **注意:** Huggingface永久免费但每次限制150字 + +首先注册一个Huggingface的账户,[点击跳转注册](https://huggingface.co/join) +点击这个链接:[https://huggingface.co/spaces/Plachta/VITS-Umamusume-voice-synthesizer](https://huggingface.co/spaces/Plachta/VITS-Umamusume-voice-synthesizer) +在仓库右上角,点击三个点,选择Duplicate this Space(复制空间) +![图1.png](https://s2.loli.net/2023/08/12/HsxhmKF35BDjbU9.png) +选择公有库Public,私有库会导致连不上,然后点击Duplicate Space +![图2.png](https://s2.loli.net/2023/08/12/QYszWePDgTcxvp9.png) +等待空间创建完毕 +打开开发者工具(F12),在工具栏中选择网络,随便选择一个模型(这里的选择应该不会影响的你之后使用Huggingface生成音频时的音色),如图 +![使用Huggingface.png](https://s2.loli.net/2023/08/17/KaM8GwchASXkJjI.png) +点击Generate生成一个音频 +观察到网络(Network)控制台有一个join包,如图。点击后会出现的websocket链接(以wss开头),复制下来 +![复制的wss链接.png](https://s2.loli.net/2023/08/17/ZrJQUXieI2KLamP.png) +将生成的音频点击播放一下 +这时观察网络控制台多出来一个wav文件,如图。将链接复制下来,并去掉file=后面的参数 +例如:`/tmp/tmptdrqcg0g/tmpjxcvncrq.wav`,留下的链接形式应该是这样的:`https://alazy-vits-umamusume-voice-synthesizer.hf.space/file=` +![复制的https链接.png](https://s2.loli.net/2023/08/17/Tg3K8hVOyJl7xDr.png) +### 使用Azure的在线语音生成 +> **注意:** Azure不是永久免费,但每月50万字的免费体验额度 + +首先在Azure注册账号,[点击注册](https://azure.microsoft.com/zh-cn/) +> 注意:Azure的免费语音生成需要使用外币卡验证 + +然后在Azure创建语音服务,[点击跳转](https://portal.azure.com/#view/Microsoft_Azure_Marketplace/GalleryItemDetailsBladeNopdl/id/Microsoft.CognitiveServicesSpeechServices) +按要求填写好信息后点击审阅并创建,再次点击创建 +创建完成后,点击转到资源,找到下方的密钥(1和2任选一个)和Location/Region,将两个内容复制下来 + +## 安装并修改配置文件 +### 手动安装部署 +打开这个网页: +https://github.com/oliverkirk-sudo/chat_voice +点击右上绿色图标`CODE`,点击`Download ZIP`,如图 +![修改配置文件图1.png](https://s2.loli.net/2023/08/17/OxFLS8Dc6KE4nYb.png) +将下载的压缩包解压,得到如图文件夹,将文件夹名字修改为`chat_voice` +![修改配置文件图2.png](https://s2.loli.net/2023/08/17/iJgTvDRjFGZ8KfN.png) +将修改后的`chat_voice`文件夹移动到`QChatGPT\plugins`文件夹内,如图 +![修改配置文件图3.png](https://s2.loli.net/2023/08/17/3oYw1IjWBl2RkAd.png) +打开`chat_voice`文件夹,双击打开`requirements.txt`文件,把里面的内容修改为以下(直接删除里面的,把下面的复制进去) +```txt +azure-cognitiveservices-speech~=1.26.0 +websocket-client~=1.5.1 +av~=10.0.0 +pilk~=0.2.3 +librosa~=0.10.0.post2 +torch +torchvision +torchaudio +torchcrepe +``` +`Ctrl+S`保存后,打开同目录的`config`文件夹,找到`mapper.py`文件,如图 +![修改配置文件图4.png](https://s2.loli.net/2023/08/17/8gqLwiSGCpXnUoj.png) +修改`mapper.py`文件(使用如VScode的代码编辑器或记事本),把里面的内容修改为以下(直接删除里面的,把下面的复制进去) +```python +import logging +import traceback +from plugins.chat_voice.config.voice_config import SoVitsConfig +method_mapping = { +# 'azure': save_azure_wav, +# 'huggingface': get_audio_wav, +# 'vits': save_vits_wav, +# 'sovits': save_sovits_wav +} + +voice_type_mapping = { +# 'azu': 'azure', +# 'hgf': 'huggingface', +# 'vits': 'vits', +# 'sovits': 'sovits' +} + +sovits_model='' + +try: + from plugins.chat_voice.config.voice_config import voice_config,azure_config,huggingface_config,vits_config,SoVitsConfig +except Exception: + logging.error("请正确配置voice_config.py") + traceback.print_exc() +try: + if huggingface_config['open']: + from plugins.chat_voice.pkg.huggingface.huggingface_session_hash import get_audio_wav + method_mapping['huggingface'] = get_audio_wav + voice_type_mapping['hgf'] = 'huggingface' + if azure_config['open']: + from plugins.chat_voice.pkg.azure.azure_text_to_speech import save_azure_wav + method_mapping['azure'] = save_azure_wav + voice_type_mapping['azu'] = 'azure' + # if vits_config['open']: + # from plugins.chat_voice.pkg.vits.vits_text_to_speech import save_vits_wav + # method_mapping['vits'] = save_vits_wav + # voice_type_mapping['vits'] = 'vits' + # if SoVitsConfig().OPEN: + # sovits_config=SoVitsConfig() + # from plugins.chat_voice.pkg.sovits.sovits_text_to_speech import save_sovits_wav,modelAnalysis + # method_mapping['sovits'] = save_sovits_wav + # voice_type_mapping['sovits'] = 'sovits' + # sovits_model=modelAnalysis(sovits_config.MODEL_PATH, sovits_config.CONFIG_PATH, sovits_config.CLUSTER_MODEL_PATH, sovits_config.ENHANCE, sovits_config.DIFF_MODEL_PATH,sovits_config.DIFF_CONFIG_PATH, sovits_config.ONLY_DIFFUSION) +except Exception: + logging.error("包加载错误") + traceback.print_exc() +``` +`Ctrl+S`保存并关闭 + +再打开`voice_config_temp.py`文件,按照注释填写 +你需要重点关注的就是 +`azure_config`下的`"region"`和`"secret"` +`huggingface_config`下的`"download_url`"和`"websocket"` +并把`vits_config`下的`open: True`改为`open: False` +如果没有Azure的语音生成服务,可以把默认生成模型改为Huggingface,例如 +`"voice_type": "azure"`改为`"voice_type": "huggingface"` +其他特殊要求请按注释更改 +没有更改后,`Ctrl+S`保存并关闭,并将文件名`voice_config_temp.py`改为`voice_config.py` + +下面开始安装插件所需依赖,这里提供两种方式: + +- **方式一:推荐新人使用,通过我提供的一个脚本自动一键安装,适合使用自动安装器部署QChatGPT项目的人** + +> 脚本下载:[点我下载](https://github.com/the-lazy-me/A-Utility-Room/releases/download/bat%E8%84%9A%E6%9C%AC/run-CVinstall.bat) + +将它保存在chat_voice目录,双击运行 +程序即可自动加载,安装所需依赖(正是`requirements.txt`里面写的依赖) +运行到下面这样子时就安装成功了(黄字提醒不重要),如图 +![installSuccess.png](https://s2.loli.net/2023/08/17/hLwlTyxavczK9fq.png) +然后运行`run-mirai.bat`和`run-bot.bat` + +- **方式二:通过手动安装,适合想要多了解有关操作的人** +然后返回的上级`chat_voice`目录,可以看到有一个`requirements.txt`文件 +这时,再打开项目根目录(就是`QChatGPT`文件夹的同目录),可以看到`python`文件夹,如图 +![pythonFolder.png](https://s2.loli.net/2023/08/17/8djB6FDOeTtM5Pv.png) +打开`python\Scripts`文件夹,可以看到`pip.exe`文件,如图 +![pipFile.png](https://s2.loli.net/2023/08/17/s5AcgvPTWFQdynH.png) +然后右击文件,复制`pip.exe`的路径,你将得到一个大致这样的路径 +`"F:\test\bot\python\Scripts\pip.exe"`(`F:\test\bot\`取决于你放的位置和文件夹起名),这时再把双引号去除后复制一遍,防止双引号未去除给后面的操作带来影响 +然后在`chat_voice`文件夹的上方地址栏,光标移动到路径最前面后,输入`cmd`和一个空格(不是输入汉字,是按一下空格),如图 +![cmd1.png](https://s2.loli.net/2023/08/17/qlCfVk8g57ILp4Q.png) +回车就可以看到在当前位置打开了命令提示符,如图 +![cmd2.png](https://s2.loli.net/2023/08/17/Y3yXthNmR7nW4fl.png) + +在cmd窗口输入以下命令,其中`F:\test\bot\python\Scripts\pip.exe`替换为你刚才复制的路径 +> **Tips:** `-r`表示表示遍历,`-i`表示选择使用的镜像,`-i`后面的链接即为镜像源 + +```cmd +F:\test\bot\python\Scripts\pip.exe install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple +``` +输入完成确定无误后回车,即可自动安装所需依赖(正是`requirements.txt`里面写的依赖) +运行到下面这样子时就安装成功了(黄字提醒不重要),如图 +![installSuccess.png](https://s2.loli.net/2023/08/17/hLwlTyxavczK9fq.png) + +### 使用压缩包部署 + +压缩包使用百度网盘分享,网盘提取码获取方式: +**三连关注后私信[UP主](https://space.bilibili.com/407410594),发送`chat_voice`或`4`,将会自动回复提取码** +- **[点我下载python压缩包](https://pan.baidu.com/s/1ZHeUe8Y79CxGl-81MnVBGg)** +- **[点我下载chat_voice压缩包](https://pan.baidu.com/s/1dwg1akeZRB9suJ7diXPZLA)** + + + +**压缩包使用方法:** +下载好python压缩包后,移动到项目文件夹根目录,并解压到当前位置,如图 +![pythonZIP.png](https://s2.loli.net/2023/08/17/57wezGrEPDib2Wh.png) +下载好chat_voice压缩包后,移动到`QChatGPT\plugins`文件夹下,并解压到当前位置,如图 + +然后修改`chat_voice\config`文件夹下的`voice_config.py`,按照注释填写 +你需要重点关注的就是 +`azure_config`下的`"region"`和`"secret"` +`huggingface_config`下的`"download_url`"和`"websocket"` +如果没有Azure的语音生成服务,可以把默认生成模型改为Huggingface,例如 +`"voice_type": "azure"`改为`"voice_type": "huggingface"` +其他特殊要求请按注释更改 +没有更改后,`Ctrl+S`保存并关闭 +然后运行`run-mirai.bat`和`run-bot.bat` + +## 使用方法 + +**注意:** +需要使用全局代理,或在`QChatGPT\plugins\chat_voice\config`的`voice_config.py`文件中配置代理(使用时去掉`#`注释,并正确配置) +```python + # "proxy_host": "127.0.0.1", #代理ip + # "proxy_port": 7890, #代理端口 + # "proxy_type": "http" #代理方式 http | socks5 +``` + +**包含的指令:** +- `!voice on` 开启输出转语音 +- `!voice off` 关闭输出转语音 +- `!voice type azu` 切换Azure语音合成 +- `!voice type hgf` 切换Huggingface语音合成 +- `!voice type vist` 切换VITS语音合成 +- `!voice type sovist` 切换VITS语音合成 +- `tovoice 文本内容` 将文本内容转换为语音消息 + +以上指令请以管理员身份向机器人发送 \ No newline at end of file diff --git a/src/posts/PluginsUse/pluginsList.md b/src/posts/PluginsUse/pluginsList.md index aea161069..eabf4201d 100644 --- a/src/posts/PluginsUse/pluginsList.md +++ b/src/posts/PluginsUse/pluginsList.md @@ -9,11 +9,11 @@ category: --- 插件列表 -- [WebwlkrPlugin](https://github.com/RockChinQ/WebwlkrPlugin) - 让机器人能联网!! +- [WebwlkrPlugin](https://github.com/RockChinQ/WebwlkrPlugin) - 让机器人能联网!!**[点我查看插件使用方法](./plugin_network.md)** - [revLibs](https://github.com/RockChinQ/revLibs) - 将ChatGPT网页版、Claude、Bard、Hugging Chat等破解版接入此项目,关于[官方接口和网页版有什么区别](https://github.com/RockChinQ/QChatGPT/wiki/8-%E5%AE%98%E6%96%B9%E6%8E%A5%E5%8F%A3%E3%80%81ChatGPT%E7%BD%91%E9%A1%B5%E7%89%88%E3%80%81ChatGPT-API%E5%8C%BA%E5%88%AB) - [Switcher](https://github.com/RockChinQ/Switcher) - 支持通过命令切换使用的模型 - [hello_plugin](https://github.com/RockChinQ/hello_plugin) - `hello_plugin` 的储存库形式,插件开发模板 -- [oliverkirk-sudo/chat_voice](https://github.com/oliverkirk-sudo/chat_voice) - 文字转语音输出,支持HuggingFace上的[VITS模型](https://huggingface.co/spaces/Plachta/VITS-Umamusume-voice-synthesizer),azure语音合成,vits本地语音合成,sovits语音合成 +- [oliverkirk-sudo/chat_voice](https://github.com/oliverkirk-sudo/chat_voice) - 文字转语音输出,支持HuggingFace上的[VITS模型](https://huggingface.co/spaces/Plachta/VITS-Umamusume-voice-synthesizer),azure语音合成,vits本地语音合成,sovits语音合成 **[点我查看插件使用方法](./plugin_network.md)** - [RockChinQ/WaitYiYan](https://github.com/RockChinQ/WaitYiYan) - 实时获取百度`文心一言`等待列表人数 - [chordfish-k/QChartGPT_Emoticon_Plugin](https://github.com/chordfish-k/QChartGPT_Emoticon_Plugin) - 使机器人根据回复内容发送表情包 - [oliverkirk-sudo/ChatPoeBot](https://github.com/oliverkirk-sudo/ChatPoeBot) - 接入[Poe](https://poe.com/)上的机器人 diff --git a/src/posts/deploymentTutorial/auto_app_linux.md b/src/posts/deploymentTutorial/auto_app_linux.md index 30f3da7d2..2d6e76310 100644 --- a/src/posts/deploymentTutorial/auto_app_linux.md +++ b/src/posts/deploymentTutorial/auto_app_linux.md @@ -11,6 +11,10 @@ category: [[toc]] ::: +:::tip 建议配合视频使用 + +::: + ## 第一步:下载安装器文件 在根目录输入以下指令创建一个文件夹(bot 为文件夹的名字,随便起) diff --git a/src/posts/deploymentTutorial/auto_app_win.md b/src/posts/deploymentTutorial/auto_app_win.md index 7b4472ec6..d171d6831 100644 --- a/src/posts/deploymentTutorial/auto_app_win.md +++ b/src/posts/deploymentTutorial/auto_app_win.md @@ -11,6 +11,11 @@ category: [[toc]] ::: +:::tip 建议配合视频使用 + +::: + + ## 第一步:下载一键安装器 打开这个网页 @@ -86,4 +91,5 @@ TxCaptchaHelper ![反代设置.jpg](https://s2.loli.net/2023/08/16/GeoiZCbLtfg3uqH.jpg) 然后记得保存,并重新运行run-bot + \ No newline at end of file