✨ Luna AI ✨部署指南

数据

​编辑​编辑​编辑​编辑

python

广告

如需付费调试,请联系 327209194

交流群 587663288

介绍

Luna AI 是一款结合了最先进技术的虚拟AI主播。它的核心是一系列高效的人工智能模型和平台,包括 ChatterBot、GPT、Claude、langchain、chatglm、text-generation-webui、讯飞星火、智谱AI、谷歌Bard、文心一言、通义星尘、通义千问、千帆大模型、Gemini、Kimi Chat、QAnything、koboldcpp、FastGPT、Ollama、One-API、AnythingLLM。这些模型既可以在本地运行,也可以通过云端服务提供支持。当然,为了让对话照进现实,还结合了多模态模型,包括 Gemini 的图像识别能力,获取电脑画面进行分析讲解。

Luna AI 的外观由 Live2D、Vtube Studio、xuniren、UE5 结合 Audio2Face、EasyAIVtuber、数字人视频播放器(Easy-Wav2Lip) 技术打造,为用户提供了一个生动、互动的虚拟形象。这使得 Luna AI 能够在各大直播平台,如 Bilibili、抖音、快手、微信视频号、斗鱼、YouTube、Twitch 和 TikTok,进行实时互动直播。当然,它也可以在本地环境中与您进行个性化对话。

为了使交流更加自然,Luna AI 使用了先进的自然语言处理技术,结合文本转语音系统,如 Edge-TTS、VITS-Fast、elevenlabs、bark-gui、VALL-E-X、睿声AI、genshinvoice.top、tts.ai-lab.top、OpenVoice、GPT_SoVITS、clone-voice、Azure TTS、fish-speech。这不仅让它能够生成流畅的回答,还可以通过 so-vits-svc 和 DDSP-SVC 实现声音的变化,以适应不同的场景和角色。

此外,Luna AI 还能够通过特定指令与 Stable Diffusion 协作,展示画作。用户还可以自定义文案,让 Luna AI 循环播放,以满足不同场合的需求。

License

这个项目采用 GNU通用公共许可证(GPL) 进行许可。有关详细信息,请参阅 LICENSE 文件。

This project is licensed under the GNU General Public License (GPL). Please see the LICENSE file for more details.

注意

严禁将此项目用于一切违反《中华人民共和国宪法》,《中华人民共和国刑法》,《中华人民共和国治安管理处罚法》和《中华人民共和国民法典》之用途。

严禁用于任何政治相关用途。

导航

 视频教程合集 |  在线文档 |  GitHub |  Gitee

mind-map

 项目结构

项目结构

  • config.json 配置文件
  • main.py GUI主程序。会根据配置调用各平台程序
  • utils 文件夹,存储聊天、音频、通用类相关功能的封装实现
  • data 文件夹,存储数据文件、违禁词、文案等
  • log 文件夹,存储运行日志、字幕日志等
  • out 文件夹,存储TTS、SVC输出的音频文件,文案输出的音频文件
  • Live2D 文件夹,存储Live2D源码及模型
  • song 文件夹,存储点歌模式的歌曲
  • docs 文件夹,存储项目相关文档
  • tests 文件夹,存储单一功能点的测试程序
  • cookie 文件夹,存储部分功能需要用到的cookie数据

 下载项目

首先你得装个 git(啥,没装?百度),当然也可以直接在页面切换分支后下载各版本 ZIP 压缩包
# 主线(推荐)
git clone https://github.com/Ikaros-521/AI-Vtuber.git

# owner分支
git clone -b owner https://github.com/Ikaros-521/AI-Vtuber.git

整合包

Windows整合包下载: - github  - 迅雷云盘  - 夸克网盘 

 运行环境

操作系统
  • Windows 10 及以上
  • MacOS
  • Linux

Windows部署建议直接使用整合包!

MacOS部署问题讨论:🙋 Mac部署问题讨论 · Issue #423 · Ikaros-521/AI-Vtuber · GitHub
Linux部署问题讨论:🙋 Linux环境部署专用讨论帖 · Issue #520 · Ikaros-521/AI-Vtuber · GitHub

Python 版本 3.10.11

依赖的库在 requirements.txt 中,请自行安装。

注意

安装目录请勿在 中文路径、带有空格的路径、带有特殊字符的路径 ,可能会导致程序无法运行或运行异常

依赖版本参考 requirements_common.txt

安装命令参考:

pip install -r requirements.txt

自行安装依赖100%出现依赖冲突问题,参考仓库issue:🐛 安装依赖冲突(pip install -r requirements.txt)报错:ERROR: Cannot install -r requirements.txt (line 18) and -r requirements.txt (line 74) because these package versions have conflicting dependencies. · Issue #655 · Ikaros-521/AI-Vtuber · GitHub

Note

部署视频教程 哔哩哔哩 

 配置

WebUI 程序运行后会自动加载配置文件,可以通过 WebUI 程序进行配置修改(清空配置项可以看到配置项的说明),也可以手动修改配置运行。

配置都在 config.json(此处只列举了大部分,因为实在是太多了,懒了)

config.json

