专栏名称: GitHubStore
分享有意思的开源项目
目录
相关文章推荐
爱可可-爱生活  ·  【[111星]graphrag-practi ... ·  13 小时前  
爱可可-爱生活  ·  【[261星] ... ·  昨天  
德州晚报  ·  山东3名正厅级干部,联动调整→ ·  昨天  
鲁中晨报  ·  20℃!淄博火箭式升温,但很快要反转 ·  2 天前  
鲁中晨报  ·  省级名单公示!淄博5案例入选 ·  3 天前  
51好读  ›  专栏  ›  GitHubStore

用语音和虚拟主播任意交流! 可本地部署!

GitHubStore  · 公众号  ·  · 2024-08-19 11:36

正文

项目简介

开放-LLM-VTuber 允许您通过语音(无需动手)与任何 LLM 进行交谈,本地使用 Live2D 说话表情。LLM 推理后端、语音识别和语音合成器都设计为可互换。此项目可以配置在 macOS、Linux 和 Windows 上离线运行。

MemGPT 的长期记忆可以配置为实现持续聊天、无限*上下文长度和外部数据源。

这个项目最初是尝试使用开源替代品重新创建闭源 AI 虚拟歌手 neuro-sama ,这些开源替代品可以在除了 Windows 以外的平台上离线运行。

演示视频使用了 llama3(Q4_0)与 Ollama、edgeTTS 和 WhisperCPP 运行小型模型的核心 ML 版本。


项目优势

  • 它在 macOS 上运行

    • 许多现有的解决方案使用 VTube Studio 显示 Live2D 模型,并通过将桌面内部音频路由到 VTube Studio 并用其控制嘴唇来实现唇同步。然而,在 macOS 上,没有简单的方法让 VTuber Studio 监听桌面内部音频。

    • 许多现有的解决方案在 macOS 上缺乏对 GPU 加速的支持,这使得它们在 Mac 上运行缓慢。

  • 该项目支持 MemGPT 进行持续对话。聊天机器人会记住你所说的话。

  • 如果您希望,您的计算机上不会有任何数据离开

    • 您可以选择本地 LLM/语音识别/语音合成解决方案,所有操作都将在离线状态下进行。已经在 macOS 上进行了测试。


基本目标

  • 通过语音与LLM聊天

  • 选择你自己的LLM后端

  • 选择您自己的语音识别与文本转语音服务提供商

  • 长期记忆

  • Live2D 前端


目标平台

  • macOS

  • Windows

  • Linux



实现的功能

  • 与LLM通过语音交谈。离线。

  • 聊天历史上的 RAG(暂时移除)


当前支持LLM后端

  • 任何兼容 OpenAI-API 的后端,如 Ollama、Groq、LM Studio、OpenAI 等。

  • MemGPT(需要设置)


当前支持的语音识别后端

  • FunASR,支持 SenseVoiceSmall 和许多其他模型。(本地当前需要网络连接加载。计算在本地进行)

  • Faster-Whisper (Local)

  • Whisper-CPP 使用 Python 绑定 pywhispercpp(本地,mac GPU 加速可以配置)

  • Whisper (local)

  • Azure 语音识别(需要 API 密钥)

  • 服务器终端中的麦克风将默认使用。您可以更改设置 MIC_IN_BROWSER conf.yaml 中,将麦克风(和语音激活检测)移动到浏览器(目前会增加延迟)。如果您在不同的机器上运行后端或在虚拟机或 Docker 内部运行,您可能希望在客户端(浏览器)上使用麦克风,而不是在服务器上使用。


当前支持的文本转语音后端

  • py3-tts(本地,它使用您的系统的默认 TTS 引擎)

  • 树皮(本地,非常消耗资源)

  • 温馨语音(本地,非常消耗资源)

  • 边缘 TTS(在线,无需 API 密钥)

  • Azure 文字转语音(在线,需要 API 密钥)


快速文本合成

  • 一收到句子就合成,因此无需等待整个LLM响应。

  • 生产者-消费者模型与多线程:音频将在后台持续合成。每当新音频准备就绪时,它们将依次播放。音频播放器不会阻塞音频合成器。


Live2D 说话脸

  • 使用 config.yaml 更改 Live2D 模型(模型需要在 model_dict.json 中列出)

  • 加载本地 Live2D 模型。查看 doc/live2d.md 获取文档。

  • 在LLM响应中使用表情关键词控制面部表情,因此无需额外的情感检测模型。表情关键词自动加载到系统提示中,并从语音合成输出中排除。


live2d 技术细节

  • 使用 guansss/pixi-live2d-display 在浏览器中显示 live2d 模型

  • 使用 WebSocket 在服务器和前端之间控制面部表情和说话状态

  • 所有所需包均在当地可用,因此前端可以离线工作。

  • 您可以从 URL 或存储在 live2d-models 目录中的本地文件加载 live2d 模型。默认的 shizuku-local 是本地存储的,可以离线使用。如果模型_dict.json 中模型的 URL 属性是一个 URL 而不是以 /live2d-models 开头的路径,那么每当前端打开时,都需要从指定的 URL 获取这些模型。请参阅 doc/live2d.md 以了解如何从本地加载您的 live2D 模型的文档。

  • 运行 server.py 以启动 WebSocket 通信服务器,在 ./static 文件夹中的 index.html 打开前端,运行 launch.py main.py 以启动后端用于LLM/ASR/TTS 处理。


安装与使用

新安装指南正在这里创建


在您的计算机上安装 FFmpeg。

克隆这个仓库。

您需要准备好 Ollama 或任何其他与 OpenAI-API 兼容的后端,并且使其运行。如果您想将 MemGPT 用作后端,请滚动到 MemGPT 部分。

选择并准备LLM。在项目目录的 conf.yaml 中编辑 BASE_URL 和 MODEL。

这个项目使用 Python 3.10.13 开发。我强烈建议为这个项目创建一个类似于 conda 的虚拟 Python 环境。

在终端中运行以下内容以安装依赖项。

pip install -r requirements.txt # Run this in the project directory# Install Speech recognition dependencies and text-to-speech dependencies according to the instructions below

该项目默认启动音频交互模式,这意味着你可以通过语音与LLM进行对话,而LLM会通过语音回复你。







请到「今天看啥」查看全文