-
-
Notifications
You must be signed in to change notification settings - Fork 110
安装指南 ‐ 中文
本文由 claude 3.5 sonnet 翻译成中文,因为我懒得写了...
这是 Open-LLM-VTuber,一个允许您通过语音(免提)在本地与任何 LLM 对话(并打断)的应用程序,具有 Live2D 人物面部表情。
⚠️ 本项目仍处于早期阶段,目前正在积极开发中。功能不稳定,代码混乱,且会发生重大变更。当前阶段的主要目标是使用易于集成的技术构建最小可行原型。
⚠️ 如果您想在服务器上运行此程序并在笔记本电脑上远程访问,前端的麦克风只能在安全环境下启动(即 https 或 localhost)。参见 MDN Web Doc。因此,您可能需要通过反向代理配置 https,或在本地启动前端并通过 websocket 连接到服务器(未测试)。用浏览器打开static/index.html
并在页面上设置 ws 地址。
我正在开发一个带有推荐配置的安装脚本来简化这个过程,但目前尚未完成。
需要在您的计算机上安装 ffmpeg
。
Python 版本 >=3.10, < 3.13 (目前Python 3.13可能存在依赖安装问题。如果遇到这种情况,请使用3.12或更低版本,应该可以解决)
所有设置都在 conf.yaml
中。您可以(而且可能会)在那里做很多事情,该文件中也有注释解释这些设置的含义。
- 克隆仓库
- [可选] 为该项目创建虚拟环境,如 conda 或 venv
- 使用
pip install -r requirements.txt
安装基本依赖 - 设置 LLM
- 设置您想要的 ASR(自动语音识别)
- 设置您想要的 TTS(文本转语音)
- 运行程序
在您的计算机中找个合适的位置,克隆仓库或下载最新版本。
git clone https://github.com/t41372/Open-LLM-VTuber
很好。现在如果您还没有给这个项目点星标的话,请去 github 上点个星,否则您会 &&Eujehruedjhnoeire4939#pE$
这是可选的,但我强烈建议您为这个项目创建一个虚拟环境。
本项目使用 Python 3.10.13
开发。Python 3.11 已经测试过。其他一些版本可能也能工作,但未经测试。
Python 虚拟环境(venv)是一个包含 Python 解释器、第三方库和其他脚本的文件夹。虚拟环境与其他虚拟环境是隔离的,所以依赖项的更改不会影响其他虚拟环境或系统范围的库。
-- dataquest
我强烈建议您为这个项目使用虚拟环境的原因是因为这会使您的生活轻松很多。这个项目使用了很多依赖项,依赖冲突经常发生。使用虚拟环境来隔离它们可以保住您的头发。
如果您不知道什么是 conda,我们可以使用 venv
,它是 Python 内置的,而且非常好用。
# 创建虚拟环境
python -m venv open-llm-vtuber
要激活虚拟环境,运行以下命令:
在 Windows 上
open-llm-vtuber\Scripts\activate
在 macOS/Linux 上
source open-llm-vtuber/bin/activate
如果您知道什么是 conda,那么您就知道该怎么做。这是我个人使用的命令。如果您不知道什么是 conda,我建议您使用 venv
。
# 在项目目录中创建 conda 环境
conda create -p ./.conda python="3.10.4"
# 激活这个环境
conda activate ./.conda
在项目根目录下运行以下命令来安装依赖项。
pip install -r requirements.txt # 在项目目录中运行此命令
您需要有 Ollama 或任何其他兼容 OpenAI-API 的后端准备就绪并运行。您可以使用 llama.cpp、vLLM、LM Studio、groq、OpenAI 等等。
如果您想使用 MemGPT 的长期记忆功能,您需要将 MemGPT 设置为您的 LLM 后端,而不是上面提到的那些。查看 MemGPT 部分了解更多信息(除非您已经知道如何运行 MemGPT,否则这并不容易,所以我建议您先从 ollama 或其他 OpenAI 兼容的 LLM 后端开始)。
准备好您选择的 LLM 并让 LLM 推理服务器(如 ollama)运行起来。
在 conf.yaml
文件中,在 ollama
选项下,您可以编辑所有 OpenAI 兼容的 LLM 推理后端的配置。
这是 conf.yaml
中的设置:
# ============== LLM 后端设置 ===================
# LLM 提供者。选择 "ollama" 或 "memgpt"(或用于调试的 "fakellm")
# "ollama" 用于任何 OpenAI 兼容后端。"memgpt" 需要设置
LLM_PROVIDER: "ollama"
# Ollama 和 OpenAI 兼容推理后端
ollama:
BASE_URL: "http://localhost:11434/v1"
LLM_API_KEY: "somethingelse"
ORGANIZATION_ID: "org_eternity"
PROJECT_ID: "project_glass"
## LLM 名称
MODEL: "llama3.1:latest"
# 系统提示在此文件的最后
VERBOSE: False
如果您不使用 LLM_API_KEY
、ORGANIZATION_ID
和 PROJECT_ID
,就保持原样即可。
如果您现在非常兴奋,想要在没有语音交互的情况下尝试这个项目,您可以在 conf.yaml
中将 LIVE2D
、VOICE_INPUT_ON
和 TTS_ON
设置为 False
,这样就可以通过输入而不是语音与 LLM 对话,也没有 Live2D。记得稍后再把它们打开。
本项目支持多种语音识别。查看 ASR 部分了解安装说明。
总的来说,以下是设置语音识别的步骤:
- 安装依赖项
- 在
conf.yaml
中编辑您使用的 ASR 的配置。如果支持的话,您通常可以在那里更改语言或模型。 - 将
ASR_MODEL
设置为您选择的 ASR。
截至写作时,本项目支持以下 ASR:
-
FunASR,支持 SenseVoiceSmall 和其他一些模型。(
本地目前需要网络连接来加载。本地计算) - Faster-Whisper(本地)
- Whisper-CPP 使用 Python 绑定 pywhispercpp(本地,mac GPU 加速可配置)
- Whisper(本地)
- Azure Speech Recognition(需要 API 密钥)
如果您不在意它在启动时连接到互联网(将来会修复),我推荐使用带有 SenseVoiceSmall 的 FunASR。它非常快,准确率也相当好。
如果您想要完全离线工作的东西,如果您有 Nvidia GPU,我推荐 Faster-Whisper,如果您使用 macOS,推荐使用带有 coreML 加速的 Whisper-CPP。
如果您碰巧有 API 密钥,您也可以使用 Azure Speech Recognition。
⚠️ 如果您想在容器内或远程机器上运行此应用程序(服务器),并使用本地设备访问 webui,您需要在conf.yaml
中将MIC_IN_BROWSER
设置为 True。还有更多需要考虑的事情,它们在本页面的顶部。
查看 TTS 部分了解设置您想要的 TTS 的说明。
总的来说,以下是设置文本转语音服务的步骤:
- 安装依赖项
- 在
conf.yaml
中编辑您使用的 TTS 的配置。如果支持的话,您通常可以在那里更改语言或说话者。 - 将
TTS_MODEL
设置为您选择的 TTS。
以下是截至写作时支持的一些 TTS:
- py3-tts(本地,使用您系统的默认 TTS 引擎)
- bark(本地,非常消耗资源)
- CosyVoice(本地,非常消耗资源)
- MeloTTS(本地,快速)
- Edge TTS(在线,不需要 API 密钥)
- Azure Text-to-Speech(在线,需要 API 密钥)
目前,如果您使用 live2D 和上面提到的所有内容,以下是运行程序的步骤:
- 运行
server.py
- 用浏览器打开
localhost:12393
(默认设置,但您可以在 conf.yaml 中更改) -
运行(不再需要)main.py
- 一旦 Live2D 模型加载完成,就可以与 LLM 对话。
如果您只想对话而不想要 Live2D 和浏览器之类的东西,您可以直接运行 main.py
进入命令行模式。
conf.yaml
中一些您可能感兴趣的相关设置:
- 在
LIVE2D
关闭 live2D(和 webui,这样您就不需要 server.py) - 在
VOICE_INPUT_ON
关闭语音识别并开始在终端中输入 - 在
MIC_IN_BROWSER
让麦克风在浏览器而不是终端中监听 - 在
TTS_ON
关闭 TTS - 在
SAY_SENTENCE_SEPARATELY
让 TTS 一次说出所有内容 - 在
PERSONA_CHOICE
和DEFAULT_PERSONA_PROMPT_IN_YAML
更改/编辑人设提示 - 在
HOST
和PORT
更改服务器监听的主机和端口 - 以及
VERBOSE
在您第一次启动时,一些模型将被下载,这可能需要一段时间。