{
    // 你的直播间号,兼容全平台,都是直播间页面的链接中最后的数字和字母。例如:123
    "room_display_id": "你的直播间号",
    // 选用的聊天类型:chatterbot/chatgpt/claude/chat_with_file/chatglm/sparkdesk/reread/none 其中reread就是复读机模式,none是不启用
    "chat_type": "none",
    // 弹幕语言筛选,none就是全部语言,en英文,jp日文,zh中文
    "need_lang": "none",
    // 请求chatgpt/claude时,携带的字符串头部,用于给每个对话追加固定限制
    "before_prompt": "请简要回复:",
    // 请求chatgpt/claude时,携带的字符串尾部
    "after_prompt": "",
    // 弹幕日志类型,用于记录弹幕触发时记录的内容,默认只记录回答,降低当用户使用弹幕日志显示在直播间时,因为用户的不良弹幕造成直播间被封禁问题
    "comment_log_type": "回答",
    "filter": {
        // 弹幕过滤,必须携带的触发前缀字符串(任一)
        "before_must_str": [],
        // 弹幕过滤,必须携带的触发后缀字符串(任一)
        "after_must_str": [
            ".",
            "。",
            "?",
            "?"
        ],
        // 本地违禁词数据路径(你如果不需要,可以清空文件内容)
        "badwords_path": "data/badwords.txt",
        // 最长阅读的英文单词数(空格分隔)
        "max_len": 30,
        // 最长阅读的字符数,双重过滤,避免溢出
        "max_char_len": 50
    },
    // 答谢相关配置
    "thanks": {
        // 是否启用入场欢迎
        "entrance_enable": true,
        // 是否启用礼物答谢
        "gift_enable": true,
        // 入场欢迎文案
        "entrance_copy": "欢迎 {username}",
        // 礼物答谢文案
        "gift_copy": "感谢 {username} 送的 {gift_name}",
        // 最低礼物答谢金额
        "lowest_price": 1.0
    },
    // Live2D皮
    "live2d": {
        // 是否启用
        "enable": true,
        // web服务监听端口
        "port": 12345
    },
    "openai": {
        "api": "https://api.openai.com/v1",
        "api_key": [
            "你的api key"
        ]
    },
    // claude相关配置
    "claude": {
        // claude相关配置
        // 参考:https://github.com/bincooo/claude-api#readme
        "slack_user_token": "",
        "bot_user_id": ""
    },
    // chatglm相关配置
    "chatglm": {
        "api_ip_port": "http://127.0.0.1:8000",
        "max_length": 2048,
        "top_p": 0.7,
        "temperature": 0.95
    },
    // 讯飞星火相关配置
    "sparkdesk": {
        // 两种类型 web api
        "type": "web",
        // web类型下 抓包中的cookie,详情见拓展教程
        "cookie": "",
        // web类型下 抓包中的fd
        "fd": "",
        // web类型下 抓包中的GtToken
        "GtToken": "",
        // api类型下 申请api后平台中的appid
        "app_id": "",
        // api类型下 申请api后平台中的appsecret
        "api_secret": "",
        // api类型下 申请api后平台中的appkey
        "api_key": ""
    },
    "chat_with_file": {
        // 本地向量数据库模式
        "chat_mode": "claude",
        // 本地文件地址
        "data_path": "data/伊卡洛斯百度百科.zip",
        // 切分数据块的标志
        "separator": "\n",
        // 向量数据库数据分块
        "chunk_size": 100,
        // 每个分块之间的重叠字数。字数越多,块与块之间的上下文联系更强,但不能超过chunk_size的大小。同时chunk_size和chunk_overlap越接近,构造向量数据库的耗时越长
        "chunk_overlap": 50,
        "chain_type": "stuff",
        // 适用于openai模式,显示消耗的token数目
        "show_token_cost": false,
        "question_prompt": "请根据以上content信息进行归纳总结,并结合question的内容给出一个符合content和question语气、语调、背景的回答。不要出现'概括''综上''感谢'等字样,向朋友    直接    互相交流即可。如果发现不能content的信息与question不相符,抛弃content的提示,直接回答question即可。任何情况下都要简要地回答!",
        // 最大查询数据库次数。限制次数有助于节省token
        "local_max_query": 3,
        // 默认本地向量数据库模型
        "local_vector_embedding_model": "sebastian-hofstaetter/distilbert-dot-tas_b-b256-msmarco"
    },
    // 语音合成类型选择 edge-tts/vits_fast/elevenlabs
    "audio_synthesis_type": "edge-tts",
    // vits_fast相关配置
    "vits_fast": {
        // 配置文件的路径
        "vits_fast_config_path": "E:\\GitHub_pro\\VITS-fast-fine-tuning\\inference\\finetune_speaker.json",
        // 推理服务运行的链接(需要完整的URL)
        "vits_fast_api_ip_port": "http://127.0.0.1:7860",
        // 选择的说话人,配置文件中的speaker中的其中一个
        "character": "ikaros"
    },
    // so-vits-svc相关配置
    "so_vits_svc": {
        // 启用功能 true启用 false关闭
        "enable": false,
        // 模型配置文件路径
        "config_path": "D:\\so-vits-svc\\configs\\ikaros_v1.json",
        // 服务运行的ip端口(注意,请运行flask_api_full_song.py)
        "api_ip_port": "http://127.0.0.1:1145",
        // 说话人,源自配置文件
        "spk": "ikaros",
        // 音调
        "tran": 1.0,
        // 输出音频格式
        "wav_format": "wav"
    },
    // edge-tts相关配置
    "edge-tts": {
        // edge-tts选定的说话人(cmd执行:edge-tts -l 可以查看所有支持的说话人)
        "voice": "zh-CN-XiaoyiNeural"
        // 语速增益 默认是 +0%,可以增减,注意 + - %符合别搞没了,不然会影响语音合成
        "rate": "+0%",
        // 音量增益 默认是 +0%,可以增减,注意 + - %符合别搞没了,不然会影响语音合成
        "volume": "+0%",
        // 语速
        "speed": 1
    },
    // elevenlabs相关配置
    "elevenlabs": {
        // elevenlabs密钥,可以不填,默认也有一定额度的免费使用权限,具体多少不知道
        "api_key": "",
        // 选择的说话人名
        "voice": "Domi",
        // 选择的模型
        "model": "eleven_monolingual_v1"
    },
    // genshinvoice.top相关配置
    "genshinvoice_top": {
        // 说话人
        "speaker": "神里绫华",
        // 输出音频格式 不建议修改
        "format": "wav",
        // 可用于控制整体语速。默认为1.2
        "length": "1.25",
        // 控制感情变化程度,默认为0.2
        "noise": "0.2",
        // 控制音节发音长度变化程度,默认为0.9
        "noisew": "0.9"
    },
    // chatterbot相关配置
    "chatterbot": {
        // 机器人名
        "name": "bot",
        // bot数据库路径
        "db_path": "db.sqlite3"
    },
    // chatgpt相关配置
    "chatgpt": {
        "model": "gpt-3.5-turbo",
        // 控制生成文本的随机性。较高的温度值会使生成的文本更随机和多样化,而较低的温度值会使生成的文本更加确定和一致。
        "temperature": 0.9,
        "max_tokens": 2048,
        "top_p": 1,
        "presence_penalty": 0,
        "frequency_penalty": 0,
        "preset": "请扮演一个AI虚拟主播。不要回答任何敏感问题!不要强调你是主播,只需要回答问题!"
    },
    // text-generation-webui相关配置
    "text_generation_webui": {
        // 服务监听的IP和端口
        "api_ip_port": "http://127.0.0.1:5000",
        "max_new_tokens": 250,
        // 有 'chat', 'chat-instruct', 'instruct'
        "mode": "chat",
        // 角色
        "character": "Example",
        // 聊天指导模板
        "instruction_template": "Vicuna-v1.1",
        // 你的名字
        "your_name": "你"
    },
    // 是否启用本地问答库匹配机制,优先级最高,如果匹配则直接合成问答库内的内容/返回本地音频,如果不匹配则按照正常流程继续。
    "local_qa": {
        // 文本匹配模式
        "text": {
            // 是否启用
            "enable": true,
            // 文本问答库文件路径,数据为一问一答形式(换行分隔)
            "file_path": "data/本地问答库.txt"
        },
        // 音频匹配模式
        "audio": {
            // 是否启用
            "enable": true,
            // 文本问答库音频文件路径,匹配的关键词就是音频文件名,为模糊最优匹配
            "file_path": "out/本地问答音频/"
        }
    },
    // 点歌模式设置
    "choose_song": {
        // 是否启用 true启用 false关闭
        "enable": true,
        // 点歌触发命令(完全匹配才行)
        "start_cmd": "点歌 ",
        // 停止点歌命令(完全匹配才行)
        "stop_cmd": "取消点歌",
        // 歌曲音频路径(默认为本项目的song文件夹)
        "song_path": "song",
        // 匹配失败返回的音频文案 注意 {content} 这个是用于替换用户发送的歌名的,请务必不要乱删!影响使用!
        "match_fail_copy": "抱歉,我还没学会唱{content}"
    },
    // stable diffusion相关配置
    "sd": {
        // 是否启用
        "enable": false,
        // 触发的关键词(弹幕头部触发)
        "trigger": "画画:",
        // 服务运行的IP地址
        "ip": "127.0.0.1",
        // 服务运行的端口
        "port": 7860,
        // 负面文本提示,用于指定与生成图像相矛盾或相反的内容
        "negative_prompt": "ufsw, longbody, lowres, bad anatomy, bad hands, missing fingers, pubic hair,extra digit, fewer digits, cropped, worst quality,   low quality",
        // 随机种子,用于控制生成过程的随机性。可以设置一个整数值,以获得可重复的结果。
        "seed": -1,
        // 样式列表,用于指定生成图像的风格。可以包含多个风格,例如 ["anime", "portrait"]。
        "styles": [],
        // 提示词相关性,无分类器指导信息影响尺度(Classifier Free Guidance Scale) -图像应在多大程度上服从提示词-较低的值会产生更有创意的结果。
        "cfg_scale": 7,
        // 生成图像的步数,用于控制生成的精确程度。
        "steps": 30,
        // 是否启用高分辨率生成。默认为 False。
        "enable_hr": false,
        // 高分辨率缩放因子,用于指定生成图像的高分辨率缩放级别。
        "hr_scale": 2,
        // 高分辨率生成的第二次传递步数。
        "hr_second_pass_steps": 20,
        // 生成图像的水平尺寸。
        "hr_resize_x": 512,
        // 生成图像的垂直尺寸。
        "hr_resize_y": 512,
        // 去噪强度,用于控制生成图像中的噪点。
        "denoising_strength": 0.4
    },
    // 文案相关配置(待更新)
    "copywriting": {
        // 文案文件存储路径,不建议更改。
        "file_path": "data/copywriting/",
        // 文案文件存储路径2,不建议更改。
        "file_path2": "data/copywriting2/",
        // 文案音频文件存储路径,不建议更改。
        "audio_path": "out/copywriting/",
        // 文案音频文件存储路径2,不建议更改。
        "audio_path2": "out/copywriting2/",
        // 播放音频文件列表
        "play_list": [
            "测试文案2.wav",
            "测试文案3.wav",
            "吐槽.wav"
        ],
        // 播放音频文件列表2
        "play_list": [
            "test.wav"
        ],
        // 文案音频播放之间的间隔时间。就是前一个文案播放完成后,到后一个文案开始播放之间的间隔时间。
        "audio_interval": 5,
        // 文案音频切换到弹幕音频的切换间隔时间(反之一样)。就是在播放文案时,有弹幕触发并合成完毕,此时会暂停文案播放,然后等待这个间隔时间后,再播放弹幕回复音频。
        "switching_interval": 5,
        // 文案随机播放,就是不根据播放音频文件列表的顺序播放,而是随机打乱顺序进行播放。
        "random_play": true
    },
    "header": {
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.42"
    },
    // 聊天模式相关配置
    "talk": {
        // 你的名称
        "username": "主人",
        // 使用的语音识别类型 baidu / google
        "type": "google",
        // 录音触发按键(长按此按键进行录音)
        "trigger_key": "1",
        // 音量阈值,指的是触发录音的起始音量值,请根据自己的麦克风进行微调到最佳
        "volume_threshold": 800,
        // 沉默阈值,指的是触发停止路径的最低音量值,请根据自己的麦克风进行微调到最佳
        "silence_threshold": 15,
        // 百度语音识别 申请:https://console.bce.baidu.com/ai/#/ai/speech/overview/index
        "baidu": {
            // 百度云 语音识别应用的 AppID
            "app_id": "",
            // 百度云 语音识别应用的 API Key
            "api_key": "",
            // 百度云 语音识别应用的 Secret Key
            "secret_key": ""
        },
        // 谷歌语音识别
        "google": {
            // 录音后识别转换成的目标语言(就是你说的语言)
            "tgt_lang": "zh-CN"
        }
    },
    // 字幕相关配置
    "captions": {
        // 是否启用字幕记录
        "enable": true,
        // 字幕输出路径
        "file_path": "log/字幕.txt"
    }
}

 ChatGPT 代理

"openai": {
    // 代理地址,需要和官方接口一致的才行。例如:api2d
    "api": "https://oa.api2d.net/v1",
    // 代理站提供的密钥
    "api_key": [
        "fkxxxxxxxxxxx"
    ]
}
  • one-api

官方仓库:one-api

或者纯代理的镜像站

 chat_with_file 模式说明

模式简介

用户上传预先设定好的“人物设定”文件(pdf、txt等文本文件),让用户自定义配置角色背景信息、设定

  1. 当用户输入一个查询时,这个系统首先会在本地文档集合中进行相似性搜索,寻找与查询最相关的文档

  2. 然后,它会把这些相关文档以及用户的查询作为输入,传递给语言模型。这个语言模型会基于这些输入生成一个答案

  3. 如果系统在本地文档集合中找不到任何与用户查询相关的文档,或者如果语言模型无法基于给定的输入生成一个有意义的答案,那么这个系统可能就无法回答用户的查询

模式配置

chat_type设置为 chat_with_file 方可使用。使用前必须先设置好 opeanai、claude 等模型的访问 token 相关的配置

chat_with_file 目前支持以下模式,在相关配置下的 chat_mode 进行配置

  • claude 使用claude作为聊天模型,需要同时设置好

  • local_vector_embedding_model 本地向量数据库。该模式会使用本地向量数据库存储数据

  • openai_vector_search 仅仅使用向量数据库作查询,不做gpt的调用,可以节省token,做个简单的本地数据搜索。目前使用OpenAIEmbedding进行向量化,所以需要配置好OpenAI信息

  • openai_gpt 从向量数据库中查询到相关信息后,将其传递给gpt模型,让模型作进一步处理

推荐使用 claude 模式,这样可以免费使用,无需消耗 openai 的 token

后续会支持更多免费模型,如 文心一言、讯飞星火 等

注意

  1. 所有模型都应该采用 HuggingFace 模型,暂未适配其他模型

  2. 本地模型存储目录是 data/text2vec_models ,将自己的模型存储到该位置,在 config.json 配置中填写该模型的 文件夹名字 即可

  3. 如果需要其他模型,可以从 HuggingFace 中下载下来,存放到对应位置即可

  4. 也可以直接输入 HuggingFace 的模型名字,如 GanymedeNil/text2vec-large-chinese  ,项目会自动从远程仓库下载。

    1. 请确保能够连接上 HuggingFace (可能需要科学上网)

    2. 远程仓库下载的模型,一般存储在系统cache中。win端一般是 C:\Users\用户\.cache\torch\sentence_transformers 。也可以将其移动到项目模型存储目录下使用

  5. openai_vector_search 和 openai_gpt 读取本地数据的内容默认以换行为分隔符,所以可能导致大标题数据丢失问题,需要注意你的数据内容在编辑时不要将核心的内容放在标题部分单独一行,导致丢失 核心数据,尽量将标题和正文写在一行,在真的需要分割的部分进行换行。

 使用

Note

运行webui,python webui.py,配置平台配置、直播间号等,具体参考视频教程。

实战教程:【AI主播-实战篇】AI前台/客服/看板娘,现实中对话AI,提供聊天/知识问答服务,实际全配置演示,手把手带你应用

各版本都需要做的前期准备操作。

Chatterbot

Chatterbot 相关安装

 

 
 

 
 

启动 GUI/手动 修改 config.json 的配置,配好哈,注意 JSON 数据格式

哔哩哔哩版

注意:如果使用方案2,需要手动克隆官方项目仓库的blivedmsite-packages

抖音版

先安装第三方弹幕捕获软件,参考 补充-抖音

抖音版 旧版

不稳定

运行前请重新生成一下protobuf文件,因为机器系统不一样同时protobuf版本也不一样所以不能拿来直接用~

protoc -I . --python_out=. dy.proto

Note

依赖 golang  环境,还没有的话,手动补一补 protobuf 

快手版
方案1:

请在安装完依赖后,安装火狐浏览器内核。参考命令:playwright install firefox

如果你是整合包,项目路径打开cmd,然后使用 Miniconda3\python.exe Miniconda3\Scripts\playwright.exe install firefox 进行安装。

使用新版本时需要注意,请使用小号登录,然后在每次用完之后,把 cookie 文件夹下的 123.json 文件删掉!!!用过一次后 cookie 就异常了,所以需要删了重新登录!!!

方案2:

配合油猴脚本:直播弹幕监听 转发至本地WS服务端,在浏览器直播间页面监听DOM变动,WS返回数据。

浏览器安装油猴插件后,再安装上面的脚本,打开需要监听的直播间后,就会自动监听弹幕,连接WS服务,然后把AI Vtuber运行起来,进行对接。

方案0:

运行前请重新生成一下 protobuf 文件,因为机器系统不一样同时 protobuf 版本也不一样所以不能拿来直接用~

protoc -I . --python_out=. ks.proto

Note

依赖 golang  环境,还没有的话,手动补一补 protobuf 

微信视频号版

Note

安装监听程序(不保证安全性,自行斟酌) wxlivespy,设置监听地址为http://127.0.0.1:8082/wxlive,开播!开始监听,扫描登录直播的微信号。webui修改平台为微信视频号,运行即可。

斗鱼版

打开您的浏览器,找到您需要监听的直播间,然后按F12打开开发者工具,点击Console(控制台),复制 douyu_ws_client.js 脚本中的内容,粘贴到控制台,回车运行,启动监听服务

douyu_ws_client.js

 

 效果图

WebUI 界面

动画

SD 接入

image

 常见问题

部署过程问题

  • CondaSSLError: OpenSSL appears to be unavailable on this machine

本地已经有 Anaconda 环境,在执行 半自动包的1.创建虚拟环境.bat时,出现报错 CondaSSLError: OpenSSL appears to be unavailable on this machine

image

解决方案:参考 blog.csdn.net/mynameisyaxuan/article/details/128323026

  • ModuleNotFoundError: No module named 'xxx' 大同小异

都是依赖库缺失问题,可以打开requirements_bilibili.txt/requirements_dy.txt/requirements_ks.txt内查看需要安装的依赖(可能还是遗漏...)

视情况更换镜像源,国内推荐清华源,如果清华源没有缺失的库,可以走pypi的源,安装命令如:

pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple

注意:请在虚拟环境中安装!!!(如果你是根据半自动整合包做的话,先激活虚拟环境conda activate ai_vtb,然后进行安装)

https://pypi.org/simple
https://pypi.python.org/simple/
https://pypi.tuna.tsinghua.edu.cn/simple
  • ModuleNotFoundError: No module named 'PyQt5'

半自动包 运行 GUI运行.bat 时,出现

Traceback (most recent call last):
  File "F:\github_pro\AI-Vtuber\main.py", line 10, in <module>
    from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QLabel, QComboBox, QLineEdit, QTextEdit, QDialog
ModuleNotFoundError: No module named 'PyQt5'

解决方案:手动补装 PyQt5 ,需要注意,得在 ai_vtb 的虚拟环境中安装

可以发现最左侧有这个括号,表示你激活了 ai_vtb 的虚拟环境中,然后你在运行 后面的pip安装 (ai_vtb) F:\github_pro\AI-Vtuber>pip install PyQt5

image

  • ModuleNotFoundError: No module named 'langid'

半自动包 运行 GUI运行.bat 时,出现

Traceback (most recent call last):
  File "F:\github_pro\AI-Vtuber\main.py", line 20, in <module>
    from utils.common import Common
  File "F:\github_pro\AI-Vtuber\utils\common.py", line 8, in <module>
    import langid
ModuleNotFoundError: No module named 'langid'

解决方案:手动补装 langid ,需要注意,得在 ai_vtb 的虚拟环境中安装, pip install langid

image

如果遇到上图安装失败的问题 , 走官方源下载 pip install langid -i https://pypi.python.org/simple/

image

  • ModuleNotFoundError: No module named 'profanity'

半自动包 运行 GUI运行.bat 时,出现

Traceback (most recent call last):
  File "F:\github_pro\AI-Vtuber\main.py", line 20, in <module>
    from utils.common import Common
  File "F:\github_pro\AI-Vtuber\utils\common.py", line 10, in <module>
    from profanity import profanity
ModuleNotFoundError: No module named 'profanity'

解决方案:手动补装 profanity ,需要注意,得在 ai_vtb 的虚拟环境中安装, pip install profanity

image

  • ModuleNotFoundError: No module named 'ahocorasick'

半自动包 运行3.GUI运行.bat时,出现

Traceback (most recent call last):
  File "F:\github_pro\AI-Vtuber\main.py", line 20, in <module>
    from utils.common import Common
  File "F:\github_pro\AI-Vtuber\utils\common.py", line 11, in <module>
    import ahocorasick
ModuleNotFoundError: No module named 'ahocorasick'

解决方案:手动补装 pyahocorasick ,需要注意,得在 ai_vtb 的虚拟环境中安装, pip install pyahocorasick

image

使用过程问题

  • openai 接口报错:《empty message》

可能是API KEY过期了/额度没了,请检查API KEY是否可用。

在线测试参考:

ChatGPT-Html

ChatGPT-Next-Web

  • ERROR: Cannot install -r requirements_bilibili.txt (line 23), aiohttp and langchain==0.0.142 because these package versions have conflicting dependencies.

依赖冲突问题。可以删除 requirements_bilibili.txt 中的 langchain==0.0.142 和 bilibili-api-python==9.1.0 ,然后进行重新安装。安装完成后,手动安装这2个库(按顺序安装)。

Miniconda3\python.exe -m pip install bilibili-api-python==9.1.0
Miniconda3\python.exe -m pip install langchain==0.0.142
  • ERROR: Conmunicate.__init__() got an unexpected keyword argument 'text'

问题根因:Edge-TTS版本过低

解决方案:升级到指定版本 pip install edge-tts==6.1.6

  • File ".\flask_api_full_song.py", line 38, in wav2wav out_audio, out_sr = svc_model.infer(spk, tran, raw_path) ValueError: too many values to unpack (expected 2) 注意!!!如果你是 4.1 版本的整合包,很可能就有这个bug,需要修改 flask_api_full_song.py 的38行左右:
out_audio, out_sr = svc_model.infer(spk, tran, raw_path)

out_audio, out_sr, n_frames = svc_model.infer(spk, tran, raw_path)
  • RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)

问题:pydub依赖ffmpeg,但环境不存在ffmpeg

解决方案:安装ffmpeg并配置环境变量

ffmpeg安装教程:ffmpeg安装教程

ffmpeg官方下载:ffmpeg.org/download.html

ffmpeg本仓库内下载:releases

简述就是下载,解压,配置 ffmpeg 的 bin 到系统环境变量path中,完事。

  • qt.qpa.plugin: Could not find the Qt platform plugin "windows" in "" This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

问题:无法找到Qt。

解决方案:如果你是整合包,那请检查是否在 中文路径 下!!!如果是自行安装的,可以尝试重装pyqt5。

  • 保存配置后没有自动重启,报错 [Errno 2] No such file or directory

现象:

2023-08-03 17:27:24,700 - D:\GitHub_pro\AI-Vtuber-20230 729\main.py[line:1386] - INFO: 配置数据已成功写入文件!程序将在3秒后重启~
D:\GitHub_pro\AI-Vtuber-20230: can't open file 'D:\\GitHub_pro\\AI-Vtuber-20230 729\\729\\Miniconda3\\python.exe': [Errno 2] No such file or directory

问题:没有自动重启程序,并报错

解决方案:请将项目放在 非中文,无空格 的路径下。

D:\\GitHub_pro\\AI-Vtuber-20230 729 ——> D:\\GitHub_pro\\AI-Vtuber-20230729

  • 更新后报错 ImportError: cannot import name 'sync' from 'bilibili_api'

完整报错:

File "D:\GitHub_pro\AI-Vtuber-20230815\bilibili.py", line 9, in <module>
    from bilibili_api import live, sync
ImportError: cannot import name 'sync' from 'bilibili_api' (D:\GitHub_pro\AI-Vtuber-20230815\Miniconda3\lib\site-packages\bilibili_api\__init__.py)

问题根因:bilibili_api没有sync模块,其实是更新后,bilibili_api不对了,需要重新安装对应依赖。

解决方案:

1.删除 bilibili-api-python 和 bilibili-api ,参考命令(整合包): Miniconda3\python.exe -m pip uninstall bilibili-api-python bilibili-api,然后在提示出入(y/n)部分输入 y ,然后回车,共2次。

Proceed (Y/n)? y
  Successfully uninstalled bilibili-api-python-15.5.3
Proceed (Y/n)? y
  Successfully uninstalled bilibili-api-4.1.0

2.重新安装,可以手动安装 Miniconda3\python.exe -m pip install bilibili-api-python bilibili-api ,也可以直接执行2-2.安装依赖.bat完成安装。

  • 使用ChatGPT API,报错:error_message='You exceeded your current quota, please check your plan and billing details.'

可能是API KEY过期了/额度没了,请检查API KEY是否可用。

image

在线测试参考:
ChatGPT-Html
ChatGPT-Next-Web

  • Miniconda3\Scripts\playwright.exe install Fatal error in launcher: Unable to create process using '"D:\GitHub_pro\AI-Vtuber-20230729\Miniconda3\python.exe" "D:\ai3\AI-Vtuber-20230825\Miniconda3\Scripts\playwright.exe" install': ???????????

playwright安装浏览器内核失败。

解决方案:重新安装playwright,需要注意,前提是激活了本地环境

pip uninstall playwright
pip install playwright
playwright install
  • ModuleNotFoundError: No module named 'blivedm.models.web'; 'blivedm.models' is not a package

解决方案:AI-Vtuber/issues/381#issuecomment-1774128497

API

API接口地址根据api.py程序配置决定,默认:http://127.0.0.1:8082

配置config

概述
  • 请求地址: /set_config
  • 请求类型: POST
  • 描述: 修改配置文件。
请求参数
参数名类型是否必需描述
config_pathstring配置文件路径,例如:config.json
dataobject配置文件内容(json),例如:{"platform": "bilibili"}
响应
参数名类型描述
codeint状态码,200为成功,小于0为错误代码,大于0为部分成功代码
msgstring响应消息,描述请求的处理结果

系统命令

概述
  • 请求地址: /sys_cmd
  • 请求类型: POST
  • 描述: 控制系统运行相关命令。
请求参数
参数名类型是否必需描述
typestring命令类型(run/stop/restart/factory)。例如:run
dataobject数据文件内容(json),根据命令不同,数据内容也相应改变,具体参考源码中的实例。例如:{"config_path": "config.json"}
响应
参数名类型描述
codeint状态码,200为成功,小于0为错误代码,大于0为部分成功代码
msgstring响应消息,描述请求的处理结果

发送数据

概述
  • 请求地址: /send
  • 请求类型: POST
  • 描述: 发送平台弹幕、礼物、入场、复读等数据进行功能调用。
请求参数
参数名类型是否必需描述
typestring数据类型(comment/gift/entrance/reread)。例如:comment
dataobject数据文件内容(json),根据命令不同,数据内容也相应改变,具体参考源码中的实例。例如:{"platform":"哔哩哔哩","username":"用户名","content":"弹幕内容"}
响应
参数名类型描述
codeint状态码,200为成功,小于0为错误代码,大于0为部分成功代码
msgstring响应消息,描述请求的处理结果

 应用实例

PK、连麦玩法如何配置?

参考配置:🙋 PK、连麦如何配置 · Issue #579 · Ikaros-521/AI-Vtuber · GitHub

 补充

补充板块提供了对项目接入的第三方技术或应用的详细说明。如果您需要与第三方应用进行对接,您可以查阅此板块的内容,并访问第三方官方网站以了解其使用方法。

平台

b站直播监听

方案1 bilibili-api 

需要进行扫描登录或者配置 cookie 等信息,才能稳定监听弹幕。注意!!!请使用小号登录,有封号风险!!!

方案2 blivedm 

注意:如果使用方案2,需要手动克隆官方项目仓库的blivedmsite-packages

  • cookie模式下,不配置cookie,获取不到完整用户名。自行选择配置。
  • 开放平台模式下,请前往 开放平台: https://open-live.bilibili.com/ 注册成为开发者,“直播创作者服务中心” 创建项目,获取 项目ID 、 access_key_id 、 access_key_secred
抖音弹幕获取

dy.py 稳定 dy-barrage-grab 

请到此仓库的 releases 下载官方软件包,并仔细阅读官方的使用说明,运行后能在cmd看到弹幕消息的话,即为成功。

dy_old.py 不稳定 douyin-live 

快手弹幕获取
快手方案1

ks.py 新版本 kuaishou_websocket 

使用新版本时需要注意,请使用小号登录,然后在每次用完之后,把 cookie 文件夹下的 123.json 文件删掉!!!用过一次后cookie就异常了,所以需要删了重新登录!!!

另外如果你是自行安装环境,请在安装完依赖后,安装火狐浏览器内核。参考命令: playwright install firefox

如果你是整合包,项目路径打开cmd,然后使用 Miniconda3\python.exe Miniconda3\Scripts\playwright.exe install firefox 进行安装。

ks_old.py 旧版本 kuaishou-live 

快手方案2

视频教程:【AI主播-平台篇】新增 快手方案2,旧方案无法使用问题的临时替换方案,配合油猴脚本使用_哔哩哔哩_bilibili

配合油猴脚本:直播弹幕监听 转发至本地WS服务端,在浏览器直播间页面监听DOM变动,WS返回数据。

浏览器安装油猴插件后,再安装上面的脚本,打开需要监听的直播间后,就会自动监听弹幕,连接WS服务,然后把AI Vtuber运行起来,进行对接。

微信视频号监听

监听程序(不保证安全性,自行斟酌):wxlivespy

设置监听地址为http://127.0.0.1:8082/wxlive,开播!开始监听,扫描登录直播的微信号。webui修改平台为微信视频号,运行即可。

如果希望看到运行日志,可以自己下载项目部署运行。

斗鱼直播监听

借鉴 Live-Barrage 

YouTube直播监听

依赖库:pytchat

修改平台后,配置直播间号即可,如https://www.youtube.com/watch?v=P5wlxQgYhMY的直播间号就是P5wlxQgYhMY

twitch直播监听

接口源自官方接口: irc.chat.twitch.tv

使用时需要配置token、用户名、http代理等

其中token获取方式,通过访问Twitch Chat Password Generator,登录twitch账号授权后即可获取返回的token:oauth:xxxxx

!!!注意:如果你的token和你监听的直播间是同一个账号,那会自动过滤你自己发送的弹幕!!!

TikTok

视频教程:BV1GU421o7Wq

聊天模式
百度

新用户+实名认证后有半年的免费额度可以使用。

申请地址:console.bce.baidu.com/ai/#/ai/speech/overview/index 

详细教程

image

image

image

image

image

FASTER_WHISPER

安装pytorch ,自行适配版本,参考安装命令:pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

录音完后,识别会自动下载模型,模型默认存放在models文件夹,可以自行手动下载补充。

如果在使用时出现下载过模型但第一次运行仍要连接huggingface的情况,可以指定模型路径为本地model.bin的路径,参考:./models/models--Systran--faster-whisper-large-v3/snapshots/edaa852ec7e145841d8ffdb056a99866b5f0a478 ,则这个相对路径下有对应的model.bin文件,你的临时文件名不一样,自己找一下。

LLM

ChatGPT

官网 chat.openai.com/chat 

openai 后台 platform.openai.com 

新建 API KEY platform.openai.com/account/api-keys 

查看账号额度 platform.openai.com/account/usage 

官方 API 文档 platform.openai.com/docs/api-reference 

常见报错:点击前往issue仓库查找,直接搜索报错内容,一次不要复制太多报错,不然搜不到,复制关键的报错点就行,比如最后一行

Claude

实现参考 claude-in-slack-api 

API申请方法(内含各个参数的获取方式) claude-api 

slack 官网 slack.com/intl/zh-cn 

添加 claude 到 slack www.anthropic.com/claude-in-slack 

视频教程

完美替代 chatGPT!保姆级 Claude 注册教程及使用上的优点和缺点 

解决现阶段 slack 新建工作区 Claude 不回复 

以下文档转自:claude-api 

授权以及获取USER-TOKEN

网页(登录)后, 进入api配置页面(点我跳转)。

〉》点击 【Create an app】

​ 〉》主页看见Your Apps并弹出窗口【Create an app】 〉》 点击【From scratch】

​ 〉》填写app名称以及选择工作空间(例:name: Bot, workspace: chat) 〉》 点击【Create App】

​ 〉》点击左侧边栏上的【OAuth & Permissions】 〉》 下拉至【Scopes】卡片,在 【User Token Scopes】 项下添加权限,如下:

​ channels:history, channels:read, channels:write, groups:history, groups:read, groups:write,

​ chat:write, im:history, im:write, mpim:history, mpim:write

​ 〉》回到顶部【OAuth Tokens for Your Workspace】栏,点击【Install to Workspace】,然后确认授权即可

至此,获得拥有一定权限的user-token

截屏2023-04-18 09.10.56

截屏2023-04-18 09.14.41

获取 CLAUDE APPID

截屏2023-04-18 08.49.20

Claude2

Claude2-PyAPI 

claude2 官网 claude.ai 

Cookie 获取方式

F12 抓包 XHR ,然后请求头获取 cookie`

ChatGLM

官方仓库:ChatGLM-6B

整合包:【ChatGLM】本地版ChatGPT?6G显存可用!ChatGLM-6B 清华开源模型一键包发布 可更新

视频教程:【AI主播-功能篇】ChatGLM如何接入?上下文记忆~ 不需魔法,本地跑,省钱了喵~

运行 api.py ,然后配置相关信息接入本项目。

参考

if __name__ == '__main__':
    tokenizer = AutoTokenizer.from_pretrained("THUDM\chatglm-6b-int4", trust_remote_code=True)
    model = AutoModel.from_pretrained("THUDM\chatglm-6b-int4", trust_remote_code=True).half().cuda()
    model.eval()
    uvicorn.run(app, host='0.0.0.0', port=8000, workers=1)
CHATGLM3

官方仓库:ChatGLM3

整合包:夸克网盘分享

视频教程:【AI主播-功能篇】接入ChatGLM3,含整合包,看看有没有提升(

运行 1.运行api.bat ,然后配置相关信息接入本项目(聊天类型:ChatGPT/闻达,API地址:http://localhost:8000/v1,模型:chatglm3-6b)。

!!! openai_api.py "参考"

```python
if __name__ == "__main__":
    tokenizer = AutoTokenizer.from_pretrained("THUDM\\chatglm3-6b-int4", trust_remote_code=True)
    model = AutoModel.from_pretrained("THUDM\\chatglm3-6b-int4", trust_remote_code=True).cuda()
    # 多显卡支持,使用下面两行代替上面一行,将num_gpus改为你实际的显卡数量
    # from utils import load_model_on_gpus
    # model = load_model_on_gpus("THUDM\\chatglm3-6b-int4", num_gpus=2)
```
智谱AI

官方:open.bigmodel.cn

api key申请地址:open.bigmodel.cn/usercenter/apikeys

注意,需要在"设置"->"账号设置"中完成实名认证后,才能使用API。新账号默认赠送了18元的免费额度。

langchain-ChatGLM

官方仓库:langchain-ChatGLM

个人提供的整合包:pan.quark.cn/s/8d8904fd4b30

chatglm-6b-int4模型下载(其实这个官方就行,有会员的话网盘快点):pan.quark.cn/s/a483e0c3e5fa

官方模型仓库:huggingface.co/THUDM

配置相关信息,编辑 configs 文件夹下的 model_config.py ,模型路径需要是绝对路径,win的用户路径参考:E:\\langchain-ChatGLM\\THUDM\\chatglm-6b-int4

修改部分参考:

embedding_model_dict = {
    "ernie-tiny": "nghuyong/ernie-3.0-nano-zh",
    "ernie-base": "nghuyong/ernie-3.0-base-zh",
    "text2vec-base": "shibing624/text2vec-base-chinese",
    # 下一行是改的地方
    "text2vec": "E:\\langchain-ChatGLM\\GanymedeNil\\text2vec-large-chinese",
    "text2vec-base-multilingual": "shibing624/text2vec-base-multilingual",
    "text2vec-base-chinese-sentence": "shibing624/text2vec-base-chinese-sentence",
    "text2vec-base-chinese-paraphrase": "shibing624/text2vec-base-chinese-paraphrase",
    "m3e-small": "moka-ai/m3e-small",
    "m3e-base": "moka-ai/m3e-base",
}


llm_model_dict = {
    "chatglm-6b-int4-qe": {
        "name": "chatglm-6b-int4-qe",
        "pretrained_model_name": "THUDM/chatglm-6b-int4-qe",
        "local_model_path": None,
        "provides": "ChatGLMLLMChain"
    },
    "chatglm-6b-int4": {
        "name": "chatglm-6b-int4",
        "pretrained_model_name": "THUDM/chatglm-6b-int4",
        # 下一行是改的地方
        "local_model_path": "E:\\langchain-ChatGLM\\THUDM\\chatglm-6b-int4",
        "provides": "ChatGLMLLMChain"
    },


# LLM 名称 改成你要用的模型name,没有的话会自动下载
LLM_MODEL = "chatglm-6b-int4"

运行 api.py ,然后接入本项目。

chat_with_file

参考:LangChainSummarize

构建本地向量数据库时,如果本地电脑的配置太低,可以使用 faiss_text2vec.ipynb 云端解析向量数据库,拷贝回本地后再使用即可

视频教程:【AI主播】新增langchain_pdf+ChatGPT 和 elevenlabs,优化实现,补了抖音版的chatterbot_哔哩哔哩_bilibili

text-generation-webui

官方仓库:text-generation-webui

懒人包:b站:coyude AI对话 懒人包v1发布 图形化启动界面(oobabooga/text-generation-webui)可用chatglm/rwkv/vicuna

API调用demo:api-examples

视频教程:【AI主播】新增 text-generation-webui 的接入(多模型切换)& langchain合并为chat_with_file & 音频合成逻辑升级_哔哩哔哩_bilibili

讯飞星火
闻达

官方仓库:github.com/wenda-LLM/wenda

整合包下载:pan.quark.cn/s/c4cb08de666e 提取码:4b4R

视频教程:【AI主播-LLM篇】新增 闻达 接入。配合官方启动器使用,共用ChatGPT配置,目前支持rwkv模型_哔哩哔哩_bilibili

接入说明:

启动 RWKV-Runner ,配置配配好,模型搞搞好,然后启动。

如果遇到midi2audio等库缺失的报错,你可以选中整合包的python环境下的python.exe,进行库补装,参考命令 python.exe -m pip midi2audio mido lm_dataformat GPUtil sse_starlette

image

闻达-接入说明

ChatterBot

官方仓库:GitHub - gunthercox/ChatterBot: ChatterBot is a machine learning, conversational dialog engine for creating chat bots

视频教程:【AI主播】接入ChatterBot/ChatGPT 由Edge-TTS/VITS实现语音合成,简单讲解分享_哔哩哔哩_bilibili

ChatterBot 是一个开源的 Python 聊天机器人框架,使用机器学习算法(尤其是自然语言处理、文本语义分析等)来实现基于规则和语境的自动聊天系统。它可以让开发者通过简单的配置和训练,构建出各种类型的聊天机器人,包括问答机器人、任务型机器人、闲聊机器人等。

ChatterBot 的核心思想是:基于历史对话数据,使用机器学习和自然语言处理技术来分析和预测用户输入,然后生成响应。基于这种方法,聊天机器人的反应会更加智能、灵活、接近人类对话的方式。此外,ChatterBot 支持多种存储方式,如 JSON、SQLAlchemy、MongoDB 等,以及多种接口调用方式,如 RESTful API、WebSocket 等,方便开发者在不同场景中进行集成。

总的来说,ChatterBot 是一个非常强大、灵活、易用的聊天机器人框架,帮助开发者快速搭建出个性化、定制化的聊天机器人,从而提升用户体验和服务质量。

Bard

官方:bard.google.com

token获取方式:

访问 bard.google.com,登录账号

键盘F12 打开开发者工具

应用程序 → Cookie → 复制 Cookie 中 __Secure-1PSID 对应的值。

ps:cookie有效期较短

文心一言

官网:yiyan.baidu.com

视频教程:【AI主播-LLM篇】新增 文心一言 的接入。白嫖LLM喜加一_哔哩哔哩_bilibili

  • api

    百度智能云千帆大模型平台:百度智能云千帆大模型平台ModelBuilder

    API文档:ERNIE-3.5-8K - 千帆大模型平台 | 百度智能云文档

    在线服务,购买ERNIE-Bot大模型公有云在线调用服务应用接入 创建应用,获取API KeySecret Key,配置即可。

  • web

    服务端:yiyan-api

    下载yiyan-api源码,根据官方教程部署搭建运行即可。简述过程就是安装Node.js >= 18,然后再源码项目文件夹内运行npm install,最后运行npm start即可。

    cookie 获取方式:

    访问 yiyan.baidu.com,登录账号

    键盘F12 打开开发者工具

    找到源代码或者Sources页,右键debugger左侧行号, 选择 never pause here 或者叫做 永不在此处暂停, 然后再刷新页面

    此时就可以跳过debugger和重定向,然后找到网络或者Network

    再随便发送一个提问,随便找个XHR请求中,查看请求头内的cookie对应的一长串的值,复制粘贴回GUI中保存即可。

通义星尘

官网:xingchen.aliyun.com

视频教程:【AI主播-LLM篇】接入 通义星尘,自定义角色扮演,阿里大语言模型,有一定免费额度_哔哩哔哩_bilibili

进入官网,注册账号,登录,打开接口管理页面,点击API-KEY管理创建密钥,复制密钥,配置对应配置项。

角色ID如何获取? 首页点击创建角色,自己创建去!创建完成后,进入角色聊天页,角色头像边上有个信息,点进去可以看见ID,复制配置即可。

当然,还没完,现在官方还在内测,所以你创建了密钥还不能用,需要联系官方开通调用权限。联系方式见 使用文档-服务支持

千帆大模型
第三方库
官方库(有版本冲突,暂不启用)

接入库:bce-qianfan-sdk

使用文档:bce-qianfan-sdk#readme

在使用千帆 SDK 之前,用户需要 百度智能云控制台 - 安全认证 页面获取 Access Key 与 Secret Key,并在 千帆控制台 中创建应用,选择需要启用的服务,具体流程参见平台 说明文档。在获得了 Access Key 与 Secret Key 后,配置好即可开始使用。

Gemini

官方平台:makersuite.google.com/app

前往 makersuite.google.com/app/apikey 创建一个API KEY,配置到项目中即可使用啦~(记得开魔法配置代理!)

视频教程:【AI主播-LLM篇】接入 Gemini 谷歌双子座!在线免费白嫖,“碾压”GPT4,这不试试?!_哔哩哔哩_bilibili

Kimi Chat

视频教程:【AI主播-LLM篇】对接 Kimi Chat,超长上下文,20万字记忆,你就噶噶造吧(_哔哩哔哩_bilibili

Kimi官网:Kimi.ai - 帮你看更大的世界

API申请:Moonshot AI - 开放平台

使用:
1. 大语言模型选择:ChatGPT 2. 配置 API地址:https://api.moonshot.cn/v1
API密钥:上面申请的密钥
模型:moonshot-v1-8k

QAnything

视频教程:【AI主播-LLM篇】接入 QAnything,知识库问答系统,知识库搜索更加丝滑,效果感觉还不错,值得一试_哔哩哔哩_bilibili

官方仓库:GitHub - netease-youdao/QAnything: Question and Answer based on Anything.

在线

在线官网:QAnything

登录官方平台,完成实名认证获得免费额度,创建应用,获取应用ID和密钥:有道智云控制台

本地

部署:Windows部署配合CUDA驱动、WSL2、docker,完成。主要坑点在docker加载cuda相关库上。根据官方仓库的run.sh脚本运行即可,具体报错参考issue。

参考教程:
【2023最新版】Win11: WSL(Ubuntu22.04)使用docker远程容器教程(Windows的Docker Desktop下载安装、迁移到非系统盘、配置国内镜像源、设置 WSL2)
Windows安装网易开源QAnything打造智能客服系统

通义千问

官网:qianwen.aliyun.com

API类型

视频教程:【AI主播-LLM篇】对接 通义千问 在线API,恢复web白嫖版,支持联网搜索,max模型官方限时免费_哔哩哔哩_bilibili

API文档:如何快速开始通义千问_模型服务灵积(DashScope)-阿里云帮助中心
申请API KEY 文档(文档教程详细,我就不再赘述了):如何开通DashScope并创建API-KEY_模型服务灵积(DashScope)-阿里云帮助中心

WEB类型

视频教程:【AI主播-LLM篇】对接 通义千问 web在线白嫖_哔哩哔哩_bilibili

依赖库:revTongYi

cookie 获取方式:
1. 安装 ChromeEdge 或 Firefox 上的Cookies Editor插件 2. 前往 https://tongyi.aliyun.com/chat 并登录 3. 打开此插件,点击 Export -> Export as JSON,将复制的Cookies内容保存到文件cookie文件夹下的tongyi.json

ps:cookie有效期估计在6小时左右。

FastGPT
在线

官方:文档 | FastGPT

image

image

koboldcpp

视频教程:【AI主播-LLM篇】对接 koboldcpp,简单运行各种 GGML 和 GGUF 模型_哔哩哔哩_bilibili

官方仓库:GitHub - LostRuins/koboldcpp: A simple one-file way to run various GGML and GGUF models with KoboldAI's UI

exe程序下载(也可以去整合包网盘中下载):Releases · LostRuins/koboldcpp · GitHub

AnythingLLM

视频教程:【AI主播-LLM篇】Ollama + AnythingLLM,有手就行本地知识库+LLM 组合拳,小白福音_哔哩哔哩_bilibili

官网:AnythingLLM | The ultimate AI business intelligence tool

下载安装,然后根据官方提示选择对接的LLM、向量数据库等,创建工作区(有知识库检索需求的请在工作区添加文档本导入到需要的工作区内)。

左下角设置图标进去,到API KEYS创建密钥,复制密钥,配置到项目中,保存配置,读取工作区列表,然后选择你要使用的工作区,保存运行使用即可。

TTS

elevenlabs

elevenlabs官网

官方文档

不注册账号也可以使用,不过应该是有限制的(具体多少未知)。免费账号拥有每月1万字的额度。

genshinvoice.top

在线体验官网

官方GitHub仓库,内含api使用说明

官方视频讲解:【在线合成&效果优化】基于VITS的米哈游全角色语音合成现已发布

tts.ai-lab.top

在线体验官网: 原神/星穹铁道语音合成 - AI-Hobbyist

注册账号,登录,然后在在线合成页面,按下键盘F12打开开发者工具,在选择Network网络,随便合成一个音频,然后找到vits的一个请求,点进去,点击负载,找到appidtoken,配置即可。

VITS(vits-simple-api)

emotional-vits官方仓库:emotional-vits

接入API:vits-simple-api

vits-simple-api整合包下载:github.com/Artrajz/vits-simple-api/releases

个人提供的已训练好的模型:github , 迅雷云盘

视频教程:【AI主播-TTS篇】新增 纯 VITS 接入,配合vits-simple-api,支持情感控制,语速调控 , 【AI主播-TTS篇】新增 bert-vits2 的接入,配合vits-simple-api食用,强有力的中文TTS让你到达新高度~

如何白嫖huggingface上的vits-simple-api? 只需要开启魔法,将API地址修改为项目提示的接口地址即可,例如:https://artrajz-vits-simple-api.hf.space

vits-simple-api配置,修改 config.py ,参考配置如下,路径为追加的相对模型路径和配置文件路径(注意,新版本的变动,配置改到config.yml了,所以你需要直接改yml或者删除yml,修改py,然后重启):

# Fill in the model path here
MODEL_LIST = [
    # VITS
    [ABS_PATH + "/Model/ikaros/G_95500.pth", ABS_PATH + "/Model/ikaros/config.json"],
    # Bert-VITS2
    [ABS_PATH + "/bert_vits2/G_0.pth", ABS_PATH + "/bert_vits2/config.json"],

如果使用 bert_vits2 ,需要注意 vits-simple-api\bert_vits2\bert\chinese-roberta-wwm-ext-large 路径下 flax_model.msgpack 等模型文件是否缺失,如果缺失,可以从隔壁 bert_vits2 整合包中拷贝进来 或者 从huggingface下载:hfl/chinese-roberta-wwm-ext-large 。另外模型需要存放在 bert_vits2 目录里面。

相关模型备份:夸克网盘

另外如果运行闪退、报错

Traceback (most recent call last):
  File "E:\vits-simple-api\app.py", line 49, in <module>
    tts = merge_model(app.config["MODEL_LIST"])
  File "E:\vits-simple-api\utils\merge.py", line 117, in merge_model
    for id, name in enumerate(obj.get_speakers()):
  File "E:\vits-simple-api\utils\utils.py", line 29, in __getitem__
    return getattr(self, key)
TypeError: getattr(): attribute name must be string

需要修改 utils\merge.py 116行左右。

for id, (key, name) in enumerate(obj.get_speakers().items()):
# for id, name in enumerate(obj.get_speakers()):

如果在使用bert-vits2时,报错:

error, ref_enc.convs.0.bias is not in the checkpoint
error, ref_enc.convs.0.weight_g is not in the checkpoint
......

解决方案参考:issues/311

改 bert_vits2/models.py 中第646行 if n_speakers > 1: 修改为 if n_speakers >= 1:

VITS-fast-fine-tuning

官方仓库:VITS-fast-fine-tuning

官方推理包:inference-webui-v1.1

个人提供的已训练好的模型:点我跳转

视频教程:【AI语音合成-数据集篇#00】模型使用简单讲解,手把手演示 ,【AI主播-功能篇】TTS语音合成 VITS-Fast怎么使用?为什么没有合成语音?VITS不行吗?模型兼容吗?

训练用整合包(原作者整合包备份):pan.quark.cn/s/da52e78983da

整合包视频教程:AI声音克隆又进化了,10分钟学会声音克隆!一键启动包发布!

整合包视频教程2:【VITS一键包】本地训练独属于你的AI嘴替?训练部署AI语音合成教程

VALL-E-X

官方仓库:VALL-E-X

个人提供的已训练好的preset预设:点我跳转

官方视频讲解:仅需3秒音频实现声音克隆!我开源了微软的最新语音合成模型VALL-E X

视频教程:【AI主播-功能篇】接入 VALL-E-X(整合包附赠),进行TTS,3秒声音克隆,“好用”喵hhh

整合包下载:pan.quark.cn/s/b817e285ab41

OpenVoice

官方仓库:OpenVoice

视频教程:OpenVoice 整合包 | 一句话快速克隆?英文可调语气?效果实测【TTS】

整合包下载:迅雷云盘夸克网盘

启动webui后就可以对接了,适配gradio监听端口即可。

GPT-SoVITS

官方仓库:GPT-SoVITS

整合包下载:夸克网盘分享迅雷云盘

视频教程:BV1CJ4m1b7pR

天降之物模型分享:Releases · Ikaros-521/GPT-SoVITS · GitHub

运行webui后,启动TTS推理,然后适配配置项即可,注意参考音频路径还有ws的端口即可,别的配置问题不大。

clone-voice

官方仓库:clone-voice

整合包下载:夸克网盘分享 ,迅雷云盘

视频教程:BV17z421d7T9

Azure TTS

视频教程:【AI主播-TTS篇】接入 Azure TTS,微软官方商用语音合成,随便造(

官网:https://azure.microsoft.com/zh-cn/products/ai-services/text-to-speech/

注册账号,领取一年免费试用额度,创建 语音转文本服务,获取 区域 和 密钥,配置后进行使用。

fish-speech

官方仓库:fish-speech

官方文档:推理 - Fish Speech

变声

DDSP-SVC

官方仓库:DDSP-SVC

个人提供的已训练好的模型:点我跳转

羽毛佬视频教程:【AI翻唱/变声/整合包】有张N卡就能跑!媲美So-VITS却不吃配置,全新的DDSP-SVC 3.0训练/推理教程

视频教程:【AI主播-功能篇】新增 DDSP-SVC 接入。变声选项再加一,多种选择总有一个是适合你的(

修改 flask_api.py 最后几行中的模型路径,其他配置自行调整,另外需要注意! enable_spk_id_cover 改为 False ,即可接入。

# config和模型得同一目录。 这是我自己训练的DDSP模型,新鲜出炉
checkpoint_path = "exp/combsub-test/model_68000.pt"
# 是否使用预训练的基于声码器的增强器增强输出,但对硬件要求更高。
use_vocoder_based_enhancer = True
# 结合增强器使用,0为正常音域范围(最高G5)内的高音频质量,大于0则可以防止超高音破音
enhancer_adaptive_key = 0
# f0提取器,有parselmouth, dio, harvest, crepe
select_pitch_extractor = 'crepe'
# f0范围限制(Hz)
limit_f0_min = 50
limit_f0_max = 1100
# 音量响应阈值(dB)
threhold = -60
# 默认说话人。
spk_id = 1
# 是否优先使用默认说话人覆盖vst传入的参数,改为False,不要覆盖!!!
enable_spk_id_cover = False
so-vits-svc

官方仓库:so-vits-svc

个人提供的已训练好的模型:点我跳转

视频教程:【AI歌姬】so-vits-svc 简单使用讲解 + 伊卡洛斯 模型开源 , 【AI主播-功能篇】如何接入so-vits-svc?用什么版本?4.1版为什么会报错?运行哪个程序?在哪下载?

修改 flask_api_full_song.py 最后几行中的模型路径,运行,配置相关信息即可接入。

if __name__ == '__main__':
    model_name = "logs/44k/ikaros_G_54600.pth" # 你的模型地址
    config_name = "configs/ikaros_v1.json"  # 你的config地址
    svc_model = infer_tool.Svc(model_name, config_name)
    app.run(port=1145, host="0.0.0.0", debug=False, threaded=False)

注意!!!如果你是 4.1 版本的整合包,还需要修改 flask_api_full_song.py 的38行左右:

out_audio, out_sr = svc_model.infer(spk, tran, raw_path)

out_audio, out_sr, n_frames = svc_model.infer(spk, tran, raw_path)

虚拟身体

Live2D

源自:CyberWaifu

官方免费模型下载:releases/tag/live2d

官网:www.live2d.com/zh-CHS

第三方软件 Vtube Studio ,配置教程:【AI主播】虚拟人部分方案#1 基于Vtube Studio的口型驱动

配合VB虚拟声卡时,如果想要让扬声器也可以听到输出的音频,可以通过 侦听 来实现,配置方法如下:

image

NVIDIA Omniverse Audio2Face

NVIDIA Omniverse下载:www.nvidia.com/en-us/omniverse/download/

Character Creator 4下载:www.reallusion.com/character-creator/download.html

Epic下载:store.epicgames.com/zh-CN/

参考教程:

【AI主播】Audio2Face + UE5,轻松实现 数字人 口型同步,主打一个简单,就是配置要求高了点

【Omniverse教程】【Audio2Face】1-仅需一个音频来源即可生成表情丰富的面部动画,也支持实时录音

玩转Omniverse | Reallusion Character Creator:生成角色

玩转Omniverse | Reallusion Character Creator:将角色 USD 文件导入NVIDIA Omniverse

零代码让UE Metahuman说话的方法(使用omniverse audio2face串流至UE)

P6-UE5角色资产导入与说明!

xuniren

xuniren官方仓库:GitHub - waityousea/xuniren

项目对接推荐使用我的改版:GitHub - Ikaros-521/xuniren: 虚拟人说话头生成(NeRF虚拟人实时驱动) 含API

半整合包(需要自行补充环境):夸克网盘分享, 需要注意的是这个项目环境十分难搭建,而且很多都需要自行编译,所以我编译的版本不一定适用于你的系统,那么你就需要自己重新编译安装了,那就是一件非常痛苦的事情,注意我的说明自行闭坑吧。

使用:整合包用户启动我提供的http_api运行.bat脚本,普通用户自行启动http_api.py即可,看到服务正常监听即可。那么此时我们的AI Vtuber也需要配置对应的虚拟身体配置,然后运行即可。

视频教程:BV1uB4y1d7o6

EasyAIVtuber

EasyAIVtuber官方仓库:GitHub - Ksuriuri/EasyAIVtuber: Simply animate your 2D waifu.

参考官方文档完成部署后启动,虚拟身体选择“EasyAIVtuber”,保存运行即可对接使用。

数字人视频播放器

视频教程:【AI主播-虚拟身体篇】对接 Easy-Wav2Lip(数字人视频播放器) 实现真人数字人驱动【AI主播-虚拟身体篇】对接Sadtalker、GeneFace++,数字人视频播放器-v0.1.2 升级,含整合包_哔哩哔哩_bilibili

数字人视频播放器 官方仓库:GitHub - Ikaros-521/digital_human_video_player: 带HTTP API的数字人视频播放器,使用gradio api对接Easy-Wav2Lip、Sadtalker、GeneFacePlusPlus

参考官方文档完成部署后启动,虚拟身体选择“数字人视频播放器”,保存运行即可对接使用。

图像识别

gemini

【AI主播-图像识别篇】新增 摄像头截图功能,可以进行现实互动,未来会继续互动方式:【AI主播-图像识别篇】新增 摄像头截图功能,可以进行现实互动,未来会继续互动方式_哔哩哔哩_bilibili

【AI主播-图像识别篇】对接 Gemini-Pro-Vision,实时画面识别讲解,可用于游戏讲解等应用场景:【AI主播-图像识别篇】对接 Gemini-Pro-Vision,实时画面识别讲解,可用于游戏讲解等应用场景_哔哩哔哩_bilibili

翻译

百度翻译

官方文档:百度翻译开放平台

根据文档提示,注册开发者并完整认证后,申请“通用文本翻译”服务,然后在百度翻译开放平台,获取APP ID密钥,配置上即可使用。

其他

Stable Diffusion

官方仓库:stable-diffusion-webui

整合包:【AI绘画】Stable Diffusion整合包v4.2发布!全新加速 解压即用 防爆显存 三分钟入门AI绘画 ☆可更新 ☆训练 ☆汉化

启动API模式,填写相关配置即可接入。

视频教程:BV1tV411u79T

web字幕打印机

项目地址:captions_printer

具体使用参考项目文档即可。

视频教程:BV13h4y1e7z8

按键映射

pyautogui官方文档:传送门,官方对按键名的定义

audio player(音频播放器)

项目地址:audio_player

具体使用参考项目文档即可。

🀅开发&项目相关

简易流程图

image

image

详情展开

UI设计

NiceGUI

webui使用的NiceGUI框架搭建,官方文档:NiceGUI Documentation

PyQt5

打开QT设计师~o( =∩ω∩= )m pyqt5-tools designer

生成UI代码 pyuic5 -o UI_main.py ui\main.ui

对UI做改动时,加入新的配置,一般需要修改 init_config 和 save 部分,新配置的读取和写入部分。

源码开发

新增LLM

1.utils/gpt_model 下新建 新llm的py文件,内部封装类,实现通用函数 get_resp(prompt) ,传入提问,返回回答。

2.utils/gpt_model 下新增下模型相关的配置内容,照葫芦画瓢 gpt.py

3.根据相关传参,给 config.json 添加对应的配置。

4.utils下,修改 my_handle.py , __init__ 初始化中相关配置读取,加载模型等。

5.utils下,修改 my_handle.py , comment_handle 中新增对应LLM选中时,所做的逻辑处理。

6.打开QT设计师,修改 ui\main.ui 。为新的LLM设计位置和相应控件,可以参考其他LLM的设计。

7.修改 main.py ,实现LLM的UI显示部分以及数据读取和配置保存。另外需要注意新增的LLM会影响到其他配置项的内容,以及显隐关系。需要修改的部分如下:

  • init_config()
  • init_ui()
  • oncomboBox_chat_type_IndexChanged()

打包懒人包

1、直接在懒人包中安装miniconda

2、激活base虚拟环境(使用写好的激活脚本)

3、安装依赖

pip install -r requirements_bilibili.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install -r requirements_dy.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install -r requirements_ks.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install -r requirements_douyu.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

4、安装chatterbot(可选)

pip install spacy SQLAlchemy==1.3.24 -i https://pypi.tuna.tsinghua.edu.cn/simple

前提是你在当前目录下有clone chatterbot的项目(自行调整路径关系)

python setup.py install

MD目录自动生成

doctoc ,在本地git存储库中生成降价文件的目录。链接通过命令行标志兼容github或其他网站生成的锚。

安装

node.js环境

进入包含本地git项目的目录,键入: npm install -g doctoc

使用

在 README.md 中,找个生成目录位置,写入如下代码,确认生成位置:

<!-- START doctoc -->
<!-- END doctoc -->

cmd输入命令即可:doctoc /path/to/file

例如:doctoc README.md

文档生成

基于编写 mkdocs-material,官方文档:mkdocs-material

安装 pip install mkdocs-material

构建静态网站 mkdocs build

文档本地实时预览 mkdocs serve

文档生成(简易旧版)

依赖 node.js 环境。

安装docsify-cli工具

cmd运行 npm i docsify-cli -g

初始化项目

项目根目录cmd运行 docsify init .

启动服务

项目根目录cmd运行 docsify serve .

测试

  • GUI运行配置完后,运行,监听无人直播间半天,时间到后发送命令尝试触发应用(复读机),正常监听并合成音频。
  • 监听1秒2弹幕的直播间,复读机配合vits-fast做语音合成,持续工作30分钟,正常监听并合成音频。

🖹待办事项

  • chatglm拥有记忆功能
  • 抖音关注事件可以触发关注感谢话术
  • 本地问答文本库支持动态变量功能
  • 兼容bert vits2
  • LLM输出后,后置的过滤(双重过滤)
  • bark-gui的接入
  • 快手平台的重新兼容
  • 用户入场、投食感谢(自定义 文案)
  • 弹幕跳过机制(时间段内丢弃)
  • 点歌后的弹幕触发问题(如:只取最新的几个)—— 使用弹幕丢弃机制
  • 弹幕丢失bug修复(很可能是线程sleep造成的)& b站弹幕库版本更新
  • 文案页支持动态加载文案
  • 支持关闭聊天(LLM等)
  • langchain-chatglm的接入
  • chat_with_file在匹配不到结果时继续使用LLM进行回答——通过prompt实现
  • 文案字幕显示
  • 礼物答谢combo情况下的重复答谢问题
  • 懒人包优化
  • 接入更多的LLM(new bing等)
  • 接入更多的TTS方案
  • RVC的接入
  • 其他直播平台的适配(拼多多等)
  • live2d的嘴型、动作匹配
  • 接入更多的2/3D模型软件(Unity、UE5等)
  • 屏蔽词升级。如:可以根据屏蔽词库转拼音的二重屏蔽;接入第三方屏蔽词API等
  • 本机语音直接交流模式(本地版本whisper,其他方式)
  • 本地的用户拉黑机制
  • 礼物互动机制(跳舞,唱歌)
  • wav2lip方案尝试(带货方面)
  • 直播中可以由弹幕进行动态换装
  • TTS合成时,语句切分算法有待优化
  • 压力测试
  • 文案拒绝打断机制
  • Edge-TTS在合成音频时会出现合成成功但是系统找不到文件的bug
  • 支持礼物或者其他形式的键盘映射
  • webui开发
  • 闲时任务功能(适用于自言自语)
  • 输出音频自定义输出设备
  • 独立TTS功能
  • 独立文案合成功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值