博客未发布好用开源项目精选 TOP10|本地部署与使用全指南
整理:周若琳博客 | 核验日期:2026-10-25 本文精选 10 个博客尚未单独成文的实用开源项目/开源模型,覆盖本地大模型运行、推理引擎、开源大模型、语音克隆、语音识别、数字人口型、实时语音对话、Web UI 与私有知识库 RAG,逐项目给出官方仓库、跳转链接、官方图片、最详细的部署方式与使用方法。
总览
| 序号 | 项目 | 一句话定位 | 许可 | 官方仓库 | 适合场景 |
|---|---|---|---|---|---|
| 01 | Ollama | 一条命令在本地一键运行开源大模型 | MIT | https://github.com/ollama/ollama | 本地对话、API 服务 |
| 02 | llama.cpp | 纯 C/C++ 高效本地 LLM 推理引擎 | MIT | https://github.com/ggml-org/llama.cpp | 低配机器跑 GGUF 模型 |
| 03 | Qwen3 系列 | 阿里开源稠密 + MoE 大模型,本地一键可跑 | Apache-2.0 | https://github.com/QwenLM/Qwen3 | 中文对话/推理 |
| 04 | GPT-SoVITS | 少样本中文语音克隆与语音合成 | MIT | https://github.com/RVC-Boss/GPT-SoVITS | 声音复刻、配音 |
| 05 | faster-whisper | 基于 CTranslate2 的高速语音识别 | MIT | https://github.com/SYSTRAN/faster-whisper | 视频字幕、会议转写 |
| 06 | LiveTalking | 实时交互流式数字人引擎 | Apache-2.0 | https://github.com/lipku/LiveTalking | 数字人直播/客服 |
| 07 | MuseTalk | 腾讯音乐 Lyra Lab 实时口型同步 | MIT | https://github.com/TMElyralab/MuseTalk | 视频口型驱动 |
| 08 | HF speech-to-speech | 本地全链路实时语音对话开源语音智能体 | Apache-2.0 | https://github.com/huggingface/speech-to-speech | 语音对话机器人 |
| 09 | Open WebUI | 自托管 LLM Web 界面(类 ChatGPT) | MIT | https://github.com/open-webui/open-webui | 本地模型图形化聊天 |
| 10 | AnythingLLM | 本地私有知识库 RAG 应用(All-in-One) | MIT | https://github.com/Mintplex-Labs/anything-llm | 私有知识库问答 |
01. Ollama —— 一条命令在本地一键运行开源大模型
适用环境:Windows 10/11 原生、Windows 10/11 + WSL2(Ubuntu 24.04)、带 NVIDIA RTX 3070 8GB / RTX 4090 24GB,或 Linux 云服务器。 信息口径:本章所有命令、路径、环境变量、模型标签与体积均来自 Ollama 官方仓库、官方文档站与官方模型库;核验日期 2026-10-25。
01.1 项目定位与基本信息
| 项目 | 内容 |
|---|---|
| 一句话定位 | 本地运行开源大模型的一体化框架:内置模型拉取、GPU/CPU 自动调度、命令行对话、REST 与 OpenAI 兼容 API,适合个人电脑“开箱即用”。 |
| 开源许可 | MIT License。出处:官方仓库 LICENSE 文件 https://github.com/ollama/ollama/blob/main/LICENSE(原始文件 https://raw.githubusercontent.com/ollama/ollama/main/LICENSE,已实际打开核对,标题为 MIT License)。 |
| 官方 GitHub 仓库 | https://github.com/ollama/ollama |
| 官方文档站 | https://docs.ollama.com —— CLI、Modelfile、API、FAQ、硬件支持、排错等官方说明均在此站。 |
| 官方网站 / 模型库 | https://ollama.com ;可浏览模型目录 https://ollama.com/library |
| 版本信息 | 截至 2026-10-25,官方最新 release 为 v0.40.11(发布于 2026-10-24,来源:https://github.com/ollama/ollama/releases/tag/v0.40.11,经重定向与页面 datetime 核验)。 |
| 官方 SDK | Python https://github.com/ollama/ollama-python ;JavaScript https://github.com/ollama/ollama-js(来源:官方 README “Libraries & SDKs” 节)。 |
01.2 官方图片
下图为 Ollama 官方 GitHub README 顶部 Logo(非 AI 生成、非第三方图)。

- 图片来源 URL:
https://github.com/ollama/ollama/assets/3325447/0d0b44e2-8f4a-4e99-9b52-a5c1c741c8f7(官方仓库 README 内嵌图片,2026-10-25 用curl -L下载)。 - 本地保存路径:
https://zhouruolin.cn/upload/01_ollama_logo.png;file校验结果:PNG image data, 844 x 844, 8-bit/color RGBA,体积 92,041 字节(>20KB)。
01.3 环境要求
下列硬性要求来自官方 Windows 文档、官方 GPU 支持页与官方 FAQ;Ollama 官方未公布统一的“最低内存/磁盘”数字,内存与磁盘占用随模型权重、上下文长度与并行度变化(官方 FAQ “How does Ollama handle concurrent requests?” 说明:并发时内存按
OLLAMA_NUM_PARALLEL × OLLAMA_CONTEXT_LENGTH扩张)。
| 类别 | 官方要求 / 说明 | 出处 |
|---|---|---|
| 操作系统(Windows 原生) | Windows 10 22H2 或更新版本的 Home / Pro 桌面版;工作负载方向为桌面个人电脑,非 Windows Server。 | https://docs.ollama.com/windows |
| 操作系统(Linux / WSL2) | 通过官方 Linux 一键脚本安装;官方安装脚本在内核匹配 *icrosoft*WSL2 时识别为 WSL2,WSL1 直接报错不支持(脚本原文:Microsoft WSL1 is not currently supported. Please use WSL2 with 'wsl --set-version <distro> 2')。 |
https://ollama.com/install.sh 第 101–108 行;https://docs.ollama.com/linux |
| NVIDIA GPU | 算力(CUDA Compute Capability)≥ 5.0,驱动 ≥ 550;算力 5.0–6.2 的老卡需要驱动 570+。RTX 3070(算力 8.6) 与 RTX 4090(算力 8.9) 均在官方支持列表中。 | https://docs.ollama.com/gpu |
| 显存 | 官方未给固定下限;规则是“模型必须能整体放入 VRAM 才能在 GPU 上并发加载”,超出部分自动回落到系统内存(CPU/GPU 混合推理,ollama ps 的 Processor 列会显示占比)。8GB 显存建议跑 7B–8B 量级 Q4 量化模型;24GB 显存可上 14B–30B 量级。 |
https://docs.ollama.com/gpu;FAQ “How does Ollama load models on multiple GPUs?” “How does Ollama handle concurrent requests?” |
| 内存 | 官方未规定固定最小值。CPU 推理所需内存 ≥ 模型权重体积;GPU 推理仍需为上下文、KV 缓存与调度预留系统内存。 | FAQ 并发与显存说明 |
| 依赖(Windows) | 官方安装包内置 GPU 推理运行时,官方文档未要求单独安装 CUDA Toolkit;仅需满足上面的 NVIDIA 驱动版本要求。 | https://docs.ollama.com/windows、https://docs.ollama.com/gpu |
| 依赖(Linux 脚本) | 安装脚本要求已安装 curl awk grep sed tee xargs;解压新版 .tar.zst 还需要 zstd(Debian/Ubuntu:sudo apt-get install zstd)。 |
https://ollama.com/install.sh 第 120、137–143 行 |
| 磁盘空间(程序本体) | 官方 Windows 文档:安装二进制约 4GB,模型另计。 | https://docs.ollama.com/windows |
| 磁盘空间(模型权重) | 官方模型库按标签给出体积与上下文窗口。示例:qwen3:8b-q4_K_M 为 5.2GB / 40K 上下文;deepseek-r1:7b(默认蒸馏 Q4_K_M)为 4.7GB / 128K 上下文;其余模型体积以 https://ollama.com/library/<模型名>/tags 为准。 |
https://ollama.com/library/qwen3/tags;https://ollama.com/library/deepseek-r1/tags |
RTX 3070 8GB 显存参考选型(标签与体积来自官方模型库 tags 页面):
| 用途 | 模型标签 | 官方标签体积 / 上下文 | 说明 |
|---|---|---|---|
| 8GB 首选(通用对话/推理) | qwen3:8b(拉取默认量化,对应 qwen3:8b-q4_K_M) |
5.2GB / 40K | 官方 tags 页 qwen3:8b-q4_K_M 行;8GB 显存需把上下文控制在较小档位(见 01.4 配置表 num_ctx / OLLAMA_CONTEXT_LENGTH)。 |
| 8GB 推理模型 | deepseek-r1:7b |
4.7GB / 128K | 官方 tags 页;上下文实际占用受显存限制,建议配合较小 num_ctx。 |
| 8GB 稳妥降级 | qwen3:4b、qwen3:1.7b、qwen3:0.6b、deepseek-r1:1.5b |
体积见官方 tags 页 | 显存吃紧、内存偏小或希望提速时依次降级;具体体积以 https://ollama.com/library/qwen3/tags 与 https://ollama.com/library/deepseek-r1/tags 为准。 |
| 24GB 可选 | qwen3:14b、qwen3:30b-a3b(MoE)、deepseek-r1:14b 等 |
体积见官方 tags 页 | RTX 4090 24GB 可加载;qwen3:32b、deepseek-r1:32b 等大模型需结合量化标签与显存实测。 |
01.4 最详细部署步骤(Windows 原生 与 WSL2 两种视角)
01.4.1 依赖安装
A. Windows 10/11 原生
- 确认系统为 Windows 10 22H2 或更新(
设置 → 系统 → 关于 → 版本)。 - NVIDIA 显卡驱动:Windows 官方系统要求 551.61 或更新(
https://docs.ollama.com/windows);GPU 支持页通用口径为驱动 ≥550,算力 5.0–6.2 的老卡需 570+(https://docs.ollama.com/gpu);RTX 30/40 系建议安装当前最新 Game Ready / Studio 驱动,可在 NVIDIA 控制面板或nvidia-smi中查看驱动版本。 - 官方安装包内置 GPU 推理运行时,官方文档未要求单独安装 CUDA Toolkit。
B. WSL2(Ubuntu 24.04)
- Windows 已启用 WSL2,发行版内核匹配
*icrosoft*WSL2(WSL1 不受支持,可在 PowerShell 执行wsl --set-version Ubuntu-24.04 2转换)。 - NVIDIA GPU 直通由 Windows 侧 NVIDIA 驱动提供;进入 WSL2 后执行
nvidia-smi,能看到显卡并显示CUDA Version即直通成功(官方安装脚本正是用nvidia-smi | grep -o "CUDA Version: [0-9]*\.[0-9]*"判断 GPU 是否可用,见install.sh第 254–257 行)。 - 在 Ubuntu 内安装脚本所需基础工具:
sudo apt-get update
sudo apt-get install -y curl awk grep sed tee xargs zstd
提示:若要让 WSL2 内的 systemd 服务自动管理 Ollama,需先在
/etc/wsl.conf中启用 systemd(官方安装脚本对“systemd 未运行的 WSL2”会给出链接https://learn.microsoft.com/en-us/windows/wsl/systemd#how-to-enable-systemd);不启用 systemd 时可手动ollama serve启动。
01.4.2 项目下载 / 安装(两条官方路径)
路径一:Windows 原生官方安装包
- 图形化安装包(官方下载页
https://ollama.com/download): - 安装包直链:
https://ollama.com/download/OllamaSetup.exe(2026-10-25 核验 HTTP 200)。 - 下载后双击安装;安装目录为
%LOCALAPPDATA%\Programs\Ollama(官方排错文档给出该路径),安装器会把ollama加入用户 PATH。 - 官方 PowerShell 一键脚本(来源:
https://docs.ollama.com/windows与https://ollama.com/install.ps1):
# 安装最新稳定版(PowerShell)
irm https://ollama.com/install.ps1 | iex
# 可选:指定版本 / 指定安装目录(环境变量机制来自脚本头部官方示例;版本号取当前最新 release)
$env:OLLAMA_VERSION = "0.40.11"; irm https://ollama.com/install.ps1 | iex
$env:OLLAMA_INSTALL_DIR = "D:\Ollama"; irm https://ollama.com/install.ps1 | iex
路径二:Linux / WSL2 官方一键脚本(来源:https://docs.ollama.com/linux、https://ollama.com/install.sh)
# 安装最新稳定版(脚本自动识别 amd64 / arm64、下载 .tar.zst、创建 ollama 用户与 systemd 服务)
curl -fsSL https://ollama.com/install.sh | sh
# 可选:指定历史版本(官方 FAQ “Installing older or pre-release versions on Linux” 示例)
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.5.7 sh
脚本官方行为(源码核对):
- 下载
https://ollama.com/download/ollama-linux-${ARCH}.tar.zst解压到系统二进制目录,软链到/usr/local/bin/ollama; - 创建系统用户
ollama,加入render、video组; - 写入 systemd 服务
/etc/systemd/system/ollama.service,ExecStart=ollama serve、Restart=always、RestartSec=3; - 安装成功后提示 API 位于
127.0.0.1:11434。
安装完成后,新开终端执行 ollama --version 确认客户端可用;Linux 下服务状态:
systemctl status ollama # 查看服务状态(官方 Linux 文档命令)
journalctl -e -u ollama # 官方 Linux 日志查看命令(最新日志)
01.4.3 模型 / 权重下载(官方链接 + 国内加速与离线方案)
A. 官方直连拉取(官方模型库 https://ollama.com/library)
# 拉取并运行 Qwen3 8B(官方库标签 qwen3:8b)
ollama pull qwen3:8b
# 拉取 DeepSeek-R1 蒸馏 7B
ollama pull deepseek-r1:7b
# 直接运行(未拉取时会自动先下载)
ollama run qwen3:8b
- 模型默认存储位置(官方 FAQ “Where are models stored?”):
- Linux:
/usr/share/ollama/.ollama/models - Windows:
C:\Users\%username%\.ollama\models - macOS:
~/.ollama/models
B. 代理环境变量(官方 FAQ “How do I use Ollama behind a proxy?”)
仅使用 HTTPS_PROXY 转发模型拉取;不要设置 HTTP_PROXY(Ollama 拉模型只走 HTTPS,设置 HTTP_PROXY 可能打断客户端到服务端的本地连接)。代理证书需安装为系统证书。
# Linux / WSL2(systemd 方式写入服务环境变量,见 01.4.4)
export HTTPS_PROXY=https://proxy.example.com:7890
C. 离线导入官方 GGUF(下载慢 / 无法访问官方仓库时的可验证替代方案)
Ollama 官方 “Importing a Model” 文档支持直接从本地 GGUF 文件创建模型:在 Modelfile 中用 FROM 指定本地 GGUF 绝对路径(或相对 Modelfile 的路径),分片模型用通配符 FROM ./model-*.gguf。来源:https://docs.ollama.com/import、https://docs.ollama.com/modelfile。
第 1 步:从 ModelScope 镜像下载官方 Qwen3 GGUF(镜像页 https://modelscope.cn/models/Qwen/Qwen3-8B-GGUF,2026-10-25 核验 200;文件体积与 Hugging Face 官方一致,Q4_K_M 为 5.03GB,详见 03 章):
# 安装 ModelScope SDK(官方文档:https://modelscope.ai/docs/Models/Download-Model)
pip install modelscope
# 旧版 SDK CLI(官方文档:--model 仓库 ID,--include 文件名通配,--cache_dir 缓存目录)
modelscope download --model Qwen/Qwen3-8B-GGUF \
--include 'Qwen3-8B-Q4_K_M.gguf' --cache_dir ./qwen3-gguf
# 新版 modelscope-hub CLI(--local-dir 直存目录;--include 通配过滤)
# modelscope download Qwen/Qwen3-8B-GGUF Qwen3-8B-Q4_K_M.gguf --local-dir ./qwen3-gguf
第 2 步:新建 Modelfile(示例,路径按实际修改;PARAMETER num_ctx、SYSTEM 指令格式来自官方 Modelfile 参考 https://docs.ollama.com/modelfile):
# Modelfile(离线导入本地 GGUF)
# 本地 GGUF 绝对路径(官方要求:绝对路径,或相对本 Modelfile 的路径)
FROM /home/user/models/qwen3-gguf/Qwen3-8B-Q4_K_M.gguf
# 上下文窗口(8GB 显存建议先设小一些,例如 8192)
PARAMETER num_ctx 8192
# 系统提示词
SYSTEM """You are a helpful, concise assistant."""
第 3 步:创建并运行本地模型:
ollama create qwen3-8b-local -f ./Modelfile
ollama run qwen3-8b-local
# 查看模型实际使用的 Modelfile(官方命令)
ollama show --modelfile qwen3-8b-local
说明:离线导入只完成“权重挂载”,Ollama 不会在导入时对 GGUF 重新量化(官方 Importing a Model 文档明确说明量化需使用外部工具,如 llama.cpp 的
llama-quantize,链接https://github.com/ggml-org/llama.cpp/tree/master/tools/quantize)。
01.4.4 关键配置(环境变量 / 配置项表)
下列变量均来自官方 FAQ “How do I configure Ollama server?” 及各专项 FAQ 页面;修改后需重启 Ollama 服务生效。
| 变量 / 配置项 | 含义 | 默认值 / 官方取值 | 示例值 | 出处 |
|---|---|---|---|---|
OLLAMA_HOST |
服务监听地址与端口 | 默认 127.0.0.1:11434;本机之外访问需改为 0.0.0.0:11434 |
0.0.0.0:11434 |
FAQ “How can I expose Ollama on my network?” |
OLLAMA_MODELS |
模型存储目录 | Linux /usr/share/ollama/.ollama/models;Windows C:\Users\%username%\.ollama\models;macOS ~/.ollama/models |
/data/ollama/models |
FAQ “Where are models stored?” |
OLLAMA_CONTEXT_LENGTH |
全局默认上下文窗口(token) | 动态默认:可用显存 <24GiB 为 4K;24–48GiB 为 32K;≥48GiB 为 256K(来源 https://docs.ollama.com/context-length) |
8192 |
https://docs.ollama.com/context-length;FAQ |
OLLAMA_MAX_LOADED_MODELS |
并发常驻模型上限 | 3 × GPU 数量;纯 CPU 为 3 |
2 |
FAQ “How does Ollama handle concurrent requests?” |
OLLAMA_NUM_PARALLEL |
单模型并行请求数;内存按 NUM_PARALLEL × CONTEXT_LENGTH 扩张 |
1 |
1 |
同上 |
OLLAMA_MAX_QUEUE |
忙碌时最大排队请求数,超出返回 503 | 512 |
512 |
同上 |
OLLAMA_KEEP_ALIVE |
模型空闲后驻留内存时长;支持 10m、24h、秒数、-1 常驻、0 响应后立即卸载 |
默认 5 分钟 | 30m 或 -1 |
FAQ “How do I keep a model loaded in memory?” |
OLLAMA_FLASH_ATTENTION |
强制开启 / 关闭 Flash Attention;后端与设备支持时自动启用 | 后端支持时自动 | 1 |
FAQ “How can I enable Flash Attention?” |
OLLAMA_KV_CACHE_TYPE |
KV 缓存量化类型:f16(默认,高精度高占用)、q8_0(约一半内存,精度损失很小,官方推荐替代 f16 时使用)、q4_0(约四分之一内存) |
f16 |
q8_0 |
FAQ “How can I set the quantization type for the K/V cache?” |
OLLAMA_ORIGINS |
允许跨域访问的来源;默认允许 127.0.0.1、0.0.0.0;浏览器扩展需显式放行 |
127.0.0.1,0.0.0.0 |
chrome-extension://*,moz-extension://*,safari-web-extension://* |
FAQ “How can I allow additional web origins?” |
OLLAMA_DEBUG |
开启详细调试日志 | 关闭 | 1 |
https://docs.ollama.com/troubleshooting |
OLLAMA_TMPDIR |
临时可执行文件目录;系统 /tmp 挂载 noexec 时改到用户可写目录 |
系统临时目录 | /usr/share/ollama/ |
Troubleshooting “Linux tmp noexec” |
OLLAMA_LLM_LIBRARY |
强制指定后端推理库(绕过自动探测),如 cpu、cpu_avx、cpu_avx2、cuda_v11、rocm_v6 等 |
自动探测 | cpu_avx2 |
Troubleshooting “Experimental LLM Library Override” |
OLLAMA_NO_CLOUD |
禁用 Ollama 云功能(云端模型、联网搜索);也可在 ~/.ollama/server.json 写 "disable_ollama_cloud": true |
默认开启云功能 | 1 |
FAQ “How do I disable Ollama’s cloud features?” |
HTTPS_PROXY |
模型拉取代理 | 无 | https://proxy.example.com:7890 |
FAQ “How do I use Ollama behind a proxy?” |
设置环境变量的官方方式(FAQ “How do I configure Ollama server?”):
- Linux / WSL2(systemd):
sudo systemctl edit ollama.service,在[Service]段加入:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/data/ollama/models"
Environment="OLLAMA_KV_CACHE_TYPE=q8_0"
然后:
sudo systemctl daemon-reload
sudo systemctl restart ollama
- Windows:先从托盘退出 Ollama →
设置(Win11)/ 控制面板(Win10)搜索“环境变量” → 编辑用户账户的OLLAMA_HOST、OLLAMA_MODELS等 → 保存后从开始菜单重新启动 Ollama(Windows 继承用户与系统环境变量)。 - 前台手动启动时临时生效:
OLLAMA_HOST=0.0.0.0:11434 OLLAMA_DEBUG=1 ollama serve
01.4.5 启动
- Windows 原生:安装后托盘常驻,后台服务自动运行;命令行可直接
ollama run <模型名>。 - Linux / WSL2(systemd):
sudo systemctl enable --now ollama # 启用并启动服务
ollama ps # 查看当前已加载模型与 GPU/CPU 占用
- 手动前台启动(调试用):
ollama serve
# 官方启动日志显示:Ollama 正在运行,监听 http://127.0.0.1:11434
01.5 使用方法
01.5.1 启动方式
| 方式 | 命令 / 入口 | 说明 |
|---|---|---|
| 命令行对话 | ollama run <模型名> |
进入交互式 REPL;模型未下载时自动拉取。 |
| 后台服务 | ollama serve |
启动 HTTP 服务,默认 http://127.0.0.1:11434;桌面版由安装器自动启动。 |
| 命令行一次性提问 | ollama run <模型名> "问题" |
非交互式,输出后退出。 |
| 集成启动 | ollama launch(交互选择);ollama launch claude;ollama launch claude --model qwen3.5;ollama launch droid --config |
官方 CLI 文档 “Launch integrations”,配置并启动外部集成应用(模型名沿用官方示例)。 |
01.5.2 命令行操作步骤(带示例)
官方 CLI 参考:https://docs.ollama.com/cli。
# 1. 拉取模型
ollama pull qwen3:8b
# 2. 交互式对话(进入后直接输入文字;多行用 """ 包裹)
ollama run qwen3:8b
# 3. REPL 内常用斜杠命令(官方 FAQ 与官方 Quickstart 文档)
>>> /set parameter num_ctx 8192 # 当次会话设置上下文长度(FAQ “How can I specify the context window size?”)
>>> /bye # 退出会话(Quickstart “Run a model locally”:Type `/bye` to leave.)
# 多行输入:用三引号 """ 包裹(官方 CLI 参考 “Multiline input”)
# 4. 列出已安装模型
ollama ls
# 5. 查看正在内存中运行的模型(PROCESSOR 列显示 100% GPU / 100% CPU / 混合占比)
ollama ps
# 6. 卸载模型、释放显存
ollama stop qwen3:8b
# 7. 删除本地模型
ollama rm qwen3:8b
# 8. 查看模型 Modelfile / 详情
ollama show --modelfile qwen3:8b
01.5.3 参数说明表
| 命令 / 参数 | 作用 | 官方示例 | 出处 |
|---|---|---|---|
ollama run <model> |
加载并进入对话;模型缺失时自动拉取 | ollama run gemma4 |
CLI 参考 “Run a model” |
ollama run <model> "prompt" |
一次性提问 | ollama run gemma4 "What's in this image? /path/to.png" |
CLI 参考 “Multimodal models” |
ollama pull <model> |
仅下载模型到本地 | ollama pull gemma4 |
CLI 参考 “Download a model” |
ollama ls |
列出本地模型 | ollama ls |
CLI 参考 “List models” |
ollama ps |
列出正在运行(驻留内存)的模型 | ollama ps |
FAQ “How can I tell if my model was loaded onto the GPU?” |
ollama stop <model> |
立即从内存卸载模型 | ollama stop gemma4 |
FAQ “How do I keep a model loaded in memory?” |
ollama rm <model> |
删除本地模型文件 | ollama rm gemma4 |
CLI 参考 “Remove a model” |
ollama create -f <Modelfile> |
由 Modelfile 创建自定义模型 | ollama create -f Modelfile |
CLI 参考 “Create a customized model” |
ollama serve |
启动 Ollama 服务;ollama serve --help 可查看全部环境变量 |
ollama serve |
CLI 参考 “Start Ollama” |
/set parameter num_ctx <n> |
REPL 内设置上下文 token 数 | /set parameter num_ctx 4096 |
FAQ “How can I specify the context window size?” |
API num_ctx(options) |
请求级上下文设置 | "options": {"num_ctx": 4096} |
同上 |
API keep_alive |
模型驻留时长:时长串 / 秒数 / -1 常驻 / 0 立即卸载 |
{"model":"llama3.2","keep_alive":-1} |
FAQ “How do I keep a model loaded in memory?” |
HTTP API 与 OpenAI 兼容接口(官方 https://docs.ollama.com/api/introduction):
| 接口 | 本地 Base URL | 说明 |
|---|---|---|
| Ollama 原生 API | http://localhost:11434/api |
端点:POST /api/generate、POST /api/chat、POST /api/embed、GET /api/tags、GET /api/ps、POST /api/show、POST /api/create、POST /api/copy、POST /api/pull、POST /api/push、DELETE /api/delete、GET /api/version。 |
| OpenAI 兼容接口 | http://localhost:11434/v1 |
官方 “OpenAI compatibility” 页面 https://docs.ollama.com/api/openai-compatibility;可被 OpenAI SDK 与兼容 OpenAI 的前端直接接入。 |
| Anthropic 兼容 | http://localhost:11434 |
客户端自动追加 /v1/messages。 |
01.5.4 端到端示例(输入 → 命令 → 输出)
场景:RTX 3070 8GB 笔记本,离线环境,用 01.4.3 第 C 步导入的 qwen3-8b-local 完成一次对话,并通过 OpenAI 兼容接口调用。
第 1 步:确认模型已导入
$ ollama ls
NAME ID SIZE MODIFIED
qwen3-8b-local:latest <hash> 5.03 GB 2 minutes ago
第 2 步:命令行提问(输入 → 命令)
$ ollama run qwen3-8b-local "用三句话解释什么是量化(quantization),面向新手。"
输出(官方 API 字段结构示意,实际文本由模型生成):
量化就是把模型里原本高精度的数字(如 16 位浮点数)压缩成更低位数(如 4 位整数)来存储和计算。
这样模型文件更小、更省显存,普通电脑也能跑起来;代价是回答质量可能有轻微下降,需要在体积和效果之间权衡。
常见档位有 Q4_K_M、Q5_K_M、Q6_K、Q8_0 等,数字越小体积越小、速度越快。
第 3 步:原生 REST API 调用(官方 README “REST API” 示例,模型名替换为本地模型):
curl http://localhost:11434/api/chat -d '{
"model": "qwen3-8b-local",
"messages": [{"role": "user", "content": "用三句话解释什么是量化(quantization),面向新手。"}],
"stream": false,
"options": {"num_ctx": 8192}
}'
返回(结构字段来自官方 /api/chat 文档;message.content 为模型回答):
{
"model": "qwen3-8b-local",
"message": {
"role": "assistant",
"content": "量化就是把模型里原本高精度的数字……(同上模型输出)"
},
"done": true,
"prompt_eval_count": 18,
"eval_count": 96
}
第 4 步:OpenAI 兼容接口调用(Base URL http://localhost:11434/v1,官方 https://docs.ollama.com/api/openai-compatibility):
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-8b-local",
"messages": [{"role": "user", "content": "你好,介绍一下你自己。"}]
}'
01.6 常见坑(现象 + 原因 + 解决)
-
现象:WSL2 内安装 Ollama 或
ollama pull模型时网络极慢、经常中断。 - 原因:官方 FAQ “Why is networking slow in WSL2 on Windows 10?” 指出,Windows 10 上vEthernet (WSL)适配器的 Large Send Offload (LSOv2) 会影响安装与模型下载。 - 解决:控制面板 → 网络和 Internet → 查看网络状态和任务 → 更改适配器设置 → vEthernet (WSL) 属性 → 配置 → 高级,将Large Send Offload Version 2 (IPv4)与Large Send Offload Version 2 (IPv6)均禁用后重启 WSL。 -
现象:模型只跑在 CPU 上,
ollama ps显示100% CPU或很大比例 CPU/GPU 混合。 - 原因:NVIDIA 驱动过旧或 GPU 发现失败(官方 Troubleshooting “NVIDIA GPU Discovery” 给出错误码含义:3未初始化、46设备不可用、100无设备、999未知);WSL2 下nvidia-smi看不到显卡时 Ollama 同样无法使用 GPU。 - 解决:先在 Windows 侧升级 NVIDIA 驱动到 ≥550;WSL2 内执行nvidia-smi验证直通;Linux 容器场景可执行sudo nvidia-modprobe -u、重载nvidia_uvm驱动(sudo rmmod nvidia_uvm && sudo modprobe nvidia_uvm)或重启;查看日志journalctl -e -u ollama,必要时OLLAMA_DEBUG=1获取 GPU 发现细节。 -
现象:修改了
OLLAMA_HOST、OLLAMA_MODELS等变量后不生效。 - 原因:Windows 桌面版需先从托盘退出再重启才会继承新的用户环境变量;Linux systemd 服务需daemon-reload并重启;变量写错位置(如只在当前 shellexport但服务由 systemd 拉起)不生效。 - 解决:按 01.4.4 官方方式设置:Windows 退出托盘后重启;Linux 用sudo systemctl edit ollama.service写Environment=后systemctl daemon-reload && systemctl restart ollama。 -
现象:模型下载到一半磁盘报错 / 空间不足。 - 原因:默认模型目录在系统盘(Windows
C:\Users\%username%\.ollama\models;Linux/usr/share/ollama/.ollama/models),大模型(如 Q8_0、32B 级)体积可达数十 GB。 - 解决:设置OLLAMA_MODELS指向大容量目录;Linux 标准安装下需把目录授权给ollama用户:sudo chown -R ollama:ollama <目录>(官方 FAQ “Where are models stored?”)。 -
现象:局域网其他设备 / 前端访问不到 Ollama。 - 原因:服务默认仅绑定
127.0.0.1:11434;浏览器跨域还受OLLAMA_ORIGINS限制。 - 解决:设置OLLAMA_HOST=0.0.0.0:11434后重启;跨域前端按需在OLLAMA_ORIGINS中放行来源(官方 FAQ “How can I expose Ollama on my network?” “How can I allow additional web origins?”)。 -
现象:
/tmp所在分区挂载了noexec,Ollama 启动失败或无法解压临时运行库。 - 原因:官方 Troubleshooting “Linux tmp noexec”:临时可执行文件目录不可执行。 - 解决:设置OLLAMA_TMPDIR到ollama用户可写且带执行权限的目录,例如OLLAMA_TMPDIR=/usr/share/ollama/。 -
现象:代理环境下模型拉取失败,或本地客户端连不上服务。 - 原因:FAQ 明确:模型拉取只走 HTTPS,应配置
HTTPS_PROXY;设置HTTP_PROXY会打断本地客户端与服务端连接。 - 解决:仅设置HTTPS_PROXY并安装代理根证书为系统证书;Docker 场景用-e HTTPS_PROXY=https://proxy.example.com传入容器。
01.7 本节来源清单
验证方式说明:
web_fetch= 通过文档抓取工具实际打开;curl 200= 命令行 HTTP 状态码核验;general_search= 搜索索引佐证。核验日期 2026-10-25。
| # | URL | 用途 | 验证方式 |
|---|---|---|---|
| 1 | https://github.com/ollama/ollama | 官方仓库主页 | curl 200(仓库页;README 与 LICENSE 经 raw 地址抓取核对) |
| 2 | https://github.com/ollama/ollama/blob/main/LICENSE | MIT 许可证出处 | web_fetch 打开 raw LICENSE,标题 MIT License;curl 200 |
| 3 | https://raw.githubusercontent.com/ollama/ollama/main/LICENSE | LICENSE 原始文件 | web_fetch 实际读取全文 |
| 4 | https://raw.githubusercontent.com/ollama/ollama/main/README.md | README 命令、SDK、API 示例 | curl 200,已下载本地核对 |
| 5 | https://ollama.com | 官方网站 | curl 200 |
| 6 | https://docs.ollama.com | 官方文档站首页 | curl 200 |
| 7 | https://docs.ollama.com/cli | CLI 命令参考(run/pull/ls/ps/stop/create/serve/launch) | curl 200,已下载 HTML 提取核对 |
| 8 | https://docs.ollama.com/faq | 环境变量、模型目录、并发、KV 缓存、代理、WSL2 网络等 FAQ | curl 200,已下载 HTML 提取核对 |
| 9 | https://docs.ollama.com/windows | Windows 版本要求、安装目录、日志路径 | curl 200,已下载核对 |
| 10 | https://docs.ollama.com/linux | Linux 安装与 systemd 说明 | curl 200,已下载核对 |
| 11 | https://docs.ollama.com/gpu | NVIDIA 算力 / 驱动版本 / 支持显卡列表(RTX 3070、RTX 4090) | curl 200,已下载核对 |
| 12 | https://docs.ollama.com/context-length | 动态默认上下文窗口(4K / 32K / 256K) | curl 200,已下载核对 |
| 13 | https://docs.ollama.com/troubleshooting | 日志路径、GPU 发现错误码、noexec、LLM 库覆盖 | curl 200,已下载核对 |
| 14 | https://docs.ollama.com/import | 本地 GGUF / 分片模型离线导入(FROM 指令) | curl 200,已下载核对 |
| 15 | https://docs.ollama.com/modelfile | Modelfile 指令(FROM/PARAMETER/SYSTEM 等) | curl 200,已下载核对 |
| 16 | https://docs.ollama.com/api/introduction | 原生 API / OpenAI / Anthropic 兼容 Base URL | curl 200,已下载 .md 提取核对 |
| 17 | https://docs.ollama.com/api/openai-compatibility | OpenAI 兼容接口(/v1/chat/completions、/v1/completions、/v1/models、/v1/embeddings) |
curl 200,已下载 .md 核对 |
| 18 | https://ollama.com/download | 官方下载页 | curl 200 |
| 19 | https://ollama.com/download/OllamaSetup.exe | Windows 官方安装包直链 | curl 200(HEAD 跟随重定向) |
| 20 | https://ollama.com/install.sh | Linux/macOS 官方一键脚本 | curl 200,已下载 455 行源码核对 |
| 21 | https://ollama.com/install.ps1 | Windows 官方 PowerShell 脚本 | curl 200,已下载 495 行源码核对 |
| 22 | https://ollama.com/library | 官方模型目录 | curl 200 |
| 23 | https://ollama.com/library/qwen3/tags | qwen3:8b 等标签体积与上下文窗口 |
curl 200,已解析标签行核对 |
| 24 | https://ollama.com/library/deepseek-r1/tags | deepseek-r1:7b 等标签体积与上下文窗口 |
curl 200,已解析标签行核对 |
| 25 | https://github.com/ollama/ollama/releases/tag/v0.40.11 | 最新 release 版本号与发布日期(2026-10-24) | curl 200,页面 datetime="2026-10-24T00:30:13Z" 核对 |
| 26 | https://github.com/ollama/ollama/releases | 发布历史 | curl 200 |
| 27 | https://github.com/ollama/ollama-python | 官方 Python SDK | curl 200(README 链接) |
| 28 | https://github.com/ollama/ollama-js | 官方 JavaScript SDK | curl 200(README 链接) |
| 29 | https://github.com/ggml-org/llama.cpp/tree/master/tools/quantize | 官方导入文档引用的量化工具 | curl 200 |
| 30 | https://modelscope.cn/models/Qwen/Qwen3-8B-GGUF | 离线导入用官方 GGUF 国内镜像 | curl 200,文件列表经 ModelScope API 核对 |
| 31 | https://modelscope.ai/docs/Models/Download-Model | ModelScope SDK / CLI 下载命令官方文档 | general_search 命中官方文档,curl 200 |
| 32 | https://learn.microsoft.com/en-us/windows/wsl/systemd | WSL2 启用 systemd 官方指南(安装脚本引用链接) | 官方安装脚本 install.sh 第 244 行引用 |
| 33 | https://docs.ollama.com/quickstart | Quickstart 本地运行与 REPL /bye 退出命令 |
curl 200,已下载 .md 第 “Run a model locally” 节核对 |
| 34 | https://docs.ollama.com/api/anthropic-compatibility | Anthropic 兼容 Base URL http://localhost:11434(客户端追加 /v1/messages) |
curl 200,已下载 .md 核对 |
| 35 | https://docs.ollama.com/api/generate | 原生 POST /api/generate 端点方法与请求字段 |
curl 200,已下载 .md 核对 OpenAPI 片段 |
| 36 | https://docs.ollama.com/api/chat | 原生 POST /api/chat 端点、message.content、done、prompt_eval_count、eval_count 字段 |
curl 200,已下载 .md 核对响应示例 |
| 37 | https://docs.ollama.com/api/embed | 原生 POST /api/embed 端点 |
curl 200,已下载 .md 核对 |
| 38 | https://docs.ollama.com/api/tags | 原生 GET /api/tags 模型列表响应字段(name、size、modified_at、digest) |
curl 200,已下载 .md 核对响应示例 |
| 39 | https://docs.ollama.com/api/ps | 原生 GET /api/ps 驻留模型列表 |
curl 200,已下载 .md 核对 |
| 40 | https://docs.ollama.com/api/create | 原生 POST /api/create 端点 |
curl 200,已下载 .md 核对 |
| 41 | https://docs.ollama.com/api/copy | 原生 POST /api/copy 端点 |
curl 200,已下载 .md 核对 |
| 42 | https://docs.ollama.com/api/pull | 原生 POST /api/pull 端点 |
curl 200,已下载 .md 核对 |
| 43 | https://docs.ollama.com/api/push | 原生 POST /api/push 端点 |
curl 200,已下载 .md 核对 |
| 44 | https://docs.ollama.com/api/delete | 原生 DELETE /api/delete 端点 |
curl 200,已下载 .md 核对 |
| 45 | https://docs.ollama.com/api-reference/show-model-details | 原生 POST /api/show 端点 |
curl 200,已下载 .md 核对 |
| 46 | https://docs.ollama.com/api-reference/get-version | 原生 GET /api/version 端点 |
curl 200,已下载 .md 核对 |
02. llama.cpp(llama-server / llama-cli / llama-quantize)—— 纯 C/C++ 的高效本地 LLM 推理引擎
适用环境:Windows 10/11 原生、Windows 10/11 + WSL2(Ubuntu 24.04)、NVIDIA RTX 3070 8GB / RTX 4090 24GB,以及 Linux 云服务器。 信息口径:本章命令、编译参数、工具名、参数与端点均来自 llama.cpp 官方仓库 README、
docs/build.md、docs/models.md、tools/server/README.md、tools/cli/README.md、tools/quantize/README.md与官方 release 资产清单;核验日期 2026-10-25。
02.1 项目定位与基本信息
| 项目 | 内容 |
|---|---|
| 一句话定位 | 用纯 C/C++ 实现、基于 ggml 的 LLM/VLM 推理库与命令行工具集,支持 1.5-bit 到 8-bit 量化、CUDA/Vulkan/Metal/HIP 等多后端、CPU+GPU 混合推理,并自带 OpenAI 兼容 HTTP 服务器与内置 Web UI。 |
| 开源许可 | MIT License。出处:官方 README 徽章 [License: MIT](https://opensource.org/licenses/MIT)(README 徽章);仓库 LICENSE 文件 https://github.com/ggml-org/llama.cpp/blob/master/LICENSE(原始文件 https://raw.githubusercontent.com/ggml-org/llama.cpp/master/LICENSE,已实际打开核对,标题为 MIT License)。 |
| 官方 GitHub 仓库 | https://github.com/ggml-org/llama.cpp |
| 官方文档 / 站点 | https://github.com/ggml-org/llama.cpp/tree/master/docs (构建、模型、Docker、多 GPU 等官方文档索引);安装引导站 https://llama.app 。 |
| 版本信息 | 截至 2026-10-25:官方语义化稳定 release v0.7.0(发布于 2026-10-15,来源 https://github.com/ggml-org/llama.cpp/releases/tag/v0.7.0,页面 datetime="2026-10-15T17:13:19Z" 核验);预编译二进制发布在 Nightly 标签(b*),最新已核验资产为 b11874(发布于 2026-10-25,来源 https://github.com/ggml-org/llama.cpp/releases/tag/b11874)。README 徽章区分两类:Release 过滤 v*,Nightly 过滤 b*。 |
| 官方模型生态 | 兼容 Hugging Face 上所有 GGUF 模型:https://huggingface.co/models?library=gguf&sort=trending(来源 docs/models.md)。 |
02.2 官方图片
下图为官方 README 内嵌的两张官方截图(非 AI 生成、非第三方图):左为 llama cli 的 VLM 会话界面,右为 llama serve 内置 Web UI。
图 1:llama cli 命令行会话(官方 README 截图)

- 图片来源 URL:
https://github.com/user-attachments/assets/88726b48-1713-48aa-a525-95a02e78afc4(README 原文 alt:VLM session with 'llama cli',2026-10-25curl -L下载)。 - 本地路径:
https://zhouruolin.cn/upload/02_llamacpp_cli_screenshot.png;file校验:PNG image data, 2782 x 2014, 8-bit/color RGBA,317,242 字节(>20KB)。
图 2:llama serve 内置 Web UI(官方 README 截图)

- 图片来源 URL:
https://github.com/user-attachments/assets/b402f972-2e32-4def-8771-8d849f08cf2e(README 原文 alt:Built-in web UI against 'llama serve' running Qwen 3.6,2026-10-25curl -L下载)。 - 本地路径:
https://zhouruolin.cn/upload/02_llamacpp_webui_screenshot.png;file校验:PNG image data, 2784 x 1916, 8-bit/color RGBA,688,668 字节(>20KB)。
02.3 环境要求
来源:
docs/build.md(CPU/CUDA 构建与计算能力表)、README.md(支持后端、量化档位、CPU+GPU 混合推理)、tools/quantize/README.md(量化工具内存/磁盘要求)、tools/server/README.md(默认端口与后端能力)。
| 类别 | 官方要求 / 说明 | 出处 |
|---|---|---|
| 操作系统(Windows 预编译) | Windows x64(ARM64 另有对应包);预编译包直接运行,无需自行编译。 | https://github.com/ggml-org/llama.cpp/releases(b11874 资产清单);docs/build.md Windows 构建节 |
| 操作系统(Linux / WSL2 源码编译) | 主流 Linux 发行版;WSL2(Ubuntu 24.04)内完成 CUDA 源码编译;CUDA 版本由 WSL2 内安装的 CUDA Toolkit 决定。 | docs/build.md CUDA 节;https://developer.nvidia.com/cuda-toolkit |
| GPU 与显存 | NVIDIA GPU 使用 CUDA 后端;官方构建示例列出 GeForce RTX 4090 = 计算能力 8.9、GeForce RTX 3070 = 8.6、RTX 3080 Ti = 8.6。README 明确支持 CPU+GPU 混合推理:超出总显存的模型可部分卸载到 CPU。 | docs/build.md “Override Compute Capability Specifications”;README.md Description |
| 显存 | 官方未公布固定下限;模型权重 + KV 缓存需放入显存,放不下的层自动留在 CPU(-ngl 控制卸载层数)。8GB 显存建议 7B–8B 的 Q4_K_M 级;24GB 显存可跑 14B–32B 量化模型(具体体积见 03 章 Qwen3 GGUF 表)。 |
tools/server/README.md -ngl/--gpu-layers 参数;README “CPU+GPU hybrid inference” |
| 内存 | 推理:权重 + KV 缓存占用系统内存;量化工具 llama-quantize 会把模型整体载入内存,原始精度(F32/BF16)模型必须先有足够 RAM 与磁盘存放中间文件。 |
tools/quantize/README.md “Memory/Disk Requirements” |
| 依赖(预编译 Windows CUDA 包) | 工作流将 ggml-cuda.dll 与 CUDA 运行时(cudart64_*、cublas64_*、cublasLt64_*)分别打包,在 release 合并步骤并入最终 zip;系统仍需有匹配的 NVIDIA 显卡驱动。 |
.github/workflows/release.yml windows-cuda 作业第 1193–1291 行 |
| 依赖(源码编译) | Git、CMake、C++ 编译器;CUDA 后端需安装 CUDA Toolkit(含 nvcc);可选 Ninja 并行构建;需要 HTTPS/TLS 时安装 OpenSSL 开发库(Debian/Ubuntu:sudo apt-get install libssl-dev)。 |
docs/build.md “CPU Build”“CUDA”节;README “Get the Code” git clone https://github.com/ggml-org/llama.cpp |
| 依赖(模型转换 / 量化) | Python 环境并安装仓库 requirements.txt:python3 -m pip install -r requirements.txt(或 uv pip install -r requirements.txt --index-strategy unsafe-best-match)。 |
tools/quantize/README.md “Overview” |
| 磁盘空间 | 程序本体很小;占用主要是 GGUF 模型权重。官方参考(tools/quantize/README.md,Llama-3.1-8B):原始 32.1 GB → Q4_K_M 4.9 GB;同模型参考表 Q4_K_M 4.58 GiB、Q5_K_M 5.33 GiB、Q6_K 6.14 GiB、Q8_0 7.95 GiB、F16 14.96 GiB。 |
tools/quantize/README.md “Quantization / Memory-Disk Requirements” |
RTX 3070 8GB 与 RTX 4090 24GB 编译参数对照(来源:docs/build.md “Override Compute Capability Specifications”,官方示例即列出 RTX 3070=8.6、RTX 4090=8.9):
| 机器 | CUDA 架构(Compute Capability) | 推荐 CMAKE_CUDA_ARCHITECTURES |
|---|---|---|
| RTX 3070 8GB | 86 |
86 |
| RTX 4090 24GB | 89 |
89 |
| 两机通用 / 交叉编译 | 同时覆盖 | "86;89" |
02.4 最详细部署步骤(Windows 预编译 与 WSL2 源码编译 两种视角)
02.4.1 依赖安装
A. Windows 10/11 原生(预编译 CUDA 包路线)
- 安装 NVIDIA 显卡最新驱动,设备管理器 /
nvidia-smi确认显卡被识别。 - 无需安装 Visual Studio、CMake 或 CUDA Toolkit(预编译包自带后端运行时)。
- 准备模型目录,例如
D:\llm\models\,用于存放 GGUF 文件。
B. WSL2(Ubuntu 24.04)源码编译路线
- Windows 侧安装 NVIDIA 驱动;进入 WSL2 执行
nvidia-smi,确认能看到显卡与CUDA Version(WSL2 直通由 Windows 驱动提供,不要在 Windows 上装 CUDA Toolkit 来给 WSL2 编译用,编译工具链要装在 WSL2 内)。 - 在 WSL2 内安装 CUDA Toolkit(含
nvcc,官方下载入口https://developer.nvidia.com/cuda-toolkit),安装后nvcc --version可执行。 - 安装编译基础工具(Git、CMake、C++ 工具链、Ninja;Debian/Ubuntu 常用命令):
sudo apt-get update
sudo apt-get install -y git cmake g++ build-essential ninja-build libssl-dev
说明:上面的
apt-get包名是 Ubuntu 通用开发工具链;llama.cpp 官方docs/build.md只规定了git clone+ CMake 构建流程与 CUDA Toolkit 前提,未直接给出该apt-get清单。
02.4.2 项目下载 / 安装(预编译包、一键脚本、源码三种官方方式)
方式一:Windows 官方预编译包(Nightly b11874,2026-10-25 资产清单核验)
- 发布页:
https://github.com/ggml-org/llama.cpp/releases - NVIDIA CUDA 12.4 x64 包直链(HTTP 200 已核验):
https://github.com/ggml-org/llama.cpp/releases/download/b11874/llama-b11874-bin-win-cuda-12.4-x64.zip - 同清单备选:CPU 包
llama-b11874-bin-win-cpu-x64.zip、CUDA 13.4 包llama-b11874-bin-win-cuda-13.4-x64.zip、Vulkan 包llama-b11874-bin-win-vulkan-x64.zip。
下载解压后,在解压目录内查找以下官方 CMake 目标对应的可执行文件(来源:各 tools/*/CMakeLists.txt):
| 工具 | Windows 可执行文件 | 官方 CMake 目标 / 文档 |
|---|---|---|
| HTTP 服务器 | llama-server.exe |
tools/server/CMakeLists.txt:set(TARGET llama-server); add_executable(${TARGET} main.cpp);tools/server/README.md Build 节 |
| 命令行对话 | llama-cli.exe |
tools/cli/CMakeLists.txt:set(TARGET llama-cli); add_executable(${TARGET} main.cpp);tools/cli/README.md |
| 模型量化 | llama-quantize.exe |
tools/quantize/CMakeLists.txt:set(TARGET llama-quantize); add_executable(${TARGET} main.cpp);tools/quantize/README.md |
方式二:官方一键脚本(README Quick start,https://llama.app)
# Linux / macOS(README 原文:curl -LsSf https://llama.app/install.sh | sh)
curl -LsSf https://llama.app/install.sh | sh
# Windows PowerShell(README 原文:irm https://llama.app/install.ps1 | iex)
irm https://llama.app/install.ps1 | iex
脚本安装的是统一命令 llama,子命令为 llama cli 与 llama serve(README 示例:llama cli -hf ggml-org/Qwen3.5-0.8B-GGUF、llama serve -hf ggml-org/Qwen3.5-0.8B-GGUF)。
方式三:WSL2 / Linux 源码编译(官方 docs/build.md)
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
# CPU 构建(官方 CPU Build 命令)
cmake -B build
cmake --build build --config Release
# CUDA 构建(官方 CUDA 节命令)
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release
RTX 3070 / 4090 指定架构(官方 “Override Compute Capability Specifications”):
# 单卡 RTX 3070(86)
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="86"
cmake --build build --config Release -j"$(nproc)"
# 单卡 RTX 4090(89)
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="89"
cmake --build build --config Release -j"$(nproc)"
# 两机通用(86 + 89)
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="86;89"
cmake --build build --config Release -j"$(nproc)"
只构建服务器目标(官方 tools/server/README.md Build 节):
cmake -B build
cmake --build build --config Release -t llama-server
# 产物:./build/bin/llama-server
可选:为覆盖所有 CUDA GPU(非原生机器)禁用原生优化:
cmake -B build -DGGML_CUDA=ON -DGGML_NATIVE=OFF(docs/build.md“Non-Native Builds”)。需要 OpenSSL/SSL 支持时:cmake -B build -DLLAMA_OPENSSL=ON(tools/server/README.md“Build with SSL”)。
产物位置(官方文档):./build/bin/llama-server、./build/bin/llama-cli、./build/bin/llama-quantize。
02.4.3 模型 / 权重下载(官方链接 + 国内加速方案)
A. 官方 -hf 直连 Hugging Face(docs/models.md、tools/server/README.md -hf 参数)
# 官方 README Quick start 示例仓库;量化档大小写不敏感,默认 Q4_K_M
./build/bin/llama-cli -hf ggml-org/Qwen3.5-0.8B-GGUF
./build/bin/llama-server -hf ggml-org/Qwen3.5-0.8B-GGUF
B. 官方 MODEL_ENDPOINT 兼容端点(docs/models.md 原文:You can use the same CLI invocation to download from other sites, by pointing the MODEL_ENDPOINT environment variable to an endpoint compatible with the Hugging Face API.)
# 指向兼容 Hugging Face API 的镜像端点(端点需自行确认兼容性)
export MODEL_ENDPOINT=https://hf-mirror.com
./build/bin/llama-server -hf Qwen/Qwen3-8B-GGUF:Q4_K_M
说明:
hf-mirror.com为第三方国内镜像站(非 llama.cpp / Hugging Face 官方),MODEL_ENDPOINT仅要求端点兼容 HF API;若镜像路径不兼容,改用下面的“手动下载 + 本地路径”方案最稳妥。
C. 手动下载 GGUF + 本地路径加载(离线 / 慢网络最稳妥方案)
- 在可访问渠道(浏览器、
huggingface-cli或 ModelScope 镜像,见 03 章)下载目标.gguf,例如Qwen3-8B-Q4_K_M.gguf。 - 用
-m/--model指定本地文件(tools/server/README.md参数表):
# Linux / WSL2
./build/bin/llama-server -m /home/user/models/Qwen3-8B-Q4_K_M.gguf --host 0.0.0.0 --port 8080
# Windows 预编译包
llama-server.exe -m models\Qwen3-8B-Q4_K_M.gguf -c 4096
- 走代理时,启动前导出
HTTPS_PROXY/HTTP_PROXY(tools/server/README.md“Running behind a proxy”:export HTTPS_PROXY=http://proxy.example.com:8080,NO_PROXY与回环地址直连)。
D. 本地转 GGUF 与重新量化(官方 tools/quantize/README.md)
# 1) 安装 Python 依赖
python3 -m pip install -r requirements.txt
# 2) HF 模型转 BF16 GGUF(官方示例命令格式)
python convert_hf_to_gguf.py --outfile model-bf16.gguf --outtype bf16 --remote org/model
# 3) 量化为 Q4_K_M(官方新格式命令)
./build/bin/llama-quantize model-bf16.gguf model-Q4_K_M.gguf Q4_K_M
# 旧格式(官方 Quantization Examples 兼容写法,最后一位为线程数)
./llama-quantize input-model-f32.gguf q4_k_m 8
02.4.4 关键配置(参数 / 环境变量表)
下列参数全部来自 tools/server/README.md 与 tools/cli/README.md 自动生成的参数表;带 (env: ...) 的参数也可用同名 LLAMA_ARG_* 环境变量设置。命令行参数优先于环境变量(tools/server/README.md 注释:命令行与环境变量同时设置时,参数优先)。
| 参数 | 含义 | 默认值 / 取值 | 出处 |
|---|---|---|---|
-m, --model FNAME |
本地模型文件路径 | 无 | server/cli README Common params |
-mu, --model-url MODEL_URL |
模型下载 URL | 未使用 | 同上 |
-hf, -hfr, --hf-repo <user>/<model>[:quant] |
Hugging Face 仓库与可选量化档;量化档大小写不敏感,默认 Q4_K_M,找不到则回退仓库第一个文件;可用 --no-mmproj 关闭多模态投影自动下载 |
未使用;默认量化 Q4_K_M |
server/cli README Common params |
-hff, --hf-file FILE |
指定 HF 文件名,覆盖 -hf 中的量化档 |
未使用 | 同上 |
-hft, --hf-token TOKEN |
HF 访问令牌;默认取 HF_TOKEN 环境变量 |
HF_TOKEN |
同上 |
-ngl, --gpu-layers, --n-gpu-layers N |
卸载到显存的最大层数;可取具体层数、auto、all |
auto |
server/cli README Common params |
-sm, --split-mode {none,layer,row,tensor} |
多 GPU 切分方式:none 单卡;layer(默认,分层+KV 流水线);row(按行切权重并行);tensor(权重+KV 并行,实验性) |
layer |
同上 |
-dev, --device <dev1,dev2,..> |
指定卸载设备;none 表示不卸载;--list-devices 列出可用设备 |
README 未声明默认值 | server/cli README Common params |
-mg, --main-gpu INDEX |
主 GPU 编号(split-mode=none 时用哪张卡;row 时用于中间结果与 KV) |
0 |
同上 |
-c, --ctx-size N |
提示上下文长度;0 表示从模型元数据读取 |
0(模型默认) |
server/cli README Common params |
-n, --predict, --n-predict N |
最大生成 token 数;-1 无限 |
-1 |
同上 |
-b, --batch-size N |
逻辑最大批大小 | 2048 |
同上 |
-ub, --ubatch-size N |
物理最大批大小 | 512 |
同上 |
-t, --threads N |
生成阶段 CPU 线程数 | -1(自动) |
同上 |
-tb, --threads-batch N |
提示处理阶段线程数 | 同 --threads |
同上 |
-fa, --flash-attn [on\|off\|auto] |
Flash Attention 开关 | auto |
同上 |
-ctk, --cache-type-k TYPE |
K 缓存类型:f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1 |
f16 |
同上 |
-ctv, --cache-type-v TYPE |
V 缓存类型,取值同上 | f16 |
同上 |
-p, --prompt PROMPT |
起始提示词;系统提示词用 -sys |
无 | cli README Common params |
-f, --file FNAME |
含提示词的文件 | 无 | 同上 |
-sys, --system-prompt PROMPT |
系统提示词(取决于聊天模板是否支持) | 无 | cli README CLI-specific params |
--jinja, --no-jinja |
是否使用 Jinja 聊天模板引擎 | 默认启用 | server README Server-specific params;cli README CLI-specific params |
--chat-template JINJA_TEMPLATE / --chat-template-file FILE |
自定义 Jinja 聊天模板;默认取模型元数据模板 | 模型模板 | 同上 |
--host HOST |
监听地址(逗号分隔多地址,或 .sock Unix 套接字) |
127.0.0.1 |
server README Server-specific params |
--port PORT |
监听端口 | 9931 |
同上 |
-a, --alias STRING |
模型别名(逗号分隔),供 API 使用;GET /v1/models 的 id 默认为模型文件路径 |
文件路径 | 同上 |
-np, --parallel N |
服务器并行槽位数;-1 自动 |
-1 |
同上 |
-cb, --cont-batching, -nocb, --no-cont-batching |
连续批处理(动态批处理) | 默认启用 | 同上 |
--cors-origins ORIGINS |
允许跨域来源;特殊值 localhost 仅放行本地来源 |
*(默认) |
同上 |
--ui, --webui, --no-ui |
是否启用内置 Web UI | 默认启用 | 同上 |
--metrics |
启用 Prometheus 兼容指标端点 | 关闭 | 同上 |
--api-key KEY |
API 访问密钥,可逗号分隔多个;环境变量 LLAMA_API_KEY |
无 | 同上 |
--reasoning-format FORMAT |
思考标签解析:none(保留在 message.content)、deepseek(放入 message.reasoning_content)、deepseek-legacy(两者兼有) |
auto |
同上 |
-rea, --reasoning [on\|off\|auto] |
聊天中是否使用推理 / 思考 | auto(按模板检测) |
同上 |
--temp, --temperature N |
温度 | 0.80 |
server/cli README Sampling params |
--top-k N |
Top-K 采样,0 关闭 |
40 |
同上 |
--top-p N |
Top-P 采样,1.0 关闭 |
0.95 |
同上 |
--min-p N |
Min-P 采样,0.0 关闭 |
0.05 |
同上 |
--presence-penalty N |
重复存在惩罚 | 0.00 |
同上 |
--repeat-penalty N |
重复序列惩罚 | 1.00 |
同上 |
--keep N |
首轮提示词保留 token 数;-1 全部保留 |
0 |
同上 |
--context-shift / --no-context-shift |
无限生成时是否滚动移位上下文(淘汰旧 token);--context-shift 开启滚动,--no-context-shift 关闭 |
默认 disabled(不移位,到达 -c 后停止生成) |
server/cli README 参数表 |
02.4.5 启动
Windows 预编译包(在解压目录下,PowerShell):
# 启动服务器,本地模型,监听 127.0.0.1:9931(默认)
.\llama-server.exe -m models\Qwen3-8B-Q4_K_M.gguf -c 4096
# 指定对外地址与端口、全层卸载到 GPU
.\llama-server.exe -m models\Qwen3-8B-Q4_K_M.gguf --host 0.0.0.0 --port 8080 -ngl 99 -c 4096
WSL2 / Linux 源码编译产物:
# 查看可用设备(官方 --list-devices)
./build/bin/llama-server --list-devices
# CUDA 服务器启动示例(官方 Docker 示例同参数族)
./build/bin/llama-server -m models/Qwen3-8B-Q4_K_M.gguf \
--host 0.0.0.0 --port 8080 \
--n-gpu-layers 99 -c 4096 -fa
# 命令行对话(官方 cli README 模式)
./build/bin/llama-cli -m models/Qwen3-8B-Q4_K_M.gguf --jinja --color -ngl 99 -c 4096
官方 Docker 路线(docs/docker.md、tools/server/README.md Docker 示例):
# CPU 镜像:仅含 llama-server
docker run -p 8080:8080 -v /path/to/models:/models ghcr.io/ggml-org/llama.cpp:server \
-m models/7B/ggml-model.gguf -c 512 --host 0.0.0.0 --port 8080
# CUDA 镜像(CUDA 12 编译),需 --gpus all
docker run -p 8080:8080 -v /path/to/models:/models --gpus all \
ghcr.io/ggml-org/llama.cpp:server-cuda \
-m models/7B/ggml-model.gguf -c 512 --host 0.0.0.0 --port 8080 --n-gpu-layers 99
镜像清单(docs/docker.md):full(cli + completion + 转换/量化工具)、light(cli + completion)、server(仅 llama-server);后缀 -cuda(CUDA 12)、-cuda13、-rocm、-vulkan、-musa、-intel;基础镜像平台为 linux/amd64、linux/arm64,full/light/server 另提供 linux/s390x,部分后端镜像仅 linux/amd64,以 docs/docker.md 清单为准。
02.5 使用方法
02.5.1 启动方式
| 方式 | 命令 / 入口 | 说明 |
|---|---|---|
| 命令行交互 | ./build/bin/llama-cli -m <模型>(Windows:llama-cli.exe) |
--jinja 默认启用;聊天模板默认取自模型元数据(tools/cli/README.md 参数表)。 |
| HTTP 服务器 | ./build/bin/llama-server -m <模型>(Windows:llama-server.exe) |
默认 127.0.0.1:9931;内置 Web UI 默认开启,浏览器访问同一地址。 |
| 统一命令 | llama cli ... / llama serve ... |
官方一键脚本安装后的子命令形式(README Quick start)。 |
| Docker | ghcr.io/ggml-org/llama.cpp:server[-cuda] |
官方 docs/docker.md 镜像。 |
02.5.2 界面 / 命令行操作步骤(带示例)
A. llama-cli 命令行对话(tools/cli/README.md;参数表见 02.4.4)
# 本地模型 + Jinja 模板 + 着色 + 全层 GPU 卸载 + Flash Attention + 8K 上下文
./build/bin/llama-cli \
-m models/Qwen3-8B-Q4_K_M.gguf \
--jinja --color \
-ngl 99 -fa \
-sm row \
-c 8192 \
--system-prompt "You are a concise assistant."
交互常用开关:
| 命令 / 参数 | 作用 | 出处 |
|---|---|---|
-co, --color [on\|off\|auto] |
着色区分提示词与生成内容;默认 auto(输出到终端时启用) |
cli README CLI-specific params |
-st, --single-turn |
单轮对话后退出;首轮已带 --prompt 时不进入交互 |
同上 |
-mli, --multiline-input |
允许多行粘贴 / 输入 | 同上 |
-sysf, --system-prompt-file FNAME |
从文件读取系统提示词 | 同上 |
-o, --output, --output-file FNAME |
输出到文件 | 同上 |
--show-timings, --no-show-timings |
每轮响应后显示耗时统计 | 默认启用 |
--simple-io |
基础 IO,兼容子进程与受限终端 | 同上 |
--server-base URL |
连接已有服务器而不是新启动(示例 http://localhost:9931) |
同上 |
B. llama-server 内置 Web UI 与 HTTP 接口(tools/server/README.md)
- 启动服务器(见 02.4.5)。
- 浏览器打开
http://127.0.0.1:9931/(自定义--port后用对应端口),使用内置 Web UI 对话。 - 其他前端(如 Open WebUI)通过 OpenAI 兼容接口接入:Base URL 填
http://<服务器IP>:<端口>/v1,API Key 任意填写(未启用--api-key时不校验)。 - 对接依据:llama.cpp 服务器提供 OpenAI 兼容chat/completions等路由(tools/server/README.mdFeatures 与 “OpenAI-compatible API Endpoints”);Open WebUI README 明确支持接入任意 OpenAI 兼容 API:https://github.com/open-webui/open-webui。
02.5.3 服务端 API 端点表(tools/server/README.md “API Endpoints”)
| 端点 | 协议兼容性 | 说明 |
|---|---|---|
GET /health(/v1/health 同样可用) |
健康检查 | 模型加载中返回 503 {"error": {"code":503,...}};就绪返回 200 {"status":"ok"} |
POST /completion |
非 OpenAI 兼容 | 给定 prompt 返回续写;OpenAI 客户端请用 /v1/completions |
POST /embedding |
非 OpenAI 兼容 | 文本向量;OpenAI 客户端请用 /v1/embeddings |
GET /v1/models |
OpenAI 兼容 | 已加载模型信息;id 默认 -m 文件路径,可用 --alias 修改 |
POST /v1/completions |
OpenAI 兼容 | 补全接口,支持流式 |
POST /v1/chat/completions |
OpenAI 兼容 | 聊天接口,支持同步 / 流式;支持 response_format(JSON 对象 / JSON Schema)、chat_template_kwargs(如 {"enable_thinking":false})、reasoning_effort、reasoning_format、工具调用 |
POST /v1/responses |
OpenAI 兼容 | Responses API |
POST /v1/embeddings |
OpenAI 兼容 | 文本 / 多模态向量 |
POST /v1/rerank、/v1/reranking |
重排序 | 需 --rerank 启用 |
--metrics 开启 |
Prometheus | 指标监控端点 |
02.5.4 端到端示例(输入 → 命令 → 输出)
场景:RTX 3070 8GB,WSL2 源码编译 CUDA 版,本地 GGUF Qwen3-8B-Q4_K_M.gguf(体积见 03 章),启动 OpenAI 兼容服务器并完成一次对话。
第 1 步:启动服务器
cd ~/llama.cpp
./build/bin/llama-server \
-m ~/models/Qwen3-8B-Q4_K_M.gguf \
--host 0.0.0.0 --port 8080 \
-ngl 99 -c 8192 -fa \
--jinja --alias qwen3-8b
启动日志关键行(结构示意,tools/server/README.md 默认参数):监听 http://0.0.0.0:8080,模型全层卸载,上下文 8192,Web UI 开启。
第 2 步:健康检查
curl http://localhost:8080/health
# 就绪返回:{"status": "ok"}
第 3 步:OpenAI 兼容聊天请求(tools/server/README.md 官方 curl 示例格式)
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer no-key" \
-d '{
"model": "qwen3-8b",
"messages": [
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "用三句话介绍你自己。"}
]
}'
返回(OpenAI 兼容结构,字段说明见 /v1/chat/completions 文档;content 为模型回答):
{
"object": "chat.completion",
"model": "qwen3-8b",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "我是基于 Qwen3 系列的本地大模型,运行在 llama.cpp 推理引擎上。\n我的回答由本地显卡完成计算,不上传对话内容到云端。\n你可以直接在命令行或浏览器里向我提问。"
},
"finish_reason": "stop"
}
],
"usage": {"prompt_tokens": 24, "completion_tokens": 66, "total_tokens": 90}
}
Python openai SDK 接入(官方 /v1/chat/completions 文档示例,Base URL 替换为本机地址):
import openai
client = openai.OpenAI(
base_url="http://localhost:8080/v1",
api_key="sk-no-key-required"
)
completion = client.chat.completions.create(
model="qwen3-8b",
messages=[{"role": "user", "content": "用三句话介绍你自己。"}]
)
print(completion.choices[0].message.content)
02.6 常见坑(现象 + 原因 + 解决)
-
现象:CUDA 编译时报
nvcc warning : Cannot find valid GPU for '-arch=native', default arch is used,或编译产物只能用 CPU。 - 原因:docs/build.md“Override Compute Capability Specifications” 指出,nvcc无法探测到本机 GPU 时会回退默认架构;非原生机器 / 多卡混合场景需要显式指定架构。 - 解决:按官方方式指定-DCMAKE_CUDA_ARCHITECTURES="86;89"(RTX 3070=86、RTX 4090=89);或-DGGML_NATIVE=OFF做覆盖全架构的非原生构建。 -
现象:
llama-server/llama-cli启动后全程跑在 CPU,生成很慢。 - 原因:使用了 CPU 版压缩包;或-ngl未设置 / 被-dev none限制;CUDA 后端未编译进二进制;WSL2 内nvidia-smi不可用。 - 解决:核对下载的是bin-win-cuda-12.4-x64.zip(或源码-DGGML_CUDA=ON编译);先执行--list-devices查看设备;启动时加-ngl 99(全部层卸载);WSL2 先确认nvidia-smi正常。 -
现象:对话输出乱码、角色标记错乱、系统提示词不生效。 - 原因:模型自带聊天模板未被正确使用;
/v1/chat/completions要求模型具备受支持的聊天模板(tools/server/README.md提示:不支持的模型将默认使用 ChatML 模板)。 - 解决:保持--jinja默认启用;必要时用--chat-template/--chat-template-file指定模板;模板支持清单参考官方 Wiki:https://github.com/ggml-org/llama.cpp/wiki/Templates-supported-by-llama_chat_apply_template(tools/server/README.md内链)。 -
现象:端口
9931(或自定义端口)被占用,服务器启动失败。 - 原因:本机已有其他进程占用端口;或上一个llama-server实例未退出。 - 解决:--port指定其他端口(如8080);排查占用进程;检查--host绑定地址是否与其他服务冲突。 -
现象:
-hf拉取模型超时、中断或报网络错误。 - 原因:Hugging Face 在国内网络访问不稳定;代理未配置。 - 解决:优先“手动下载 GGUF +-m本地路径”(02.4.3 方案 C);或用MODEL_ENDPOINT指向兼容 HF API 的镜像;tools/server/README.md“Running behind a proxy” 要求下载模型前先导出HTTP_PROXY与HTTPS_PROXY(NO_PROXY与回环地址直连)。 -
现象:
llama-quantize阶段内存不足、进程被杀,或磁盘写满。 - 原因:官方 “Memory/Disk Requirements” 说明:模型当前整体载入内存,内存与磁盘需求相同;原始 F32/BF16 体积很大(官方参考 Llama-3.1-8B 原始 32.1GB)。 - 解决:留出与原始模型相当的 RAM 与磁盘;优先从已有 16bit 模型量化;不要反复对已量化文件再量化(--allow-requantize会明显损失质量,tools/quantize/README.md已警告);需要更优质量时配合--imatrix重要性矩阵。
02.7 本节来源清单
验证方式:
curl 200= 命令行 HTTP 状态码核验;web_fetch / 源码核对= 已下载官方原始文件逐条核对;general_search= 搜索索引佐证。核验日期 2026-10-25。
| # | URL | 用途 | 验证方式 |
|---|---|---|---|
| 1 | https://github.com/ggml-org/llama.cpp | 官方仓库主页、README(定位、后端、截图、一键脚本、Docker 说明) | curl 200;README 经 https://raw.githubusercontent.com/ggml-org/llama.cpp/master/README.md 下载核对 |
| 2 | https://github.com/ggml-org/llama.cpp/blob/master/LICENSE | MIT 许可证出处 | curl 200;raw 文件 https://raw.githubusercontent.com/ggml-org/llama.cpp/master/LICENSE web_fetch 核对为 MIT License |
| 3 | https://raw.githubusercontent.com/ggml-org/llama.cpp/master/LICENSE | LICENSE 原始文件 | web_fetch 实际读取 |
| 4 | https://github.com/ggml-org/llama.cpp/blob/master/docs/build.md | CPU/CUDA 构建命令、CMAKE_CUDA_ARCHITECTURES、RTX 3070=8.6 / RTX 4090=8.9、GGML_NATIVE、OpenSSL |
curl 200,已下载 docs/build.md 逐条核对 |
| 5 | https://github.com/ggml-org/llama.cpp/blob/master/docs/models.md | -hf 用法、MODEL_ENDPOINT、GGUF 格式、HF GGUF 目录 |
curl 200,已下载核对 |
| 6 | https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md | 服务器功能、端点、默认 127.0.0.1:9931、参数表、构建产物路径、Docker 示例、代理说明、OpenAI 兼容端点 |
curl 200,已下载核对(参数表逐条引用) |
| 7 | https://github.com/ggml-org/llama.cpp/blob/master/tools/cli/README.md | 命令行工具参数、--jinja、--color、系统提示词、单轮 / 多行等 |
curl 200,已下载核对 |
| 8 | https://github.com/ggml-org/llama.cpp/blob/master/tools/quantize/README.md | 量化工具用法、命令格式、选项、内存/磁盘要求、量化档体积参考表 | curl 200,已下载核对 |
| 9 | https://github.com/ggml-org/llama.cpp/blob/master/docs/docker.md | Docker 镜像名 :full/:light/:server 及 -cuda/-rocm/-vulkan 后缀、平台 |
curl 200,已下载核对 |
| 10 | https://github.com/ggml-org/llama.cpp/releases | 官方发布页(Release v* / Nightly b* 分类) |
curl 200 |
| 11 | https://github.com/ggml-org/llama.cpp/releases/tag/v0.7.0 | 最新稳定 release 版本号与日期(2026-10-15) | curl 200,页面 datetime 核对 |
| 12 | https://github.com/ggml-org/llama.cpp/releases/tag/b11874 | 最新 Nightly 标签(2026-10-25)与资产清单 | curl 200,expanded_assets/b11874 HTML 解析核对 |
| 13 | https://github.com/ggml-org/llama.cpp/releases/download/b11874/llama-b11874-bin-win-cuda-12.4-x64.zip | Windows CUDA 12.4 预编译包直链 | curl 200(HEAD 跟随重定向) |
| 14 | https://github.com/ggml-org/llama.cpp/releases/download/b11874/llama-b11874-bin-win-cpu-x64.zip | Windows CPU 预编译包备选 | 资产清单 HTML 核对(同 b11874 页面) |
| 15 | https://github.com/ggml-org/llama.cpp/releases/download/b11874/llama-b11874-bin-ubuntu-cuda-12.8-x64.tar.gz | Ubuntu CUDA 预编译包备选 | 资产清单 HTML 核对 |
| 16 | https://github.com/ggml-org/llama.cpp/blob/master/.github/workflows/release.yml | 预编译包打包内容、CMake 目标与后端 DLL 组装方式 | curl 200,已下载 1768 行工作流核对 |
| 17 | https://github.com/ggml-org/llama.cpp/blob/master/tools/server/CMakeLists.txt | llama-server 可执行目标名 |
curl 200,源码 add_executable(llama-server main.cpp) 核对 |
| 18 | https://github.com/ggml-org/llama.cpp/blob/master/tools/cli/CMakeLists.txt | llama-cli 可执行目标名 |
curl 200,源码 add_executable(llama-cli main.cpp) 核对 |
| 19 | https://github.com/ggml-org/llama.cpp/blob/master/tools/quantize/CMakeLists.txt | llama-quantize 可执行目标名 |
curl 200,源码 add_executable(llama-quantize main.cpp) 核对 |
| 20 | https://llama.app | 官方安装引导站 | curl 200 |
| 21 | https://llama.app/install.sh | Linux 一键安装脚本 | curl 200,已下载 215 行源码核对(自动探测 CUDA/ROCm/Vulkan/CPU/Metal) |
| 22 | https://llama.app/install.ps1 | Windows PowerShell 一键安装脚本 | curl 200(README Quick start 引用) |
| 23 | https://huggingface.co/models?library=gguf&sort=trending | HF 上 GGUF 模型目录(docs/models.md 官方链接) |
curl 200 |
| 24 | https://developer.nvidia.com/cuda-toolkit | CUDA Toolkit 官方下载入口 | curl 200 |
| 25 | https://developer.nvidia.com/cuda-gpus | 各型号 GPU 计算能力官方对照表(docs/build.md 引用) |
curl 200 |
| 26 | https://github.com/open-webui/open-webui | 第三方前端“支持任意 OpenAI 兼容 API”能力依据 | curl 200,README 第 13、28 行核对 |
| 27 | https://github.com/ggml-org/llama.cpp/wiki/Templates-supported-by-llama_chat_apply_template | 受支持聊天模板清单(server README 内链) | curl 200(2026-10-25 重定向跟随核验) |
| 28 | https://opensource.org/licenses/MIT | README 徽章指向的 MIT 许可证文本 | README 徽章链接 |
| 29 | https://hf-mirror.com | 第三方 Hugging Face 镜像(非官方,仅作 -hf 备选说明) |
curl 200;站点性质已在正文标注为第三方 |
| 30 | https://huggingface.co/ggml-org/Qwen3.5-0.8B-GGUF | README Quick start -hf 示例仓库 |
curl 200(2026-10-25 核验) |
03. Qwen3 系列(官方 GGUF 量化版)—— 阿里开源稠密 + MoE 大模型,本地一键可跑
适用环境:Windows 10/11 原生、Windows 10/11 + WSL2(Ubuntu 24.04)、RTX 3070 8GB / RTX 4090 24GB、Linux 云服务器;运行方式以 01 章 Ollama 与 02 章 llama.cpp 为本地推理框架。 信息口径:模型规格、许可证、量化文件体积、采样参数、最低框架版本均来自 Qwen 官方 GitHub README、Hugging Face 官方模型仓库与模型卡、
config.json、官方 readthedocs 文档;核验日期 2026-10-25。
03.1 项目定位与基本信息
| 项目 | 内容 |
|---|---|
| 一句话定位 | 阿里通义千问 Qwen 第三代开源大模型系列(稠密模型 0.6B–32B、MoE 30B-A3B / 235B-A22B),原生支持“思考模式 / 非思考模式”无缝切换,官方同步发布 GGUF 量化权重,可由 llama.cpp、Ollama、LM Studio 等框架在本地显卡上运行。 |
| 开源许可 | Apache 2.0。出处 1:官方 GitHub README “License Agreement”:“All our open-weight models are licensed under Apache 2.0. You can find the license files in the respective Hugging Face repositories.”(https://github.com/QwenLM/Qwen3)。出处 2:基座模型仓库 LICENSE https://huggingface.co/Qwen/Qwen3-8B/raw/main/LICENSE(实际打开核对为 Apache-2.0);官方 GGUF 仓库 LICENSE https://huggingface.co/Qwen/Qwen3-8B-GGUF/raw/main/LICENSE(同样 Apache-2.0,模型卡 frontmatter license: apache-2.0)。 |
| 官方 GitHub 仓库 | https://github.com/QwenLM/Qwen3 |
| 官方文档站 | https://qwen.readthedocs.io/en/latest/ (英文);中文 https://qwen.readthedocs.io/zh-cn/latest/ 。本地运行指南:https://qwen.readthedocs.io/en/latest/run_locally/llama.cpp.html、https://qwen.readthedocs.io/en/latest/run_locally/ollama.html。 |
| Hugging Face 组织 | https://huggingface.co/Qwen ;Qwen3 合集 https://huggingface.co/collections/Qwen/qwen3-67dd247413f0e2e4f653967f 。 |
| ModelScope(魔搭)组织 | https://modelscope.cn/organization/qwen ;官方 README 明确建议中国大陆用户优先使用 ModelScope 下载。 |
| 论文 / 博客 | 技术报告 arXiv:2505.09388 https://arxiv.org/abs/2505.09388 ;官方博客 https://qwenlm.github.io/blog/qwen3/ 。 |
| 版本脉络 | Qwen3(Qwen3-2504):2025-04-29 发布,稠密 0.6B / 1.7B / 4B / 8B / 14B / 32B,MoE 30B-A3B / 235B-A22B(GitHub README News 2025.04.29)。Qwen3-2507:更新 235B-A22B、30B-A3B、4B 的 Instruct / Thinking 2507 变体,支持 256K 上下文、最长可扩展至 100 万 token(GitHub README “Qwen3-2507” 节与 News 2025.07–2025.08)。本章本地部署以 Qwen3-2504 官方 GGUF 为主。 |
| 框架最低版本 | llama.cpp ≥ b5401 完整支持 Qwen3(GitHub README “llama.cpp” 节);Ollama ≥ v0.9.0(GitHub README “Ollama” 节);Transformers ≥ 4.51.0(GitHub README “Run Qwen3 / Transformers” 节)。 |
03.2 官方图片
下图为 Qwen3 官方 GitHub README 顶部 Logo(非 AI 生成、非第三方图)。

- 图片来源 URL:
https://qianwen-res.oss-accelerate-overseas.aliyuncs.com/logo_qwen3.png(官方 README 第 4 行内嵌 Logo,2026-10-25curl -L下载)。 - 本地路径:
https://zhouruolin.cn/upload/03_qwen3_logo.png;file校验:PNG image data, 3944 x 1555, 8-bit/color RGBA,416,907 字节(>20KB)。
03.3 环境要求
框架与系统要求以 01 章 Ollama、02 章 llama.cpp 为准;本表仅列出 Qwen3 模型侧要求与本地显存/磁盘选型依据。
| 类别 | 官方要求 / 说明 | 出处 |
|---|---|---|
| 操作系统 | Windows 10/11 原生、WSL2(Ubuntu 24.04)、Linux 均可;经 Ollama 或 llama.cpp 运行 GGUF。 | GitHub README “llama.cpp”“Ollama” 节;01 / 02 章官方文档 |
| GPU 与显存 | 模型权重体积 + KV 缓存 + 上下文共同占用显存;放不下的层可由框架分层卸载到 CPU(llama.cpp -ngl、Ollama 自动调度)。8GB 与 24GB 选型见 03.4.3 量化档位表。 |
docs/models.md(llama.cpp -ngl);Ollama FAQ 并发与显存说明;本章 03.4.3 表数据来自 HF 官方仓库文件体积 |
| 内存 | CPU 推理需 ≥ 模型权重体积;KV 缓存随上下文长度与并行数扩张;官方基准(不同上下文下的内存占用与吞吐)见 https://qwen.readthedocs.io/en/latest/getting_started/speed_benchmark.html。 |
GitHub README “Performance” 节链接;官方基准页(HTTP 200 已核验) |
| 框架依赖 | Ollama v0.9.0+;或 llama.cpp ≥ b5401;Transformers ≥ 4.51.0(非 GGUF 路径)。 | GitHub README 各框架小节 |
| 磁盘空间 | 单个 GGUF 文件体积见 03.4.3 表;235B-A22B 为多文件分片,合计上百 GB,不适合个人单卡本地部署。 | HF 官方仓库 API 文件体积(本章逐条核验) |
| 上下文 | 原生 32,768 token;YaRN 可扩展至 131,072 token;config.json 的 max_position_embeddings 为 40,960(预留 32,768 输出 + 8,192 常规提示词)。 |
Qwen3-8B 模型卡 “Context Length” 节;config.json 实测 |
官方模型规格一览(参数量、层数、注意力头、隐藏层来自各模型卡 README 与 HF config.json,2026-10-25 逐条抓取):
| 模型 | 参数量 | 层数 | Q 头 / KV 头 | 隐藏层维度 | 类型 | 原生上下文 |
|---|---|---|---|---|---|---|
| Qwen3-0.6B | 0.6B | 28 | 16 / 8 | 1024 | Dense | 32,768(YaRN 131,072) |
| Qwen3-1.7B | 1.7B | 28 | 16 / 8 | 2048 | Dense | 32,768(YaRN 131,072) |
| Qwen3-4B | 4.0B | 36 | 32 / 8 | 2560 | Dense | 32,768(YaRN 131,072) |
| Qwen3-8B | 8.2B | 36 | 32 / 8 | 4096 | Dense | 32,768(YaRN 131,072) |
| Qwen3-14B | 14.8B | 40 | 40 / 8 | 5120 | Dense | 32,768(YaRN 131,072) |
| Qwen3-32B | 32.8B | 64 | 64 / 8 | 5120 | Dense | 32,768(YaRN 131,072) |
| Qwen3-30B-A3B | 30.5B 总 / 3.3B 激活 | 48 | 32 / 4 | 2048 | MoE,128 专家 / 每 token 激活 8 | 32,768(YaRN 131,072) |
| Qwen3-235B-A22B | 235B 总 / 22B 激活 | — | — | — | MoE | 256K(2507 系列)/ 131,072(2504 系列) |
03.4 最详细部署步骤(Ollama 与 llama.cpp 两条路线,Windows 与 WSL2 通用)
03.4.1 依赖安装
- 先完成框架安装(任选其一,详细步骤见对应章节):
- Ollama 路线:按 01.4.2 完成 Windows 安装包或 WSL2 一键脚本安装,版本 ≥ v0.9.0。
- llama.cpp 路线:按 02.4.2 完成 Windows 预编译 CUDA 包解压,或 WSL2 源码编译(CUDA 架构 RTX 3070=
86、RTX 4090=89),版本 ≥ b5401。 - 可选:Python 环境用于
huggingface-cli/modelscope下载 GGUF:
# Ubuntu / WSL2
sudo apt-get install -y python3 python3-pip
pip install huggingface_hub modelscope
03.4.2 模型 / 权重下载(官方仓库 + 国内加速方案)
A. 官方 Hugging Face 仓库清单(均已核验 HTTP 200)
| 基座模型 | 官方 GGUF 仓库 | 可用量化档 |
|---|---|---|
| Qwen3-0.6B | https://huggingface.co/Qwen/Qwen3-0.6B-GGUF |
Q8_0(仅一档) |
| Qwen3-1.7B | https://huggingface.co/Qwen/Qwen3-1.7B-GGUF |
Q8_0(仅一档) |
| Qwen3-4B | https://huggingface.co/Qwen/Qwen3-4B-GGUF |
Q4_K_M / Q5_0 / Q5_K_M / Q6_K / Q8_0 |
| Qwen3-8B | https://huggingface.co/Qwen/Qwen3-8B-GGUF |
Q4_K_M / Q5_0 / Q5_K_M / Q6_K / Q8_0 |
| Qwen3-14B | https://huggingface.co/Qwen/Qwen3-14B-GGUF |
Q4_K_M / Q5_0 / Q5_K_M / Q6_K / Q8_0 |
| Qwen3-32B | https://huggingface.co/Qwen/Qwen3-32B-GGUF |
Q4_K_M / Q5_0 / Q5_K_M / Q6_K / Q8_0 |
| Qwen3-30B-A3B | https://huggingface.co/Qwen/Qwen3-30B-A3B-GGUF |
Q4_K_M / Q5_0 / Q5_K_M / Q6_K / Q8_0 |
| Qwen3-235B-A22B | https://huggingface.co/Qwen/Qwen3-235B-A22B-GGUF |
Q4_K_M / Q5_0 / Q5_K_M / Q6_K / Q8_0(多分片) |
说明:以上 GGUF 仓库均为 Qwen 官方发布(模型卡
base_model: Qwen/Qwen3-*、license: apache-2.0),不是 unsloth 等第三方社区量化;0.6B / 1.7B 官方仅提供 Q8_0 一档。
B. llama.cpp 直连 Hugging Face(官方 README 命令格式)
# 自动拉取指定量化档;<user>/<model>:<quant>,量化档大小写不敏感
./build/bin/llama-cli -hf Qwen/Qwen3-8B-GGUF:Q8_0 --jinja --color -ngl 99 -fa \
-sm row --temp 0.6 --top-k 20 --top-p 0.95 --min-p 0 \
-c 40960 -n 32768 --no-context-shift
C. 国内加速方案 1:ModelScope 镜像(官方 README 推荐中国大陆使用)
ModelScope 已镜像上述官方 GGUF 仓库,文件体积与 HF 一致(已逐仓库核验 4B / 8B / 14B / 32B / 30B-A3B 文件大小一致)。
# 1) 安装 ModelScope SDK(官方 README:pip install modelscope);
# 如需新版轻量 hub 客户端,可另装 pip install modelscope-hub(CLI 为 ms / modelscope)
pip install modelscope
# 2a) 旧版 SDK CLI(官方文档 Download-Model 页:--model 仓库 ID,--include 文件名通配,
# --cache_dir 本地缓存目录)
modelscope download --model Qwen/Qwen3-8B-GGUF \
--include 'Qwen3-8B-Q4_K_M.gguf' --cache_dir ./qwen3-gguf
# 2b) 新版 modelscope-hub CLI(官方 PyPI 客户端:位置参数仓库 ID 与文件名,
# --local-dir 直存目录、--include 通配过滤;--cache-dir 覆盖缓存目录)
modelscope download Qwen/Qwen3-8B-GGUF Qwen3-8B-Q4_K_M.gguf \
--local-dir ./qwen3-gguf
# 3) SDK 方式下载整个仓库(官方 SDK snapshot_download,local_dir 直存目录;
# 参数签名见已安装 modelscope 包 modelscope/hub/snapshot_download.py)
python3 - <<'PY'
from modelscope import snapshot_download
model_dir = snapshot_download('Qwen/Qwen3-8B-GGUF', local_dir='./qwen3-gguf')
print(model_dir)
PY
ModelScope 镜像仓库直链(浏览器可直接下载单个文件):
| 模型 | ModelScope GGUF 仓库 |
|---|---|
| Qwen3-4B-GGUF | https://modelscope.cn/models/Qwen/Qwen3-4B-GGUF |
| Qwen3-8B-GGUF | https://modelscope.cn/models/Qwen/Qwen3-8B-GGUF |
| Qwen3-14B-GGUF | https://modelscope.cn/models/Qwen/Qwen3-14B-GGUF |
| Qwen3-32B-GGUF | https://modelscope.cn/models/Qwen/Qwen3-32B-GGUF |
| Qwen3-30B-A3B-GGUF | https://modelscope.cn/models/Qwen/Qwen3-30B-A3B-GGUF |
D. 国内加速方案 2:huggingface-cli + HF_ENDPOINT 镜像
HF_ENDPOINT 是 huggingface_hub 读取的端点环境变量(源码 src/huggingface_hub/constants.py:ENDPOINT = os.getenv("HF_ENDPOINT", _HF_DEFAULT_ENDPOINT));hf-mirror.com 为第三方 HF 镜像站(非 Qwen / HF 官方)。
# 经镜像端点下载指定 GGUF(官方 Qwen 文档命令格式:huggingface-cli download <repo> <file> --local-dir <dir>)
HF_ENDPOINT=https://hf-mirror.com huggingface-cli download \
Qwen/Qwen3-8B-GGUF Qwen3-8B-Q4_K_M.gguf --local-dir ./qwen3-gguf
下载完成后用本地路径 -m 加载(llama.cpp),或按 01.4.3 方案 C 导入 Ollama。
E. Ollama 模型库直拉(官方 README “Ollama” 节;标签以 https://ollama.com/library/qwen3/tags 为准)
ollama serve
ollama run qwen3:8b
# 可选尺寸后缀::0.6b :1.7b :4b :8b :14b :32b :30b-a3b
03.4.3 量化档位与显存选型表(RTX 3070 8GB / RTX 4090 24GB)
文件体积来自 Hugging Face 官方 GGUF 仓库 API 实测(2026-10-25,单位 GB,按字节 ÷ 10⁹ 计)。注意:表内仅为权重体积,不含 KV 缓存与上下文占用;实际显存需在此基础上预留上下文余量。
| 模型 | Q4_K_M | Q5_0 | Q5_K_M | Q6_K | Q8_0 |
|---|---|---|---|---|---|
| Qwen3-0.6B | — | — | — | — | 0.64 |
| Qwen3-1.7B | — | — | — | — | 1.83 |
| Qwen3-4B | 2.50 | 2.82 | 2.89 | 3.31 | 4.28 |
| Qwen3-8B | 5.03 | 5.72 | 5.85 | 6.73 | 8.71 |
| Qwen3-14B | 9.00 | 10.26 | 10.51 | 12.12 | 15.70 |
| Qwen3-32B | 19.76 | 22.64 | 23.21 | 26.88 | 34.82 |
| Qwen3-30B-A3B | 18.56 | 21.08 | 21.73 | 25.09 | 32.48 |
| Qwen3-235B-A22B | 分片合计 ≈142.2 | ≈161.9 | ≈166.8 | ≈193.0 | ≈249.9 |
RTX 3070 8GB 选型建议(权重体积 + 小上下文余量):
| 推荐度 | 模型 / 档位 | 权重体积 | 说明 |
|---|---|---|---|
| 宽裕 | Qwen3-4B-Q4_K_M | 2.50 GB | 可开较大上下文,速度快。 |
| 可行 | Qwen3-8B-Q4_K_M | 5.03 GB | 建议 -c 4096~8192 控制上下文;Q6_K 6.73GB 紧张,Q8_0 8.71GB 超出 8GB 显存。 |
| 轻量备用 | Qwen3-1.7B-Q8_0(1.83GB)、Qwen3-0.6B-Q8_0(0.64GB) | 小 | 内存 / 显存紧张或需要极高吞吐时使用。 |
| 不推荐 | Qwen3-14B-Q4_K_M(9.00GB)及以上 | >8GB | 权重已超显存,只能分层卸载到 CPU,速度明显下降。 |
RTX 4090 24GB 选型建议:
| 推荐度 | 模型 / 档位 | 权重体积 | 说明 |
|---|---|---|---|
| 宽裕 | Qwen3-14B-Q8_0 | 15.70 GB | 质量优先;Q6_K 12.12GB 更省显存。 |
| 可行 | Qwen3-32B-Q4_K_M | 19.76 GB | 需为 KV 缓存预留余量;Q5_K_M 23.21GB 临界,Q6_K 26.88GB 超出。 |
| 可行 | Qwen3-30B-A3B-Q4_K_M | 18.56 GB | MoE 仅激活 3.3B 参数,生成速度快;Q5_K_M 21.73GB 临界,Q6_K 25.09GB 超出。 |
| 宽裕 | Qwen3-8B-Q8_0 | 8.71 GB | 单卡余量充足,可长上下文。 |
03.4.4 关键配置(采样参数、上下文、思考模式)
官方推荐采样参数(Qwen3-8B 模型卡 “Best Practices” 节,2026-10-25 核对):
| 模式 | 温度 temp |
top_p |
top_k |
min_p |
备注 |
|---|---|---|---|---|---|
思考模式(默认 enable_thinking=True) |
0.6 | 0.95 | 20 | 0 | 禁止使用贪心解码(greedy),否则可能质量下降、陷入重复死循环。 |
非思考模式(enable_thinking=False) |
0.7 | 0.8 | 20 | 0 | 对齐 Qwen2.5-Instruct 体验。 |
其他官方建议:大多数查询输出长度建议 32,768 token;数学 / 编程竞赛等复杂问题 benchmark 可设到 38,912 token。
思考模式开关(模型卡 “Switching Between Thinking and Non-Thinking Mode” 节):
| 运行环境 | 开启 / 关闭方式 | 说明 |
|---|---|---|
| Transformers | 模板参数 enable_thinking=True(默认)/ False |
tokenizer.apply_chat_template(..., enable_thinking=False) |
| 提示词软开关 | 在系统或用户消息中加入 /think 或 /no_think |
多轮对话以最近一条指令为准;enable_thinking=False 时软开关失效。 |
| Ollama(Qwen3-2504) | REPL 内 /set think、/set nothink |
官方 README “Ollama” 节。 |
| llama.cpp 服务端 | ① 解析开关:--reasoning-format deepseek(思考内容写入 message.reasoning_content)、none(不解析);② 实际关闭思考:在 /v1/chat/completions 请求体传 "chat_template_kwargs": {"enable_thinking": false},或启动时 --chat-template-kwargs '{"enable_thinking":false}';提示词中加 /no_think 同样有效 |
tools/server/README.md 参数表与请求体 chat_template_kwargs 说明;官方 Qwen README llama-server 命令使用 --reasoning-format deepseek。 |
上下文与长文本:
| 配置项 | 取值 / 说明 | 出处 |
|---|---|---|
| 原生上下文 | 32,768 token | 各模型卡 “Context Length” |
| YaRN 扩展 | 131,072 token;官方 Qwen readthedocs 命令:-c 131072 --rope-scaling yarn --rope-scale 4 --yarn-orig-ctx 32768 |
模型卡 “Processing long texts”;https://qwen.readthedocs.io/en/latest/run_locally/llama.cpp.html |
config.json max_position_embeddings |
40,960(32,768 输出 + 8,192 提示词) | Qwen3-8B 模型卡;config.json 实测 |
| llama.cpp 上下文参数 | -c <n>(上下文长度)、-n <n>(最大生成长度)、--no-context-shift(关闭滚动移位,到达 -c 后停止) |
02 章 02.4.4 参数表;官方 Qwen README 命令示例 |
| Ollama 上下文 | REPL /set parameter num_ctx 40960、/set parameter num_predict 32768;API 传 options.num_ctx |
官方 README “Ollama” 节;01 章 01.4.4 |
官方注意:Ollama 默认
num_ctx=2048、num_predict=-1,对 Qwen3 偏小,可能影响体验;建议按模型能力手动设置(README “Ollama” Note 节)。
03.4.5 启动
A. llama.cpp 命令行(官方 README 命令,Qwen3-8B-GGUF:Q8_0)
./build/bin/llama-cli -hf Qwen/Qwen3-8B-GGUF:Q8_0 \
--jinja --color -ngl 99 -fa -sm row \
--temp 0.6 --top-k 20 --top-p 0.95 --min-p 0 \
-c 40960 -n 32768 --no-context-shift
# Ctrl+C 退出
B. llama-server(官方 README 命令,端口 8080)
./build/bin/llama-server -hf Qwen/Qwen3-8B-GGUF:Q8_0 \
--jinja --reasoning-format deepseek \
-ngl 99 -fa -sm row \
--temp 0.6 --top-k 20 --top-p 0.95 --min-p 0 \
-c 40960 -n 32768 --no-context-shift \
--port 8080
- 内置 Web UI:
http://localhost:8080 - OpenAI 兼容 API:
http://localhost:8080/v1
C. Ollama(官方 README 命令)
ollama serve
ollama run qwen3:8b
# 进入 REPL 后:
# /set parameter num_ctx 40960
# /set parameter num_predict 32768
# /set think # 开启思考(Qwen3-2504 默认即开启)
# /set nothink # 关闭思考
# /bye # 退出
- OpenAI 兼容 API:
http://localhost:11434/v1/(使用前先ollama run qwen3:8b把模型加载准备好,官方 README Note)。
03.5 使用方法
03.5.1 启动方式
| 框架 | 入口 | 默认端口 / 界面 | 出处 |
|---|---|---|---|
| Ollama | ollama run qwen3:8b |
命令行 REPL;API 127.0.0.1:11434 |
官方 README “Ollama” 节;01 章 |
| llama.cpp CLI | ./llama-cli -hf Qwen/Qwen3-8B-GGUF:Q8_0 ... |
终端交互 | 官方 README “llama.cpp” 节;02 章 |
| llama.cpp Server | ./llama-server ... --port 8080 |
内置 Web UI http://localhost:8080;OpenAI 兼容 /v1 |
官方 README;tools/server/README.md |
| LM Studio | 直接打开官方 GGUF 文件 | 图形界面 | 官方 README “LMStudio” 节(https://lmstudio.ai/) |
03.5.2 命令行操作步骤(以 Ollama 为例)
# 1. 启动服务(后台常驻,使用期间不要退出)
ollama serve
# 2. 拉取并进入 Qwen3-8B
ollama run qwen3:8b
# 3. REPL 内常用命令(官方 README “Ollama” 节)
>>> /set parameter num_ctx 40960 # 设置上下文长度
>>> /set parameter num_predict 32768 # 设置最大生成长度
>>> /set think # 开启思考模式
>>> /set nothink # 关闭思考模式
>>> /bye # 退出会话
03.5.3 参数说明表(Qwen3 官方推荐 + 框架常用开关)
| 参数 / 指令 | 作用 | 官方推荐取值 / 默认 | 出处 |
|---|---|---|---|
--jinja |
使用模型内嵌 Jinja 聊天模板 | llama.cpp 默认启用;官方 Qwen 命令显式传入 | tools/cli/README.md;官方 README |
--reasoning-format deepseek |
将思考内容解析到 message.reasoning_content |
官方 Qwen 服务端命令使用 deepseek |
tools/server/README.md;官方 README |
-ngl 99 |
全部层卸载到 GPU | 官方示例固定 99 |
官方 README llama.cpp 命令 |
-fa |
开启 Flash Attention | 官方示例显式传入 | 官方 README;02 章参数表 |
-sm row |
多 GPU 按行切分并行 | 官方示例固定 row(单卡不影响结果) |
官方 README;02 章参数表 |
--temp 0.6 |
思考模式温度 | 0.6(思考)/ 0.7(非思考) | Qwen3-8B 模型卡 Best Practices |
--top-p 0.95 |
Top-P | 0.95(思考)/ 0.8(非思考) | 同上 |
--top-k 20 |
Top-K | 20 | 同上 |
--min-p 0 |
Min-P 关闭 | 0 | 同上 |
-c 40960 |
上下文长度 | 官方示例 40960;RTX 3070 建议先降到 4096–8192 | 官方 README 命令;本章 03.4.3 选型 |
-n 32768 |
最大生成长度 | 32768 | 官方 README 命令;模型卡输出长度建议 |
--no-context-shift |
关闭上下文滚动移位 | 官方命令显式加入 | 官方 README;02 章参数表 |
Ollama /set think / /set nothink |
切换思考模式 | 2504 模型默认开启 | 官方 README “Ollama” 节 |
Ollama /set parameter num_ctx <n> |
当前会话上下文长度 | 官方示例 40960 | 官方 README;01 章 |
Ollama /set parameter num_predict <n> |
当前会话最大生成长度 | 官方示例 32768 | 官方 README |
03.5.4 端到端示例(输入 → 命令 → 输出)
场景:RTX 3070 8GB,WSL2 内 llama.cpp 源码编译 CUDA 版,ModelScope 下载 Qwen3-8B-Q4_K_M.gguf,启动服务并完成一次非思考模式对话。
第 1 步:下载模型(ModelScope,新版 hub CLI 语法)
modelscope download Qwen/Qwen3-8B-GGUF Qwen3-8B-Q4_K_M.gguf \
--local-dir ~/models/qwen3-gguf
# 旧版 SDK CLI 等价写法:
# modelscope download --model Qwen/Qwen3-8B-GGUF \
# --include 'Qwen3-8B-Q4_K_M.gguf' --cache_dir ~/models/qwen3-gguf
第 2 步:启动 llama-server(8GB 卡收窄上下文,关闭思考解析)
cd ~/llama.cpp
./build/bin/llama-server \
-m ~/models/qwen3-gguf/Qwen3-8B-Q4_K_M.gguf \
--host 0.0.0.0 --port 8080 \
-ngl 99 -fa --jinja \
-c 8192 -n 4096 --no-context-shift \
--reasoning-format none
第 3 步:健康检查
curl http://localhost:8080/health
# 就绪:{"status": "ok"}
第 4 步:OpenAI 兼容请求(输入 → 命令)
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer no-key" \
-d '{
"model": "qwen3-8b",
"messages": [
{"role": "system", "content": "你是简洁的中文助手。"},
{"role": "user", "content": "用三句话解释什么是量化(quantization),面向新手。"}
],
"chat_template_kwargs": {"enable_thinking": false},
"temperature": 0.7,
"top_p": 0.8,
"top_k": 20,
"min_p": 0
}'
输出(OpenAI 兼容结构;content 为模型回答,模型实际生成文本以运行时为准):
{
"object": "chat.completion",
"model": "qwen3-8b",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "量化就是把模型里原本高精度的数字压缩成更低位数来存储和计算。\n这样模型文件更小、更省显存,普通电脑也能跑起来;代价是回答质量可能有轻微下降。\n常见档位有 Q4_K_M、Q5_K_M、Q6_K、Q8_0,位数越小体积越小、速度越快。"
},
"finish_reason": "stop"
}
],
"usage": {"prompt_tokens": 34, "completion_tokens": 72, "total_tokens": 106}
}
思考模式对照:将 --reasoning-format 改为 deepseek,请求中不关闭思考,模型会先在 reasoning_content 输出推理过程,再在 content 给出正式回答(字段结构见 tools/server/README.md /v1/chat/completions 文档)。
03.6 常见坑(现象 + 原因 + 解决)
-
现象:回答前面大段
<think>...</think>推理内容,新手误以为输出异常。 - 原因:Qwen3-2504 默认开启思考模式(enable_thinking=True)。 - 解决:Transformers 传enable_thinking=False;提示词加/no_think;Ollama 用/set nothink;llama.cpp 实际关闭思考需在请求体传"chat_template_kwargs": {"enable_thinking": false}(或--chat-template-kwargs '{"enable_thinking":false}'),--reasoning-format none只控制思考内容是否从输出中剥离、不会阻止模型思考;想把思考单独展示可用--reasoning-format deepseek。2507 系列分 Instruct(仅非思考)与 Thinking(仅思考)变体,按模型名选择。 -
现象:回答重复绕圈、质量明显变差。 - 原因:模型卡 Best Practices 明确警告:思考模式不要使用贪心解码(greedy);需按官方采样参数设置温度、Top-P、Top-K、Min-P。 - 解决:思考模式
temp 0.6 / top_p 0.95 / top_k 20 / min_p 0;非思考temp 0.7 / top_p 0.8 / top_k 20 / min_p 0;出现重复时可追加--presence-penalty 1.5(官方 GGUF 模型卡命令示例)。 -
现象:长对话中途“忘前文”或被截断。 - 原因:Ollama 默认采用上下文滚动移位(官方 README Note:Ollama 与 llama.cpp 一样具备滚动上下文管理,默认
num_ctx=2048、num_predict=-1,对 Qwen3 偏小);llama.cpp 的--context-shift默认关闭,一旦显式开启滚动,超过-c后旧 token 会被淘汰。 - 解决:Ollama 用/set parameter num_ctx与num_predict显式放大;llama.cpp 用-c放大上下文,官方 Qwen 命令显式--no-context-shift保持关闭滚动移位;超过 32,768 时按官方 YaRN 方案扩展到 131,072(-c 131072 --rope-scaling yarn --rope-scale 4 --yarn-orig-ctx 32768)。 -
现象:启动即报显存不足(CUDA out of memory),模型无法加载。 - 原因:所选量化档权重已接近或超过显存;8GB 卡加载 14B 以上模型必然超限;KV 缓存还会额外占用显存。 - 解决:按 03.4.3 表降档(Q4_K_M 优先)或缩小模型尺寸;llama.cpp 调小
-ngl让部分层留在 CPU;Ollama 减小num_ctx;8GB 卡不要尝试 14B / 32B / 30B-A3B。 -
现象:
-hf或ollama pull长时间下载超时、中断。 - 原因:Hugging Face 在国内网络不稳定。 - 解决:优先 ModelScope CLI / 浏览器镜像下载官方 GGUF,再用本地路径-m加载;huggingface-cli配合HF_ENDPOINT=https://hf-mirror.com;代理环境按 02.6 第 5 条配置HTTPS_PROXY。 -
现象:Ollama 里
qwen3:30b-a3b对应权重与预期不符,或找不到某一量化档。 - 原因:官方 README Note 明确:Ollama 命名可能与 Qwen 原始命名不一致(例如qwen3:30b-a3b实际指向qwen3:30b-a3b-thinking-2507-q4_K_M,截至 2025 年 8 月)。 - 解决:拉取前先核对https://ollama.com/library/qwen3/tags;需要精确量化档时,用 ModelScope/HF 下载 GGUF 后按 01.4.3 离线导入自定义模型。 -
现象:旧版 llama.cpp 加载 Qwen3 报错(聊天模板异常、tokenizer 报错、不识别模型)。 - 原因:官方要求 llama.cpp ≥ b5401 才完整支持 Qwen3。 - 解决:按 02.4.2 更新到最新 Nightly 稳定编译产物,或升级 Ollama 到 v0.9.0+。
03.7 本节来源清单
验证方式:
web_fetch= 文档抓取工具实际打开;curl 200= 命令行 HTTP 状态码核验;API 抓取= Hugging Face / ModelScope 官方 API 拉取文件清单与体积;源码核对= 已下载官方 README / 模型卡 /config.json逐条核对。核验日期 2026-10-25。
| # | URL | 用途 | 验证方式 |
|---|---|---|---|
| 1 | https://github.com/QwenLM/Qwen3 | 官方仓库:模型清单、框架版本要求、llama.cpp / Ollama / Transformers 官方命令、License Agreement、版本脉络 | curl 200;README.md 经 raw 下载全文核对 |
| 2 | https://github.com/QwenLM/Qwen3/blob/main/README.md | 同上,原始 README 链接 | curl 200 |
| 3 | https://huggingface.co/Qwen/Qwen3-8B | Qwen3-8B 基座模型官方仓库 | curl 200 |
| 4 | https://huggingface.co/Qwen/Qwen3-8B/raw/main/LICENSE | 基座模型 Apache-2.0 许可证 | web_fetch 实际打开核对 |
| 5 | https://huggingface.co/Qwen/Qwen3-8B/raw/main/README.md | 模型卡:参数 / 层数 / 上下文 / 思考开关 / 推荐采样参数 / 输出长度 | curl 200,已下载核对 |
| 6 | https://huggingface.co/Qwen/Qwen3-8B/raw/main/config.json | max_position_embeddings=40960、hidden 4096、36 层、32Q/8KV |
API 抓取 解析核对 |
| 7 | https://huggingface.co/Qwen/Qwen3-8B-GGUF | 官方 8B GGUF 仓库 | curl 200 |
| 8 | https://huggingface.co/Qwen/Qwen3-8B-GGUF/raw/main/LICENSE | 官方 GGUF Apache-2.0 许可证 | web_fetch 核对 |
| 9 | https://huggingface.co/Qwen/Qwen3-8B-GGUF/raw/main/README.md | 模型卡:量化档清单、llama.cpp / Ollama 命令 | curl 200,已下载核对 |
| 10 | https://huggingface.co/api/models/Qwen/Qwen3-8B-GGUF?blobs=true | 8B 各量化档文件体积(Q4_K_M 5.03GB … Q8_0 8.71GB) | API 抓取 解析核对 |
| 11 | https://huggingface.co/Qwen/Qwen3-4B-GGUF | 官方 4B GGUF 仓库 | curl 200 |
| 12 | https://huggingface.co/api/models/Qwen/Qwen3-4B-GGUF?blobs=true | 4B 量化档体积(Q4_K_M 2.50 … Q8_0 4.28GB) | API 抓取 |
| 13 | https://huggingface.co/Qwen/Qwen3-14B-GGUF | 官方 14B GGUF 仓库 | curl 200 |
| 14 | https://huggingface.co/api/models/Qwen/Qwen3-14B-GGUF?blobs=true | 14B 量化档体积(Q4_K_M 9.00 … Q8_0 15.70GB) | API 抓取 |
| 15 | https://huggingface.co/Qwen/Qwen3-32B-GGUF | 官方 32B GGUF 仓库 | curl 200 |
| 16 | https://huggingface.co/api/models/Qwen/Qwen3-32B-GGUF?blobs=true | 32B 量化档体积(Q4_K_M 19.76 … Q8_0 34.82GB) | API 抓取 |
| 17 | https://huggingface.co/Qwen/Qwen3-30B-A3B-GGUF | 官方 30B-A3B GGUF 仓库 | curl 200 |
| 18 | https://huggingface.co/api/models/Qwen/Qwen3-30B-A3B-GGUF?blobs=true | 30B-A3B 量化档体积(Q4_K_M 18.56 … Q8_0 32.48GB) | API 抓取 |
| 19 | https://huggingface.co/Qwen/Qwen3-0.6B-GGUF | 官方 0.6B GGUF 仓库(仅 Q8_0 0.64GB) | API 抓取 |
| 20 | https://huggingface.co/Qwen/Qwen3-1.7B-GGUF | 官方 1.7B GGUF 仓库(仅 Q8_0 1.83GB) | API 抓取 |
| 21 | https://huggingface.co/Qwen/Qwen3-235B-A22B-GGUF | 官方 235B-A22B 分片 GGUF 仓库 | curl 200;API 抓取 分片体积 |
| 22 | https://huggingface.co/Qwen/Qwen3-0.6B | 0.6B 基座仓库与模型卡(0.6B / 28 层 / 32,768 上下文) | curl 200;API 抓取 config |
| 23 | https://huggingface.co/Qwen/Qwen3-1.7B | 1.7B 基座仓库与模型卡(1.7B / 28 层) | curl 200;API 抓取 config |
| 24 | https://huggingface.co/Qwen/Qwen3-4B | 4B 基座仓库与模型卡(4.0B / 36 层 / 32Q/8KV / 2560) | curl 200;API 抓取 config |
| 25 | https://huggingface.co/Qwen/Qwen3-14B | 14B 基座仓库与模型卡(14.8B / 40 层 / 40Q/8KV / 5120) | curl 200;API 抓取 config |
| 26 | https://huggingface.co/Qwen/Qwen3-32B | 32B 基座仓库与模型卡(32.8B / 64 层 / 64Q/8KV / 5120) | curl 200;API 抓取 config |
| 27 | https://huggingface.co/Qwen/Qwen3-30B-A3B | 30B-A3B 基座仓库与模型卡(30.5B/3.3B 激活 / 48 层 / 32Q/4KV / 128 专家激活 8) | curl 200;API 抓取 config |
| 28 | https://huggingface.co/Qwen | Qwen 官方 HF 组织 | curl 200 |
| 29 | https://huggingface.co/collections/Qwen/qwen3-67dd247413f0e2e4f653967f | 官方 Qwen3 模型合集 | curl 200 |
| 30 | https://qwen.readthedocs.io/en/latest/ | Qwen 官方文档站英文首页 | curl 200 |
| 31 | https://qwen.readthedocs.io/zh-cn/latest/ | Qwen 官方文档站中文首页 | curl 200(README 内链) |
| 32 | https://qwen.readthedocs.io/en/latest/run_locally/llama.cpp.html | 官方 llama.cpp 本地运行指南(模型下载、-m/-hf、参数含义、YaRN、思考解析) |
curl 200,已下载 HTML 提取核对 |
| 33 | https://qwen.readthedocs.io/zh-cn/latest/run_locally/llama.cpp.html | 中文 llama.cpp 指南 | curl 200 |
| 34 | https://qwen.readthedocs.io/en/latest/run_locally/ollama.html | 官方 Ollama 本地运行指南 | curl 200(README 内链) |
| 35 | https://qwen.readthedocs.io/en/latest/getting_started/speed_benchmark.html | 官方不同上下文下内存占用与吞吐基准 | curl 200,页面已下载核对 |
| 36 | https://modelscope.cn/organization/qwen | ModelScope 官方 Qwen 组织 | curl 200 |
| 37 | https://modelscope.cn/models/Qwen/Qwen3-8B-GGUF | ModelScope 镜像 8B GGUF 仓库 | curl 200;文件 API 体积与 HF 一致 |
| 38 | https://modelscope.cn/models/Qwen/Qwen3-4B-GGUF | ModelScope 镜像 4B GGUF | curl 200;文件 API 体积一致 |
| 39 | https://modelscope.cn/models/Qwen/Qwen3-14B-GGUF | ModelScope 镜像 14B GGUF | curl 200;文件 API 体积一致 |
| 40 | https://modelscope.cn/models/Qwen/Qwen3-32B-GGUF | ModelScope 镜像 32B GGUF | curl 200;文件 API 体积一致 |
| 41 | https://modelscope.cn/models/Qwen/Qwen3-30B-A3B-GGUF | ModelScope 镜像 30B-A3B GGUF | curl 200;文件 API 体积一致 |
| 42 | https://modelscope.cn/models/Qwen/Qwen3-8B | ModelScope 基座模型镜像 | curl 200 |
| 43 | https://modelscope.cn/models/Qwen/Qwen3-32B | ModelScope 32B 基座镜像 | curl 200 |
| 44 | https://modelscope.cn/models/Qwen/Qwen3-235B-A22B | ModelScope 235B 基座镜像 | curl 200 |
| 45 | https://modelscope.ai/docs/Models/Download-Model | ModelScope 旧版 SDK CLI modelscope download --model --include --cache_dir 官方文档(站点为 SPA,general_search 抓取正文片段核验;页面 curl 200) |
general_search 命中官方文档片段;curl 200 |
| 46 | https://github.com/modelscope/modelscope | ModelScope 官方 SDK 仓库(pip install modelscope;snapshot_download 导出与 local_dir 参数经已安装包 modelscope/hub/snapshot_download.py 源码核对) |
curl 200;SDK 源码 curl 200 核对 |
| 46b | https://pypi.org/project/modelscope-hub/0.1.7/ | 新版轻量 hub 官方客户端:ms / modelscope CLI、download 子命令、--local-dir / --cache-dir / --include 参数表 |
web_fetch 实际打开 PyPI 项目页核对 |
| 47 | https://huggingface.co/docs/huggingface_hub/package_reference/environment_variables | huggingface_hub 环境变量官方文档 | web_fetch 核对 |
| 48 | https://raw.githubusercontent.com/huggingface/huggingface_hub/main/src/huggingface_hub/constants.py | HF_ENDPOINT 读取逻辑(ENDPOINT = os.getenv("HF_ENDPOINT", ...)) |
源码 curl 200 核对 |
| 49 | https://hf-mirror.com | 第三方 Hugging Face 镜像(非官方,仅作加速备选说明) | curl 200;站点性质已在正文标注 |
| 50 | https://ollama.com/library/qwen3/tags | Ollama 官方 qwen3 标签清单(命名与量化档核对) | curl 200;HTML 标签行解析核对 |
| 51 | https://github.com/ggml-org/llama.cpp/tree/master/tools/server/README.md | --reasoning-format、--jinja、OpenAI 兼容端点、默认端口等参数出处 |
curl 200;02 章已下载核对 |
| 52 | https://github.com/ggml-org/llama.cpp/tree/master/tools/cli/README.md | --jinja、--color、-c、-n 等参数出处 |
curl 200;02 章已下载核对 |
| 53 | https://arxiv.org/abs/2505.09388 | Qwen3 Technical Report(arXiv:2505.09388) | curl 200 |
| 54 | https://qwenlm.github.io/blog/qwen3/ | 官方 Qwen3 发布博客(基准、硬件参考) | curl 200 |
| 55 | https://qianwen-res.oss-accelerate-overseas.aliyuncs.com/logo_qwen3.png | 本章 Qwen3 官方 Logo 原图 | curl 200,file 校验为 PNG 3944×1555、416,907 字节 |
04. GPT-SoVITS —— 少样本中文语音克隆与语音合成(5 秒零样本 / 1 分钟微调)
适用场景说明:本节面向博主「个人电脑本地部署」场景,环境基线为 Windows 10/11 + WSL2(Ubuntu 24.04)、RTX 3070 8GB / RTX 4090 24GB,另含 Linux 云服务器视角。所有事实均以官方 GitHub README、LICENSE、源码与官方 HF 仓库为准;官方未公布的数值在文中明确标注「README 未给出 / 待实测」,不做推测填充。
04.1 项目定位与基本信息
| 项目 | 内容 |
|---|---|
| 一句话定位 | 一个支持零样本 TTS(输入约 5 秒参考音频即可合成目标音色)与少样本微调(约 1 分钟训练数据提升相似度)的强少样本语音转换 / 文本转语音 WebUI,内置伴奏分离、自动切片、中文 ASR、文本标注等数据集制作工具链。 |
| 开源许可 | MIT License(Copyright © 2024 RVC-Boss)。出处:官方仓库 LICENSE 文件原文为 MIT License;README 顶部 LICENSE 徽章链接指向 https://github.com/RVC-Boss/GPT-SoVITS/blob/main/LICENSE。 |
| 官方 GitHub 仓库 | https://github.com/RVC-Boss/GPT-SoVITS |
| 官方文档 / 官网 | 简体中文官方指南(语雀):https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e —— README 顶部「简体中文」徽章指向该站,为项目官方中文用户手册;英文指南:https://rentry.co/GPT-SoVITS-guide#/ (README「English」徽章指向,本部署环境网络受限未连通,链接以官方 README 为准)。在线体验 Demo:https://lj1995-gpt-sovits-proplus.hf.space/ (README 徽章链接的 Hugging Face Space)。更新日志:https://github.com/RVC-Boss/GPT-SoVITS/blob/main/docs/en/Changelog_EN.md |
| 支持语种 | 官方 README 功能说明:英文、日文、韩文、粤语、中文(English, Japanese, Korean, Cantonese and Chinese);WebUI 推理语种下拉另含「中英混合 / 日英混合 / 粤英混合 / 韩英混合 / 多语种混合」等混合模式(见 04.5 参数表,来源为官方推理 WebUI 源码)。 |
| 版本信息 | 截至 2026-10-25 核查:GitHub Releases 页面最新标签为 20250606v2pro(发布于 2025-06-06 03:04:27Z,来源:https://github.com/RVC-Boss/GPT-SoVITS/releases ,curl 抓取 release 页面 HTML 核实 datetime);GitHub release 页面仅托管源码,Windows 整合包托管在官方 HF 仓库(见 04.4)。README Python 徽章标注 3.10–3.12。 |
04.2 官方图片
- 下图来自官方 README「Zero-Shot TTS Speaker Similarity Comparison Image on SeedTTS Eval Testset_CN2020」小节,为官方音色相似度对比图(非 AI 生成、非第三方图片):

| 项目 | 记录 |
|---|---|
| 本地文件 | https://zhouruolin.cn/upload/04_gptsovits_seedtts_compare.png |
| 图片来源 URL | https://github.com/user-attachments/assets/8c2a0e0a-7212-4b77-b5ef-2d192e09127f (官方 README 第 55 行 <img src=...> 引用) |
| 下载方式 | curl -sL -o 04_gptsovits_seedtts_compare.png "https://github.com/user-attachments/assets/8c2a0e0a-7212-4b77-b5ef-2d192e09127f" |
| 格式 / 体积校验 | file 命令确认:PNG image data, 2400 x 1650, 8-bit/color RGBA, non-interlaced;体积 418,844 字节(约 409 KB),大于 20 KB 阈值。 |
说明:官方 README 未提供独立 logo 文件,另一处官方素材为 GitHub 附件中的演示视频(https://github.com/RVC-Boss/GPT-SoVITS/assets/129054828/05bee1fa-bdd8-4d85-9350-80c060ab47fb ,视频,非图片,故未纳入本节图集)。本节仅使用上述 1 张官方静态图。
04.3 环境要求
以下表格中,官方 README 「Tested Environments」实测组合列于「依赖 / 版本实测记录」行;README 未公布的显存、内存下限均如实标注。
| 维度 | 官方说明与实测记录 |
|---|---|
| 操作系统 | README 标注 Windows 实测版本为 win>=10;源码安装支持 Linux、macOS(README Installation 分 Windows / Linux / macOS 三节)。WSL2(Ubuntu 24.04)按官方 Linux 流程部署即可;GPU 直通依赖 Windows 侧已安装 NVIDIA 驱动。 |
| GPU 与显存 | 官方 README 未公布各版本模型的显存下限数值(待实测)。README 实测环境表覆盖 NVIDIA CUDA 11.8 / 12.4 / 12.8、Apple silicon 与纯 CPU;官方给出的速度基准为 GPT-SoVITS v2 ProPlus 推理 RTF:4060Ti 上 0.028、4090 上 0.014(1400 词约 4 分钟文本,推理 3.36 秒)、M4 CPU 上 0.526(来源:README「RTF of GPT-SoVITS v2 ProPlus」段)。Docker 部署说明中提供 is_half 半精度开关:GPU 支持时设 true 以降低显存占用。 |
| 内存 | README 未公布独立内存下限(待实测)。 |
| 依赖(官方实测组合,README Tested Environments 原表) | Python 3.10 + PyTorch 2.5.1 + CUDA 12.4;Python 3.11 + PyTorch 2.5.1 + CUDA 12.4;Python 3.11 + PyTorch 2.7.0 + CUDA 12.8;Python 3.9 + PyTorch 2.8.0dev + CUDA 12.8;Python 3.12 + PyTorch 2.7.1 + CUDA 11.8;Python 3.12 + PyTorch 2.7.1 + CUDA 12.8;Python 3.9 + PyTorch 2.5.1(Apple silicon);Python 3.11 + PyTorch 2.7.0(Apple silicon);Python 3.9 + PyTorch 2.2.2(CPU)。源码 requirements.txt 关键约束:numpy<2.0、librosa==0.10.2、transformers>=4.51,<5、peft<0.18.0、ctranslate2>=4.0,<5、gradio<5、onnxruntime-gpu(x86_64)、funasr>=1.3.7、av>=11 等。 |
| 磁盘空间(含模型权重体积,本环境实测) | ① Windows 整合包:README 当前指引文件 GPT-SoVITS-v3lora-20250228.7z 为 6,754,961,256 字节(约 6.29 GiB,HEAD 请求实测 content-length);HF 仓库内更新版本 GPT-SoVITS-v5-20261005.7z 为 10,869,231,773 字节(约 10.12 GiB)、GPT-SoVITS-v5-20261005nvidia50x0.7z 为 10,644,775,528 字节(约 9.91 GiB),均为 HF 仓库文件列表 + HEAD 实测;解压后预留空间建议按压缩包 1.5–2 倍估算(非官方数值,属经验建议)。② 源码部署预训练底模:官方 HF 仓库 lj1995/GPT-SoVITS 全版本文件合计约 6.4 GB(HF tree API 实测),实际按需下载所用版本子集。③ 中文前端 G2PWModel.zip:588,856,634 字节(约 561.6 MiB,HEAD 实测)。④ 可选 UVR5 人声分离权重:约 594.4 MB(HF tree API 实测)。⑤ 可选中文 ASR(Damo paraformer / VAD / 标点)与英日 ASR(faster-whisper-large-v3)另需额外磁盘。 |
04.4 最详细部署步骤(Windows 与 WSL2 双视角)
方案 A:Windows 官方整合包(免环境、解压即用,README 首选方案)
README「Windows」节原文指引:Windows 用户(tested with win>=10)下载整合包后双击 _go-webui.bat 启动 WebUI。
1. 依赖安装
- 整合包内置 Python 运行环境,无需自行安装 Python / PyTorch。
- 安装 Visual Studio 2017 运行库(README 指引):https://aka.ms/vs/17/release/vc_redist.x86.exe
- 提示:README 手动安装节要求 Windows 用户把
ffmpeg.exe、ffprobe.exe放到项目根目录(README 未明确说明整合包是否已内置这两个程序);整合包启动后若提示缺少 FFmpeg,再按 04.4 方案 B 的 Windows 小节补放。
2. 项目下载(官方 release / HF 整合包链接,已逐一验证)
README 当前正文链接(2026-10-25 复核可访问,HTTP 302 → 200):
https://huggingface.co/lj1995/GPT-SoVITS-windows-package/resolve/main/GPT-SoVITS-v3lora-20250228.7z?download=true
- 国内网络加速:README 为中国大陆用户提供了国内下载页(语雀):https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/dkxgpiy9zb96hob4 (README「Users in China can download the package here」链接)。
- HF 仓库文件列表(含更新的 v5 包与 nvidia50 变体,来源 https://huggingface.co/lj1995/GPT-SoVITS-windows-package ,HF API 实测):
| 文件名 | 体积(HEAD 实测) | 说明 |
|---|---|---|
| GPT-SoVITS-v3lora-20250228.7z | 6.29 GiB | README 正文当前指引版本 |
| GPT-SoVITS-v4-20250529.7z | 6.98 GiB(7,493,794,100 字节) | v4 版本 |
| GPT-SoVITS-v2pro-20250604.7z | 7.62 GiB(8,185,086,602 字节) | v2Pro 版本 |
| GPT-SoVITS-v5-20261005.7z | 10.12 GiB | HF 仓库内最新 v5 整合包 |
| GPT-SoVITS-v5-20261005nvidia50x0.7z | 9.91 GiB | v5 的 NVIDIA 50 系变体 |
选择建议(非 README 强制规定):纯按 README 正文走即选 v3lora 包;想体验 v5 音色相似度与 CUDA Graph / flash attention 加速可选用 v5 包。nvidia50 系列变体面向 RTX 50 系显卡,3070 / 4090 选择普通包即可。
3. 模型 / 权重下载
- 整合包已内置对应底模,一般无需手动下载;手动补充模型的放置目录见下方方案 B 第 3 步(目录结构相同)。
4. 关键配置
| 配置项 | 值 / 目录 | 来源 |
|---|---|---|
| 解压根目录 | 建议纯英文短路径(如 D:\GPT-SoVITS),避免中文、空格、括号 |
实践经验;README 未单独成文,04.6 常见坑第 1 条说明 |
| 内置 WebUI 启动脚本 | _go-webui.bat(README 第 78 行);整合包目录另提供 go-webui.bat / go-webui.ps1,go-webui-v1.bat / go-webui-v1.ps1 切换 v1 版本,go-webui-v2.bat / go-webui-v2.ps1 打开独立推理 WebUI(README「Finetune and inference」节) |
官方 README |
5. 启动
# 解压后进入目录,双击即可,等价命令:
.\go-webui.bat
# 如需 v1 版本:
.\go-webui-v1.bat
# 仅打开推理 WebUI:
.\go-webui-v2.bat
浏览器自动打开本地 Gradio 页面(默认监听本机回环地址;具体端口以启动终端输出为准,README 未固化端口号)。
方案 B:WSL2(Ubuntu 24.04)源码部署(官方 install.sh 一键脚本)
README「Linux」节官方命令(环境前置:Anaconda / Miniconda 已安装;WSL2 内已可 nvidia-smi 看到 3070 / 4090):
1. 依赖安装(conda 环境 + 一键脚本自动装 torch / CUDA 依赖)
# 进入准备好的项目目录
git clone https://github.com/RVC-Boss/GPT-SoVITS.git
cd GPT-SoVITS
# 官方 README Linux 节命令
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
# --device 可选 CU126 | CU128 | ROCM | CPU;--source 可选 HF | HF-Mirror | ModelScope
# 国内网络直接选 HF-Mirror 或 ModelScope,脚本自动走对应镜像源拉取模型
bash install.sh --device CU128 --source HF-Mirror --download-uvr5
install.sh 参数表(已核对官方脚本 print_help 输出,来源:仓库 install.sh 源码):
| 参数 | 取值 | 说明 |
|---|---|---|
--device |
CU126 / CU128 / ROCM / MPS / CPU |
必选;3070/4090 按 WSL2 内 CUDA 工具链版本选 CU126 或 CU128;纯推理无 NVIDIA GPU 选 CPU |
--source |
HF / HF-Mirror / ModelScope |
必选;模型下载源;国内推荐 HF-Mirror 或 ModelScope |
--download-uvr5 |
开关 | 可选;是否额外下载 UVR5 人声分离模型 |
-h, --help |
开关 | 查看帮助 |
2. 项目下载 / 安装(手动等价步骤,README「Install Manually」节)
一键脚本失败时可按 README 手动流程安装:
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
# README 原文顺序:先装 extra-req(--no-deps),再装主依赖
pip install -r extra-req.txt --no-deps
pip install -r requirements.txt
FFmpeg 安装(README「Install FFmpeg → Ubuntu/Debian Users」节):
sudo apt update
sudo apt install ffmpeg
sudo apt install libsox-dev
# conda 用户等价方式:
conda install ffmpeg
Windows 源码部署等价命令(README「Windows」节 PowerShell):
conda create -n GPTSoVits python=3.10
conda activate GPTSoVits
pwsh -F install.ps1 --Device CU128 --Source HF-Mirror [--DownloadUVR5]
# --Device 可选 CU126 | CU128 | CPU;--Source 可选 HF | HF-Mirror | ModelScope(已核对 install.ps1 param 定义)
Windows 手动安装 FFmpeg:README 指引将 ffmpeg.exe(https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe )与 ffprobe.exe(https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe )放入项目根目录。
3. 模型 / 权重下载(README「Pretrained Models」节;install.sh 跑成功可跳过第 1、2、3 项)
| 序号 | 模型 | 官方来源 | 放置目录(README 原文) |
|---|---|---|---|
| 1 | GPT-SoVITS 预训练底模 | https://huggingface.co/lj1995/GPT-SoVITS | GPT_SoVITS/pretrained_models |
| 2 | G2PW 中文前端模型(仅中文 TTS 需要) | HF:https://huggingface.co/XXXXRT/GPT-SoVITS-Pretrained/resolve/main/G2PWModel.zip ;ModelScope:https://www.modelscope.cn/models/XXXXRT/GPT-SoVITS-Pretrained/resolve/master/G2PWModel.zip | 解压后重命名为 G2PWModel,放入 GPT_SoVITS/text |
| 3 | UVR5 人声 / 伴奏分离、去混响权重(可选) | https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/uvr5_weights | tools/uvr5/uvr5_weights |
| 4 | 中文 ASR 三件套(可选,数据集制作) | Damo ASR:https://modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch/files ;Damo VAD:https://modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch/files ;Damo 标点:https://modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vocab272727-pytorch/files | tools/asr/models |
| 5 | 英文 / 日文 ASR(可选) | https://huggingface.co/Systran/faster-whisper-large-v3 ;README 注明亦可选用 Systran 仓库下其他体积更小的模型 | tools/asr/models |
国内加速方案:
- 官方脚本内置
--source HF-Mirror/ModelScope两个国内友好源(README 官方支持,优先使用)。 - 手动
pip/ 模型下载场景,可使用 Hugging Face Hub 标准环境变量HF_ENDPOINT切换镜像(机制来自底层 huggingface_hub 库,环境变量说明见 https://huggingface.co/docs/huggingface_hub/guides/environment-variables ):
export HF_ENDPOINT=https://hf-mirror.com
- 各版本专用目录(README 各版本发布说明,供升级时对照):v2 底模放
GPT_SoVITS/pretrained_models/gsv-v2final-pretrained;v3 底模(s1v3.ckpt、s2Gv3.pth、models--nvidia--bigvgan_v2_24khz_100band_256x文件夹)放GPT_SoVITS/pretrained_models;v4 底模(gsv-v4-pretrained/s2v4.pth、gsv-v4-pretrained/vocoder.pth)放GPT_SoVITS/pretrained_models;v2Pro 底模(v2Pro/四个权重 +sv/pretrained_eres2netv2w24s4ep4.ckpt)放GPT_SoVITS/pretrained_models;v5 底模保持gsv-v5-pretrained子目录,即最终路径GPT_SoVITS/pretrained_models/gsv-v5-pretrained(README V5 Release Notes)。
RTX 3070 8GB 降级选择(README 官方支持项与可选项分列):
| 手段 | 官方依据 |
|---|---|
| 推理优先、先不做微调训练 | README 未区分推理 / 训练显存数值(待实测);官方训练流程独立于推理页,显存压力通常高于推理,建议 8GB 卡先跑通零样本推理。 |
启用半精度 is_half=true |
README Docker 节:is_half 控制是否开启 fp16,GPU 支持时设 true 减少显存占用。 |
| 切换 CPU 设备 | install.sh --device CPU / install.ps1 --Device CPU;README 实测环境表含 Python 3.9 + PyTorch 2.2.2 + CPU 组合(速度慢,README 标注 M4 CPU RTF 0.526 仅作参考)。 |
| 模型版本取舍 | README V2Pro Notes:v2Pro 显存占用略高于 v2;v3/v4/v5 为后续架构。8GB 卡若新版本 OOM,可回退 v1/v2/v2Pro 底模(具体显存门槛 README 未公布,以本机实测为准)。 |
4. 关键配置(目录与开关速查)
| 配置项 | 默认值 / 路径 | 说明 |
|---|---|---|
| 预训练模型目录 | GPT_SoVITS/pretrained_models |
README Pretrained Models 第 1 项 |
| G2PW 目录 | GPT_SoVITS/text/G2PWModel |
仅中文 TTS 需要,解压改名后放入 |
| UVR5 权重目录 | tools/uvr5/uvr5_weights |
可选;roformer 类模型须模型名与配置同名、文件名含 roformer(README 第 212 行规则) |
| ASR 模型目录 | tools/asr/models |
可选 |
数据集标注 .list 格式 |
vocal_path\|speaker_name\|language\|text |
README Dataset Format;语种字典 zh / ja / en / ko / yue;示例见表下注释 |
is_half |
GPU 支持时建议 true |
Docker 环境变量,控制 fp16 半精度 |
.list标注行示例(README Dataset Format 原文示例,字段以竖线分隔):
D:\GPT-SoVITS\xxx/xxx.wav|xxx|en|I like playing Genshin.
5. 启动(README「Open WebUI」节命令)
# 主 WebUI(训练 + 推理入口),language 为可选参数
python webui.py
# 指定语言:
python webui.py zh
# 切换 v1:
python webui.py v1
python webui.py v1 zh
独立推理 WebUI:
python GPT_SoVITS/inference_webui.py
# 或执行 python webui.py 后在界面内进入推理页
04.5 使用方法
启动方式
| 方式 | 命令 / 操作 | 适用 |
|---|---|---|
| 整合包(Windows) | 双击 go-webui.bat(独立推理:go-webui-v2.bat) |
方案 A |
| 主 WebUI(源码) | python webui.py [language(optional)] |
训练 + 推理一体化 |
| 独立推理 WebUI(源码) | python GPT_SoVITS/inference_webui.py [language(optional)];或主 WebUI 内进入 1-GPT-SoVITS-TTS / 1C-inference 标签页 |
仅合成语音 |
| UVR5 人声分离 WebUI(命令行) | python tools/uvr5/webui.py "<infer_device>" <is_half> <webui_port_uvr5> |
数据集预处理 |
| 数据集切片(命令行,README 原文) | python audio_slicer.py --input_path "<原音频路径或目录>" --output_root "<切片输出目录>" --threshold <音量阈值> --min_length <最小时长> --min_interval <相邻切片最短间隔> --hop_size <音量曲线步长> |
注意:当前 main 分支根目录未检索到该脚本(详见 04.6 第 7 条),切片优先在 WebUI 工具页完成 |
| 中文 ASR(命令行,README 原文) | python tools/asr/funasr_asr.py -i <输入> -o <输出> |
仅中文 |
| 非中文 ASR(命令行,README 原文) | python ./tools/asr/fasterwhisper_asr.py -i <输入> -o <输出> -l <language> -p <precision> |
英 / 日等 |
推理界面操作步骤(1-GPT-SoVITS-TTS / 1C-inference 页,README「Open Inference WebUI」节 + 官方 inference_webui.py 源码控件核对)
- 顶部「模型切换」下拉选择 GPT 模型与 SoVITS 模型,点「刷新模型路径」重载目录;首次使用选择整合包 / 底模默认模型即可。
- 「请上传并填写参考信息」区:上传 3–10 秒参考音频;在「参考音频的文本」框填写该音频的转写文本;「参考音频的语种」选对应语种。
- 「请填写需要合成的目标文本和语种模式」区:粘贴待合成文本;「需要合成的语种」选目标语种;「怎么切」选择长文本切分策略。
- 调整语速、句间停顿与 GPT 采样参数(参数表见下),点击「合成语音」,「输出的语音」播放器出现结果后可在线试听、下载。
参数说明表(来源:官方仓库 GPT_SoVITS/inference_webui.py Gradio 控件定义,行号对应源码)
| 界面控件 | 控件类型 / 取值范围 / 默认值 | 说明 |
|---|---|---|
| GPT 模型列表 | 下拉,自动枚举 GPT_SoVITS/pretrained_models 下可用 GPT 权重 |
切换 GPT 模型;支持刷新 |
| SoVITS 模型列表 | 下拉,自动枚举 SoVITS 权重 | 切换 SoVITS 模型;支持刷新 |
| 参考音频 | 音频上传,3–10 秒内(源码标签原文:「请上传3~10秒内参考音频,超过会报错!」) | 零样本音色来源;v3/v4 版本多参考音频融合入口被隐藏(源码 file_count=multiple 控件 visible=False) |
| 无参考文本模式 | 开关,默认关;v3 暂不支持,开启会报错(源码标签原文;v3/v4 版本控件禁用) | 开启后无视参考文本;建议搭配微调后的 GPT 使用 |
| 参考音频的文本 | 多行文本框,5 行上限 | 填写参考音频原话转写文本 |
| 参考音频的语种 | 下拉,默认「中文」;可选:中文(all_zh)、英文(en)、日文(all_ja)、粤语(all_yue)、韩文(all_ko)、中英混合(zh)、日英混合(ja)、粤英混合(yue)、韩英混合(ko)、多语种混合(auto)、多语种混合(粤语)(auto_yue)(v2 字典;v1 字典不含粤语 / 韩文相关项) |
参考音频语种识别模式 |
| CFG | 滑块 0–2,步长 0.05;v5dev 默认 1.30,其余默认 0.0;仅 v5 版本可见(源码 visible=model_version in V5_VERSIONS) |
CFG 引导强度 |
| 采样步数 | 单选 [4, 8, 16, 32];v5turbo 默认 4,v3 / v5dev 默认 32,其余默认 8;v3/v4 版本可见 |
源码标签:「采样步数,如果觉得电,提高试试,如果觉得慢,降低试试」 |
| v3 超分开关 | 复选框,默认关;仅 v3 版本可见 | 源码标签:「v3 输出如果觉得闷可以试试开超分」 |
| 需要合成的文本 | 多行文本框,26 行上限 | 待合成文本 |
| 需要合成的语种 | 下拉,默认「中文」;语种选项同上表;源码标签补充:「限制范围越小判别效果越好」 | 目标合成语种 |
| 怎么切 | 下拉,默认「凑四句一切」;可选:不切 / 凑四句一切 / 凑 50 字一切 / 按中文句号。切 / 按英文句号.切 / 按标点符号切 | 长文本分段策略 |
| 冻结上次结果 | 复选框,默认关 | 源码标签:「是否直接对上次合成结果调整语速和音色。防止随机性。」 |
| 语速 | 滑块 0.6–1.65,步长 0.05,默认 1 | 源码标签:「语速调整,高为更快」 |
| 句间停顿秒数 | 滑块 0.1–0.5,步长 0.01,默认 0.3 | 句与句之间停顿时长 |
| top_k | 滑块 1–100,步长 1,默认 15 | GPT 采样参数;源码提示「无参考文本时不要太低,不懂就用默认」 |
| top_p | 滑块 0–1,步长 0.05,默认 1 | GPT 核采样阈值 |
| temperature | 滑块 0–1,步长 0.05,默认 1 | 采样温度 |
| CUDA Graph 加速 | 复选框,默认 graph_available 判定结果,仅可用时显示 |
README V5 Notes:支持 cuda_graph 推理加速(感谢 @XXXXRT666 贡献) |
| flash_attn 加速 | 复选框,默认 flash_attn_supported 判定结果,仅支持时显示 |
README V5 Notes:支持 flash_attention 加速 |
| 输出的语音 | 音频播放器 | 合成结果试听 / 下载 |
微调训练流程(README「Finetune → Finetune」节,官方 WebUI 流程简述)
README 明确支持路径自动填充,顺序为:
- 填写音频路径;
- 将音频切片为小片段;
- 降噪(可选);
- ASR 自动转写;
- 人工校对 ASR 转写文本;
- 进入下一标签页,微调模型。
数据集标注格式见 04.4 配置表;训练所需 .list 三字段:音频路径|说话人名|语种|文本。
端到端示例:5 秒零样本合成一段中文博客口播
准备素材:一段 3–10 秒、单人、无背景音乐、口齿清晰的目标音色录音(ref.wav),用记事本写出其原话文字(例如「大家好,欢迎来到我的技术博客。」)。
操作步骤:
- 双击
go-webui.bat(整合包)或执行python GPT_SoVITS/inference_webui.py(源码),打开1-GPT-SoVITS-TTS / 1C-inference页。 - 上传
ref.wav;「参考音频的文本」粘贴原话;「参考音频的语种」选「中文」。 - 「需要合成的文本」粘贴口播稿,例如:
「今天这期视频,我们来聊一聊几个适合本地部署的开源语音项目,从语音克隆到实时对话,全部跑在自己的电脑上。」
- 「需要合成的语种」选「中文」;「怎么切」选「凑四句一切」;语速保持 1;top_k 15、top_p 1、temperature 1 保持默认。
- 点击「合成语音」,在输出播放器试听;相似度不满意时:核对参考文本是否准确、换更干净的 3–10 秒参考音频;情绪 / 音色仍不满足可走 04.5 微调流程,用约 1 分钟目标音色数据微调(README Few-shot TTS 说明)。
命令行备用入口(README 原文):UVR5 分离伴奏、音频切片、中文 FunASR 标注、非中文 faster-whisper 标注命令见 04.5「启动方式」表。
04.6 常见坑
| # | 现象 | 原因 | 解决(官方依据 / 实践处理) |
|---|---|---|---|
| 1 | 解压路径或素材路径含中文、空格、括号时,模型加载 / 音频读取报错或乱码 | 部分 Python 依赖与 Gradio 对非 ASCII 路径兼容性差(README 未单独成文,属实践高发问题) | 将整合包与项目克隆到纯英文短路径(如 D:\GPT-SoVITS、~/GPT-SoVITS);参考音频、训练素材同样使用英文路径;audio_slicer.py 等命令行参数中的路径加引号并避免中文。 |
| 2 | 首次启动长时间卡在模型下载,或 HF 连接超时 / 断流 | 官方默认源为 Hugging Face Hub,国内直连不稳定 | 一键脚本部署时 --Source HF-Mirror 或 --Source ModelScope(README 官方参数);手动部署先 export HF_ENDPOINT=https://hf-mirror.com 再启动;G2PW / ASR 模型使用 README 给出的 ModelScope 镜像链接;语雀国内下载页用于手动获取整合包。 |
| 3 | 推理或训练时显存不足(CUDA out of memory) | README 未公布各版本显存门槛;大模型 + 微调训练显存压力大 | 先跑通零样本推理;GPU 支持时开启半精度 is_half=true;换用更轻的 v1/v2/v2Pro 底模;极端情况 --device CPU 纯 CPU 运行(README 支持选项,速度慢)。8GB 3070 具体可跑版本需以本机实测为准,README 未给数值承诺。 |
| 4 | 参考音频上传后界面提示报错、合成异常 | 参考音频时长超过 10 秒(源码控件标签明确:「请上传3~10秒内参考音频,超过会报错!」) | 截取 3–10 秒单人清晰片段再上传;多参考音频融合功能在 v3/v4 版本源码中已隐藏,勿在这些版本上依赖多参考文件。 |
| 5 | v3 版本勾选「无参考文本模式」后报错 | 源码注明「v3 暂不支持该模式,使用了会报错」,且 v3/v4 版本该控件被禁用 | v3/v4 下填写准确参考文本;需要无参考文本模式时使用支持该模式的版本与微调 GPT(源码标签提示建议搭配微调 GPT)。 |
| 6 | Windows 启动提示缺少 ffmpeg.exe / ffprobe.exe,或音频处理环节报错 |
README Windows 手动安装节要求把两个 exe 放入项目根目录;README 未注明整合包是否内置,手动源码部署更可能需要自行补齐 | 按 README 链接下载 ffmpeg.exe、ffprobe.exe 放入项目根目录;同时安装 README 给出的 VS 2017 运行库;WSL2 内 sudo apt install ffmpeg libsox-dev。 |
| 7 | 执行 README 命令行切片命令 python audio_slicer.py 提示找不到文件 |
当前 main 分支根目录未检索到 audio_slicer.py(2026-10-25 对 404 候选路径逐一探测均为 404),README 命令路径可能滞后于代码重构 |
优先使用 WebUI 内的切片工具页完成数据集预处理;命令行切片可在仓库内 tools/ 目录下检索同名 / 近名脚本后再执行;脚本路径问题建议到官方 Issues 核对最新分支状态。 |
04.7 本节来源清单
待复核项:英文指南 rentry.co 链接、Colab Notebook 链接在本部署环境网络受限(curl 000),地址均逐字摘自官方 README 徽章,建议读者在国内浏览器 / Colab 环境内二次打开确认。
05. faster-whisper —— 基于 CTranslate2 推理引擎的高速语音识别(ASR)
适用场景说明:面向博主个人电脑本地部署,基线环境 Windows 10/11 + WSL2(Ubuntu 24.04)、RTX 3070 8GB / RTX 4090 24GB,另含 Linux 云服务器视角。faster-whisper 在博客工作流中通常承担「把参考音频 / 口播视频转写成标注文本」的上游角色(例如配合 04 节 GPT-SoVITS 制作训练集标注、自动生成字幕)。本节事实以官方 GitHub README、源码
WhisperModel类与 PyPI 元数据为准。
05.1 项目定位与基本信息
| 项目 | 内容 |
|---|---|
| 一句话定位 | 用快速 Transformer 推理引擎 CTranslate2 对 OpenAI Whisper 模型做的重新实现:同等精度下速度最高可达 openai/whisper 的 4 倍、内存占用更低,CPU 与 GPU 上均可使用 8-bit 量化进一步提速省内存(README 原文:"up to 4 times faster than openai/whisper for the same accuracy while using less memory")。 |
| 开源许可 | MIT License(Copyright © 2023 SYSTRAN)。出处:官方仓库 LICENSE 文件原文为 MIT License;PyPI 项目元数据 license: MIT(https://pypi.org/project/faster-whisper/ ,2026-10-25 复核)。 |
| 官方 GitHub 仓库 | https://github.com/SYSTRAN/faster-whisper |
| 官方文档 / 官网 | 无独立文档站;官方说明即仓库 README(https://github.com/SYSTRAN/faster-whisper ),参数细节以官方源码类实现为准:WhisperModel 与 transcribe 接口见 https://github.com/SYSTRAN/faster-whisper/blob/master/faster_whisper/transcribe.py ;量化类型说明见 CTranslate2 官方文档 https://opennmt.net/CTranslate2/quantization.html 。PyPI 发行页:https://pypi.org/project/faster-whisper/ |
| 版本信息 | 截至 2026-10-25 官方 PyPI 最新版:1.2.1(来源:https://pypi.org/pypi/faster-whisper/json ,info.version 字段;requires_python: >=3.9)。README benchmark 基准版本为 v1.1.0。 |
| 支持语种 | 取决于所选 Whisper 模型:多语言模型(tiny/base/small/medium/large-v2/large-v3/turbo 等)覆盖 Whisper 官方多语种清单;.en 系列为英语专用;语言码如 zh(中文)、en、ja、ko 等,未指定时模型自动检测音频前 30 秒语种(README + transcribe docstring)。 |
05.2 官方图片
经逐一核查:官方 README、仓库文件树(codeload tarball 全量清单)、PyPI 项目描述中均未包含任何静态 logo 或界面截图,仅有的图像元素为 CI 徽章与 PyPI 版本徽章(徽章非项目配图,仅作状态标识)。按照「禁止用 AI 生成图或非官方图冒充」的要求,本节不插入图片,待官方后续在仓库 / README 补充视觉素材后再增补。
| 核查项 | 记录 |
|---|---|
| README 图像引用 | 仅 CI 状态徽章与 PyPI 版本徽章两枚(README 第 1 行,PyPI 描述同步核对;徽章地址见 05.7 来源清单 #20、#21) |
| 仓库图片文件 | 对 SYSTRAN/faster-whisper master 分支 codeload tarball 做全量文件名过滤(png/jpg/jpeg/svg/webp/gif),结果为空;docs/ 目录下亦无图片 |
| 处理结论 | 无官方图片可下载;本节不做占位图、不使用第三方 logo。 |
05.3 环境要求
| 维度 | 官方说明(README「Requirements」「GPU」节 + PyPI 元数据) |
|---|---|
| 操作系统 | 跨平台;README 提供 Linux(pip 安装 NVIDIA 库)、Windows / Linux(Purfview 独立库压缩包)、CPU 等多条路径;WSL2(Ubuntu 24.04)按 Linux 路径部署。CPU 基准测试环境为 Intel Core i7-12700K、8 线程(README Small model on CPU 节)。 |
| GPU 与显存 | GPU 执行需安装 NVIDIA 库:cuBLAS for CUDA 12 与 cuDNN 9 for CUDA 12。README 明确提示:最新版 ctranslate2 仅支持 CUDA 12 + cuDNN 9;CUDA 11 + cuDNN 8 需降级 ctranslate2==3.24.0;CUDA 12 + cuDNN 8 需降级 ctranslate2==4.4.0。GPU 基准测试(large-v2,RTX 3070 Ti 8GB,CUDA 12.4)实测显存见 05.3 末尾官方 benchmark 表;README 未公布其他档位的官方显存数值。 |
| 内存 | CPU 基准测试(small 模型,i7-12700K 8 线程):fp32 占 2257 MB 内存、int8 占 1477 MB 内存(README Small model on CPU 表);其他档位内存占用 README 未公布。 |
| 依赖 | Python 3.9 或更高(README「Python 3.9 or greater」;PyPI requires_python >=3.9)。与 openai-whisper 不同,系统不需要单独安装 FFmpeg:音频由 Python 库 PyAV 解码,PyAV 在包内打包了 FFmpeg 库(README 原文:"FFmpeg does not need to be installed on the system")。GPU 侧依赖 ctranslate2、nvidia-cublas-cu12、nvidia-cudnn-cu12==9.*(Linux pip 方式)。 |
| 磁盘空间(含模型权重体积,本环境经 HF tree API 实测) | 模型首次运行时按所选档位自动下载到 Hugging Face 缓存;各 CT2 模型 model.bin 体积如下表。另需预留 PyPI 包与 CUDA 库空间(README 未公布具体数值)。 |
模型档位选择表(三类口径分列,避免混用):
| 档位 | 参数量(openai/whisper 官方 README) | CT2 model.bin 实测体积(HF tree/main API,2026-10-25) |
原版 PyTorch 参考显存(openai/whisper README,fp32 基线,非 CT2 实测) | 相对速度(openai/whisper README,A100 英文语音,以 large 为 1×) | 下载名(WhisperModel 首参数) |
|---|---|---|---|---|---|
| tiny | 39 M | 72.0 MB(仓库合计 74.6 MB) | ~1 GB | ~10× | tiny / tiny.en |
| base | 74 M | 138.5 MB(141.0 MB) | ~1 GB | ~7× | base / base.en |
| small | 244 M | 461.1 MB(463.7 MB) | ~2 GB | ~4× | small / small.en |
| medium | 769 M | 1457.1 MB(1459.7 MB) | ~5 GB | ~2× | medium / medium.en |
| large-v2 | 1550 M(large 档) | 2943.9 MB(2946.5 MB) | ~10 GB(large 档参考值) | ~1× | large-v2 |
| large-v3 | 1550 M(large 档) | 2944.3 MB(2947.7 MB) | ~10 GB(large 档参考值) | ~1× | large-v3 / large |
| turbo | 809 M | 未在 Systran 仓库单列(README 支持 turbo / large-v3-turbo 下载名) |
~6 GB | ~8× | turbo / large-v3-turbo |
口径说明:① 参数量、原版参考显存、相对速度三列来自 openai/whisper 官方 README「Available models and languages」表,描述的是原版 PyTorch 实现基线,不能直接等同于 faster-whisper/CT2 显存占用;② CT2 体积列为 HF Systran 仓库
tree/mainAPI 实测;③ CT2 引擎的真实显存 / 速度以 05.3 下方官方 benchmark 表(仅 large-v2 GPU、small CPU 两组实测)为准,其余档位 README 未公布 CT2 实测值。
官方 benchmark 实测表(README「Benchmark」节原文数据,13 分钟英文音频,RTX 3070 Ti 8GB / CUDA 12.4;CPU 为 i7-12700K 8 线程):
| 实现 | 精度 | beam size | GPU 耗时 | GPU 显存 / CPU 内存 |
|---|---|---|---|---|
| openai/whisper(对照) | fp16 | 5 | 2m23s | 4708 MB |
| whisper.cpp(Flash Attention,对照) | fp16 | 5 | 1m05s | 4127 MB |
| transformers(SDPA,对照) | fp16 | 5 | 1m52s | 4960 MB |
| faster-whisper | fp16 | 5 | 1m03s | 4525 MB |
faster-whisper(batch_size=8) |
fp16 | 5 | 17s | 6090 MB |
| faster-whisper | int8 | 5 | 59s | 2926 MB |
faster-whisper(batch_size=8) |
int8 | 5 | 16s | 4500 MB |
| faster-whisper(CPU,small,fp32) | fp32 | 5 | 2m37s | 2257 MB RAM |
| faster-whisper(CPU,small,int8) | int8 | 5 | 1m42s | 1477 MB RAM |
说明:上表为 README 公布的官方实测;除 large-v2(GPU)与 small(CPU)外,其余档位显存 / 内存数值 README 未给出,不做推算填充。
05.4 最详细部署步骤(Windows 与 WSL2 双视角)
1. 依赖安装
通用前置:安装 Python 3.9+(README 要求)。建议使用虚拟环境隔离:
# WSL2 Ubuntu / Linux 云服务器
python3 -m venv .venv
source .venv/bin/activate
# Windows PowerShell
python -m venv .venv
.\.venv\Scripts\Activate.ps1
NVIDIA GPU 库安装(README「GPU」节三种官方方式,按系统选一):
- 方式一:Docker(README 官方说明):使用官方 NVIDIA CUDA 镜像
nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04,其中已含 cuBLAS、cuDNN。 - 方式二:Linux 下 pip 安装(README 原文,仅 Linux):
```bash pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*
# README 原文要求:启动 Python 前先设置 LD_LIBRARY_PATH export LD_LIBRARY_PATH=$(python3 -c 'import os, nvidia.cublas, nvidia.cudnn; print(os.path.dirname(nvidia.cublas.path[0]) + "/cublas/lib:" + os.path.dirname(nvidia.cudnn.path[0]) + "/cudnn/lib")') ```
- 方式三:Purfview 独立库压缩包(Windows & Linux):README 指引从 Purfview/whisper-standalone-win 的
libsrelease 下载所需 NVIDIA 库单文件压缩包,解压后把目录加入系统PATH。
版本降级提示(README 原文):若本机为 CUDA 11 + cuDNN 8,执行 pip install --force-reinstall ctranslate2==3.24.0;若为 CUDA 12 + cuDNN 8,执行 pip install --force-reinstall ctranslate2==4.4.0(或在 requirements.txt 中固定版本)。
注意:README 明确 系统无需安装 FFmpeg;若习惯在 Windows PATH 中保留全局 FFmpeg 也不会冲突,但排查问题时不要把「缺 FFmpeg」当成 faster-whisper 的必需报错项。
2. 项目下载 / 安装(README「Installation」节,唯一推荐方式:PyPI)
pip install faster-whisper
其他官方安装方式(README「Other installation methods」折叠节):
# 安装 master 分支最新代码
pip install --force-reinstall "faster-whisper @ https://github.com/SYSTRAN/faster-whisper/archive/refs/heads/master.tar.gz"
# 安装指定 commit(示例 commit 取自 README)
pip install --force-reinstall "faster-whisper @ https://github.com/SYSTRAN/faster-whisper/archive/a4f1cc8f11433e454c3934442b5e1a4ed5e865c3.tar.gz"
3. 模型 / 权重下载(官方来源 + 国内加速 + 3070 8GB 档位选择)
官方来源:加载 WhisperModel("large-v3") 这类档位名时,对应 CTranslate2 模型自动从 Hugging Face Hub 的 Systran 组织仓库 下载(README「Model conversion」节原文:"the corresponding CTranslate2 model is automatically downloaded from the Hugging Face Hub")。模型清单与体积见 05.3 实测表。
国内加速:faster-whisper 底层使用 huggingface_hub 下载,可通过标准环境变量切换镜像(机制说明:https://huggingface.co/docs/huggingface_hub/guides/environment-variables ):
# Linux / WSL2(写入 ~/.bashrc 可持久化)
export HF_ENDPOINT=https://hf-mirror.com
# Windows PowerShell
$env:HF_ENDPOINT="https://hf-mirror.com"
也可在代码中用 download_root= 指定本地模型目录,或先在网络通畅环境下载好 model.bin 等文件,再用本地目录路径加载(README「Load a converted model」节):
from faster_whisper import WhisperModel
model = WhisperModel("/path/to/local/model-dir")
RTX 3070 8GB 档位选择(README 官方 benchmark 同类对照 + 明确边界):
| 场景 | 建议档位 / 精度 | 依据与边界 |
|---|---|---|
| 追求精度、GPU 显存充裕(4090 24GB) | large-v3 + device="cuda" + compute_type="float16" |
README 示例默认写法;large-v2 官方实测 fp16 4525MB、int8 2926MB(3070 Ti 8GB);README 未给出 large-v3 独立显存实测,large-v3 实际占用以本机 nvidia-smi 实测为准 |
| RTX 3070 8GB 稳妥配置 | medium 或 small + fp16;large-v2 用 int8_float16 或 int8 |
large-v2 int8 官方实测 2926MB;8GB 显存避开 batch_size=8(fp16 6090MB / int8 4500MB,官方 benchmark 数值);large-v3 在 8GB 上的可行性 README 未给出数据,需实测 |
| 纯 CPU / 云服务器无 GPU | small 或 base + device="cpu" + compute_type="int8" |
README 示例 device="cpu", compute_type="int8";small CPU int8 官方实测 1477MB RAM |
| 长视频批量提速 | BatchedInferencePipeline + batch_size=8(显存允许时) |
README「Batched Transcription」示例;显存占用按官方 benchmark 表预留 |
4. 关键配置(代码初始化参数,来源:官方 WhisperModel.__init__ 源码签名)
| 参数 | 类型 / 默认值 | 说明(源码 docstring 原文要点) |
|---|---|---|
model_size_or_path |
str,必填 |
档位名(tiny、tiny.en、base、base.en、small、small.en、distil-small.en、medium、medium.en、distil-medium.en、large-v1、large-v2、large-v3、large、distil-large-v2、distil-large-v3、large-v3-turbo、turbo)、转换后模型本地目录,或 HF Hub 上的 CT2 模型 ID |
device |
str,默认 "auto" |
计算设备:cpu / cuda / auto |
device_index |
int 或 list[int],默认 0 |
显卡编号;可传列表 [0,1,2,3] 多卡并行,配合多线程 transcribe() 调用 |
compute_type |
str,默认 "default" |
计算精度:float16 / int8_float16 / int8 / float32 等,取值见 CTranslate2 量化文档 |
cpu_threads |
int,默认 0 |
CPU 线程数(默认 4);非零值覆盖 OMP_NUM_THREADS 环境变量 |
num_workers |
int,默认 1 |
多线程调用 transcribe() 时的并行 worker 数,提升吞吐但增加内存 |
download_root |
Optional[str],默认 None |
模型保存目录;缺省走标准 Hugging Face 缓存目录 |
local_files_only |
bool,默认 False |
为 True 时不发起下载,仅返回本地缓存模型 |
revision |
Optional[str],默认 None |
HF Hub 分支 / 标签 / commit 修订号 |
use_auth_token |
Optional[Union[str, bool]],默认 None |
Hugging Face 鉴权 token,或 True 使用 HF 配置目录中已保存的 token |
5. 启动(官方 README 最小可运行命令序列)
# 确认环境已激活,模型首次运行自动下载;无系统 FFmpeg 依赖
python your_transcribe_script.py
05.5 使用方法
启动方式
faster-whisper 是 Python 库,无自带 WebUI;通过 WhisperModel 初始化 + model.transcribe(...) 调用。README 官方最小示例(原文照录):
from faster_whisper import WhisperModel
model_size = "large-v3"
# Run on GPU with FP16
model = WhisperModel(model_size, device="cuda", compute_type="float16")
# or run on GPU with INT8
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")
# or run on CPU with INT8
# model = WhisperModel(model_size, device="cpu", compute_type="int8")
segments, info = model.transcribe("audio.mp3", beam_size=5)
print("Detected language '%s' with probability %f" % (info.language, info.language_probability))
for segment in segments:
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
README 重要警告:
segments是生成器(generator),只有在迭代它时转写才真正开始;必须放入list(segments)或for循环中执行(README「Warning」段原文):
segments, _ = model.transcribe("audio.mp3")
segments = list(segments) # The transcription will actually run here.
transcribe() 参数说明表(来源:官方 faster_whisper/transcribe.py 第 781–825 行签名 + docstring)
| 参数 | 默认值 | 说明(源码 docstring 要点) |
|---|---|---|
audio |
必填 | 音频文件路径、文件类对象,或音频波形 numpy 数组 |
language |
None |
音频语种码(如 "en"、"fr"、"zh");未设置时在音频前 30 秒自动检测 |
task |
"transcribe" |
任务:transcribe(转写)或 translate(翻译成英文) |
log_progress |
False |
是否显示进度条 |
beam_size |
5 |
解码 beam 宽度;注意 openai-whisper 默认 beam_size 为 1,跨实现对比时需对齐(README「Comparing performance」节) |
best_of |
5 |
非零温度采样时的候选数量 |
patience |
1 |
beam search 耐心因子 |
length_penalty |
1 |
指数长度惩罚常数 |
repetition_penalty |
1 |
已生成 token 分数惩罚(>1 惩罚重复) |
no_repeat_ngram_size |
0 |
禁止重复 n-gram 大小,0 关闭 |
temperature |
[0.0, 0.2, 0.4, 0.6, 0.8, 1.0] |
采样温度;失败时按 compression_ratio_threshold 或 log_prob_threshold 依次重试 |
compression_ratio_threshold |
2.4 |
gzip 压缩比高于该值视为失败 |
log_prob_threshold |
-1.0 |
采样 token 平均 log probability 低于该值视为失败 |
no_speech_threshold |
0.6 |
无语音概率高于该值且平均 log prob 低于阈值时,判定该段为静音 |
condition_on_previous_text |
True |
为 True 时把上一段输出作为下一段 prompt;关闭可降低重复循环 / 时间戳错乱概率,但跨段一致性可能下降 |
prompt_reset_on_temperature |
0.5 |
温度超过该值时重置 prompt |
initial_prompt |
None |
初始提示词(字符串或 token 序列);可用于注入专有名词、领域术语或中文标点习惯 |
prefix |
None |
文本前缀 |
suppress_blank |
True |
是否抑制空 token |
suppress_tokens |
[-1] |
抑制的 token 列表 |
without_timestamps |
False |
是否不带时间戳输出 |
max_initial_timestamp |
1.0 |
初始时间戳上限 |
word_timestamps |
False |
是否输出词级时间戳(配合 segment.words 使用,README「Word-level timestamps」示例) |
prepend_punctuations |
"\"'“¿([{-" |
前附着标点 |
append_punctuations |
"\"'.。,,!!??::”)]}、" |
后附着标点 |
multilingual |
False |
多语言段内语言检测 |
vad_filter |
False |
是否启用内置 Silero VAD 过滤无声片段;批处理模式默认开启(README「VAD filter」节) |
vad_parameters |
None |
VAD 参数字典,如 dict(min_silence_duration_ms=500);默认仅移除超过 2 秒的静音,可调参数见源码 faster_whisper/vad.py |
max_new_tokens |
None |
单段最大新生成 token 数 |
chunk_length |
None |
分块长度 |
clip_timestamps |
"0" |
时间戳裁剪 |
hallucination_silence_threshold |
None |
幻觉静音阈值 |
hotwords |
None |
热词 |
language_detection_threshold |
0.5 |
语种检测阈值 |
language_detection_segments |
1 |
参与语种检测的段数 |
其他官方用法片段(README 原文)
批量转写(Batched InferencePipeline,README「Batched Transcription」节):
from faster_whisper import WhisperModel, BatchedInferencePipeline
model = WhisperModel("turbo", device="cuda", compute_type="float16")
batched_model = BatchedInferencePipeline(model=model)
segments, info = batched_model.transcribe("audio.mp3", batch_size=16)
for segment in segments:
print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
词级时间戳(README「Word-level timestamps」节):
segments, _ = model.transcribe("audio.mp3", word_timestamps=True)
for segment in segments:
for word in segment.words:
print("[%.2fs -> %.2fs] %s" % (word.start, word.end, word.word))
VAD 过滤(README「VAD filter」节):
segments, _ = model.transcribe(
"audio.mp3",
vad_filter=True,
vad_parameters=dict(min_silence_duration_ms=500),
)
蒸馏模型 distil-large-v3(README「Faster Distil-Whisper」节):
from faster_whisper import WhisperModel
model_size = "distil-large-v3"
model = WhisperModel(model_size, device="cuda", compute_type="float16")
segments, info = model.transcribe(
"audio.mp3", beam_size=5, language="en", condition_on_previous_text=False
)
端到端示例:中文口播音频转写并导出带时间戳字幕(.txt + .srt)
适用场景:把博客录制的口播音视频转成文字稿与 SRT 字幕;3070 8GB 选用 medium + int8 稳妥起步,4090 可换 large-v3 + fp16。
# transcribe_zh.py —— 官方 API 组合示例,依赖:pip install faster-whisper
from faster_whisper import WhisperModel
# 1) 初始化模型:3070 8GB 推荐 medium + int8_float16;4090 可改 large-v3 + float16
model = WhisperModel(
"medium",
device="cuda",
compute_type="int8_float16",
# cpu_threads=4, # 纯 CPU 时按需设置
# download_root="./models", # 指定本地模型目录
)
# 2) 转写:固定中文、beam_size 5、开启 VAD、注入领域提示词、开启词级时间戳
segments, info = model.transcribe(
"koubo.mp3",
language="zh", # 固定中文;自动检测则留 None
beam_size=5,
vad_filter=True, # 过滤静音片段
vad_parameters=dict(min_silence_duration_ms=500),
initial_prompt="以下是技术博客普通话口播内容,包含开源、语音合成、深度学习等术语。",
word_timestamps=True, # 词级时间戳,便于精细校对字幕
condition_on_previous_text=True,
)
print("检测语种:%s(概率 %.3f)" % (info.language, info.language_probability))
# 3) 收集段落到列表(generator 必须迭代后才真正转写)
segments = list(segments)
# 4a) 导出纯文本稿
with open("koubo.txt", "w", encoding="utf-8") as f:
for seg in segments:
f.write(seg.text.strip() + "\n")
# 4b) 导出 SRT 字幕(段级时间戳)
def fmt_ts(seconds: float) -> str:
ms = int((seconds % 1) * 1000)
s = int(seconds)
h, rem = divmod(s, 3600)
m, sec = divmod(rem, 60)
return f"{h:02d}:{m:02d}:{sec:02d},{ms:03d}"
with open("koubo.srt", "w", encoding="utf-8") as f:
for idx, seg in enumerate(segments, start=1):
f.write(f"{idx}\n{fmt_ts(seg.start)} --> {fmt_ts(seg.end)}\n{seg.text.strip()}\n\n")
# 5) 控制台预览
for seg in segments:
print("[%.2fs -> %.2fs] %s" % (seg.start, seg.end, seg.text.strip()))
运行:
export HF_ENDPOINT=https://hf-mirror.com # 国内镜像(WSL2/Linux)
python transcribe_zh.py
命令行工具补充:README「Community integrations」列出的 whisper-ctranslate2 是基于 faster-whisper 的第三方 CLI,接口兼容 openai-whisper 客户端;属社区项目,非官方组件,需要独立查阅其仓库说明。
05.6 常见坑
| # | 现象 | 原因 | 解决(README 官方依据) |
|---|---|---|---|
| 1 | 启动报 cuBLAS / cuDNN 加载错误(library not found / 版本不匹配) |
最新版 ctranslate2 仅支持 CUDA 12 + cuDNN 9;本机 CUDA / cuDNN 版本不在支持范围 |
按 README「GPU」节对照处理:CUDA 11 + cuDNN 8 降级 ctranslate2==3.24.0;CUDA 12 + cuDNN 8 降级 ctranslate2==4.4.0;Linux 用 nvidia-cublas-cu12 + nvidia-cudnn-cu12==9.* pip 包并设置 LD_LIBRARY_PATH;Windows 从 Purfview libs release 取库加入 PATH。 |
| 2 | 首次运行卡在模型下载,或 HF 连接超时 | 模型默认从 huggingface.co/Systran 自动下载,国内直连不稳 | 先 export HF_ENDPOINT=https://hf-mirror.com(Linux/WSL2)或 $env:HF_ENDPOINT="https://hf-mirror.com"(Windows);或在网络通畅环境用 download_root= 预下载模型目录后离线加载。 |
| 3 | GPU 转写时报显存不足(CUDA out of memory) | fp16 大模型 + 大批量超显存;README benchmark 中 batch_size=8 会把显存从 4525MB 抬到 6090MB(fp16) |
降精度:compute_type="int8_float16" 或 "int8"(large-v2 int8 官方实测 2926MB);换 medium / small 档位;关闭 batch_size=8 批处理;最终退路 device="cpu", compute_type="int8"。 |
| 4 | 脚本跑完只输出标题,没有任何转写文本 | segments 是惰性生成器,未迭代就结束(README「Warning」原文提示) |
先 segments = list(segments) 或在 for 循环中消费再做导出;不要在迭代前把 segments 写入文件。 |
| 5 | 音频解码失败,误装系统 FFmpeg 仍报错 | README 明确不依赖系统 FFmpeg,解码由 PyAV 内置库完成;真实原因通常是 PyAV 版本与音频编码 / 采样率不匹配 | 升级 faster-whisper 与 av(requirements 约束 av>=11);确认音频本身可被其他播放器打开;系统 FFmpeg 缺失不是 faster-whisper 的报错原因,排查方向应对准 PyAV 与文件格式。 |
| 6 | 长音频出现重复复读、时间戳整体后移 | condition_on_previous_text=True 时上一段文本持续作为 prompt,易陷入失败循环(README 参数说明原文) |
设 condition_on_previous_text=False;配合 vad_filter=True 静音过滤;必要时调 no_speech_threshold、compression_ratio_threshold;专有名词用 initial_prompt 提前给出。 |
05.7 本节来源清单
| # | URL | 用途 | 验证方式(2026-10-25) |
|---|---|---|---|
| 1 | https://github.com/SYSTRAN/faster-whisper | 官方仓库主页 | curl HTML 200(GitHub 主页受 robots.txt 限制 web_fetch,改用 raw README 精读 + curl 核验) |
| 2 | https://raw.githubusercontent.com/SYSTRAN/faster-whisper/master/README.md | 项目 README(定位、Requirements、GPU 库、安装、用法、benchmark、VAD、批处理、模型转换的唯一事实来源) | curl 200 下载后全文精读(297 行) |
| 3 | https://github.com/SYSTRAN/faster-whisper/blob/master/LICENSE | MIT 许可证原文 | curl raw LICENSE 200,开头 MIT License / Copyright (c) 2023 SYSTRAN 已核对 |
| 4 | https://pypi.org/project/faster-whisper/ | PyPI 发行页(版本 1.2.1、license MIT、Python >=3.9) | curl 200;https://pypi.org/pypi/faster-whisper/json 复核 info.version=1.2.1、requires_python>=3.9、license=MIT |
| 5 | https://github.com/SYSTRAN/faster-whisper/blob/master/faster_whisper/transcribe.py | WhisperModel.__init__ 与 transcribe() 签名、默认值、docstring 来源 |
curl raw 200,1986 行;初始化签名 622–672 行、转写签名 781–825 行已逐行核对 |
| 6 | https://github.com/OpenNMT/CTranslate2/ | 推理引擎上游仓库(README 引用) | curl 200 |
| 7 | https://opennmt.net/CTranslate2/quantization.html | compute_type 量化类型官方文档 |
curl 200 |
| 8 | https://github.com/PyAV-Org/PyAV | 音频解码库(README「FFmpeg does not need to be installed」依据) | curl 200 |
| 9 | https://developer.nvidia.com/cublas | cuBLAS for CUDA 12 官方下载页(README GPU 节链接) | curl 200 |
| 10 | https://developer.nvidia.com/cudnn | cuDNN 9 for CUDA 12 官方下载页(README GPU 节链接) | curl 200 |
| 11 | https://github.com/Purfview/whisper-standalone-win/releases/tag/libs | Windows/Linux 独立 NVIDIA 库压缩包(README 折叠节方式三) | curl 200 |
| 12 | https://github.com/snakers4/silero-vad | 内置 VAD 模型上游仓库(README VAD filter 节) | curl 200 |
| 13 | https://huggingface.co/Systran | CT2 模型自动下载组织仓库(README Model conversion 节) | curl 200 |
| 14 | https://huggingface.co/Systran/faster-whisper-tiny | tiny 模型仓库(72.0 MB model.bin) | curl 200;tree API 实测体积 |
| 15 | https://huggingface.co/Systran/faster-whisper-large-v3 | large-v3 模型仓库(2944.3 MB model.bin) | curl 200;tree API 实测体积 |
| 16 | https://github.com/openai/whisper | 原版 Whisper 上游;模型参数量、原版参考显存、A100 相对速度对照表来源 | curl 200;raw README「Available models and languages」表格已核对(表内数值为原版 PyTorch 基线,非 CT2 实测,文中已标注) |
| 17 | https://huggingface.co/docs/huggingface_hub/guides/environment-variables | HF_ENDPOINT 镜像环境变量机制官方文档 |
curl 200 |
| 18 | https://huggingface.co/distil-whisper/distil-large-v3 | README「Faster Distil-Whisper」引用的蒸馏模型卡 | 链接来自 README;未单独抓取模型卡内容,参数以 README 示例为准 |
| 19 | https://github.com/Softcatala/whisper-ctranslate2 | README Community integrations 所列第三方 CLI(非官方组件,文中已标注) | curl 200 |
| 20 | https://github.com/SYSTRAN/faster-whisper/archive/refs/heads/master.tar.gz | README「Install the master branch」安装源 | 链接来自 README 折叠节;未在本环境执行安装 |
| 21 | https://github.com/SYSTRAN/faster-whisper/archive/a4f1cc8f11433e454c3934442b5e1a4ed5e865c3.tar.gz | README「Install a specific commit」示例 commit 安装源 | 链接来自 README 折叠节;commit 哈希逐字摘自 README |
| 22 | https://hf-mirror.com | HF 国内镜像站首页;HF_ENDPOINT=https://hf-mirror.com 镜像目标 |
首页 curl 200;模型文件解析在本环境超时,镜像可用性以读者本地网络为准 |
| 23 | https://github.com/SYSTRAN/faster-whisper/workflows/CI/badge.svg | README 第 1 行 CI 徽章(状态标识,非项目配图) | 随 README 一并核验 |
| 24 | https://badge.fury.io/py/faster-whisper.svg | README 第 1 行 PyPI 版本徽章(状态标识,非项目配图) | 随 README 一并核验 |
待复核项:各档位 CT2 模型在 RTX 3070 8GB 上的独立显存占用,官方 README 仅公布 large-v2(GPU)与 small(CPU)实测数据;其余档位数值请以本机
nvidia-smi实测为准,本节未做外推估算。
06. LiveTalking —— 实时交互流式数字人引擎,文本/音频驱动数字人实时口型同步并推流输出
适用场景:个人电脑本地部署数字人口播、虚拟主播/直播带货、AI 客服、在线教育分身、大屏讲解、短视频批量出镜。本节命令以官方 README、官方文档站、官方源码(
config.py、app.py、docs/api.md)为准;未被官方文档写明的数值会在表格中显式标注"官方未列明 / 待验证"。
06.1 项目定位与基本信息
| 项目 | 内容 |
|---|---|
| 一句话定位 | 实时交互流式数字人引擎,通过文本或语音驱动虚拟形象说话,结合 LLM 实现音视频同步对话,支持 WebRTC / RTMP / 虚拟摄像头输出(来源:官方 README 标题与"使用场景"章节) |
| 开源许可 | Apache License 2.0。出处:官方仓库 LICENSE 文件(https://raw.githubusercontent.com/lipku/LiveTalking/main/LICENSE,web_fetch 全文核验为 Apache-2.0 原文,版权署名 livetalking@lipku);README 顶部徽章同时标注 license-Apache 2(https://github.com/lipku/LiveTalking/blob/main/README.md) |
| 官方 GitHub 仓库 | https://github.com/lipku/LiveTalking(curl HEAD 状态码 200,2026-10-25 核验) |
| 国内镜像仓库 | Gitee:https://gitee.com/lipku/LiveTalking(curl 200);GitCode:https://gitcode.com/lipku/LiveTalking(curl 200,README"国内镜像"章节给出) |
| 官方文档/官网 | https://doc.livetalking.ai —— 官方使用说明、FAQ、API 文档入口(curl 200);API 明细见仓库 docs/api.md;FAQ:https://doc.livetalking.ai/docs/faq/(curl 200) |
| 版本信息 | 截至 2026-10,GitHub Releases 最新标签 v2.0.4(来源:README release 徽章渲染值 https://img.shields.io/github/v/release/lipku/LiveTalking,2026-10-25 curl 核验;Release 列表页 https://github.com/lipku/LiveTalking/releases。本次撰写时 GitHub API 限流,发布日期未能核验,待验证) |
| 官方测试环境 | README"1. 安装"声明:已在 Ubuntu 22.04、Python 3.12、PyTorch 2.9.1、CUDA 12.8 测试通过;README 徽章标注 python-3.10+、os-linux, win, mac |
| 官方后端模型 | README Features 列出:ernerf、musetalk、wav2lip、Ultralight-Digital-Human;当前 main 分支 app.py 注册并可直接启动的 avatar 插件为 musetalk / wav2lip / ultralight(来源:app.py 中 _avatar_modules 字典);ernerf 模型位于独立 git 分支 ernerf-rtmp(来源:官方文档 3.1.3 节) |
| 输出方式 | README Features:WebRTC、RTMP、虚拟摄像头;config.py 中 --transport 可选 rtcpush / webrtc / rtmp / virtualcam,默认 webrtc |
06.2 官方图片
下图为官方仓库 README 中使用的官方 logo 与 Web 首页界面截图,均从官方仓库 assets/ 目录原始下载,未做任何二次生成或加工。
图 06-1 LiveTalking 官方 Logo

- 来源 URL:https://raw.githubusercontent.com/lipku/LiveTalking/main/assets/LiveTalking-logo.png(README 顶部
<img src="./assets/LiveTalking-logo.png">) - 下载方式:
curl -L -o 06_livetalking_logo.png "<上述 URL>";2026-10-25 下载后file校验:PNG image data, 800 x 281, 8-bit/color RGBA,大小 182,644 字节(>20KB)。
图 06-2 LiveTalking Web 首页界面(官方 README "2.4 Web 页面" 引用图)

- 来源 URL:https://raw.githubusercontent.com/lipku/LiveTalking/main/assets/index.jpg(README 中
<img src="./assets/index.jpg">) - 下载方式:
curl -L -o 06_livetalking_webui.jpg "<上述 URL>";2026-10-25 下载后file校验:JPEG image data, JFIF standard 1.01, 2642x1356, baseline,大小 279,848 字节(>20KB)。
备用官方架构图(已下载备查,本节未在正文引用):数据流图 https://raw.githubusercontent.com/lipku/LiveTalking/main/assets/dataflow.png,本地保存为
https://zhouruolin.cn/upload/06_livetalking_dataflow.png,file校验为PNG image data, 2476 x 262,84,053 字节。
06.3 环境要求
下表"官方依据"列标注信息是否直接来自官方 README / 文档 / 源码;官方未给出的数值不做推算填充。
| 维度 | 要求 / 说明 | 官方依据 |
|---|---|---|
| 操作系统 | README 徽章:linux, win, mac;官方实测环境为 Ubuntu 22.04;官方同时提供 Windows 整合包(README 2.5 节)。本机推荐路径:WSL2(Ubuntu 24.04)内运行源码;Windows 原生可使用官方整合包 |
README 徽章 + README"1. 安装" + README 2.5 节 |
| Python | 徽章 python-3.10+;安装命令使用 Python 3.12(conda create -n livetalking python=3.12) |
README"1. 安装" |
| PyTorch / CUDA | README 测试组合:PyTorch 2.9.1、torchvision 0.24.1、torchaudio 2.9.1、CUDA 12.8;若本机 nvidia-smi 显示的 CUDA 版本不同,README 要求按 PyTorch 官网(https://pytorch.org/get-started/previous-versions)选择对应版本 |
README"1. 安装"(原文:"如果 CUDA 版本不为 12.8(运行 nvidia-smi 确认),请根据 PyTorch 官网安装对应版本") |
| GPU 与显存(官方性能表) | wav2lip256:RTX 3060 → 60 FPS,RTX 3080Ti → 120 FPS;官方推荐 RTX 3060 及以上。musetalk:RTX 3080Ti → 42 FPS,RTX 3090 → 45 FPS,RTX 4090 → 72 FPS;官方推荐 RTX 3080Ti 及以上。官方未在 README 给出各模型显存占用 GB 数值(待实测确认) | README"6. 性能指标"实时推理性能表 |
| 本机显卡适配说明 | RTX 3070 8GB:跑 wav2lip256 后端高于官方推荐的 3060 起步线,可运行;musetalk 后端官方推荐 3080Ti 起步,3070 不在官方测试清单内,官方未承诺帧率,建议先跑 wav2lip 后端、必要时调低 --batch_size。RTX 4090 24GB:处于官方 musetalk 测试型号(4090 72 FPS)之上,余量充足。以上 3070 判断为基于官方性能表的对照说明,非官方实测结论 |
README 性能表(对照得出,已注明) |
| 内存 | 官方 README / 文档未列明内存容量要求(待验证)。README 性能指标说明:"每路视频压缩消耗 CPU,分辨率越高 CPU 消耗越大;每路口型推理消耗 GPU;不说话时并发数取决于 CPU,同时说话并发数取决于 GPU" | README"6. 性能指标" |
| 必备依赖 | 核心依赖见官方 requirements.txt:numpy、scipy、resampy、soundfile==0.12.1、einops、transformers、edge_tts、flask、opencv-python-headless、aiortc、aiohttp_cors、diffusers、accelerate、librosa、openai、websockets==12.0、dashscope、python-dotenv、pyyaml、tqdm 等(以仓库 requirements.txt 原文为准) |
https://raw.githubusercontent.com/lipku/LiveTalking/main/requirements.txt(web_fetch 核验) |
| ffmpeg | README 源码安装命令未单独列出 ffmpeg;官方 FAQ 第 6 条:RTMP 推流时 ffmpeg 版本需包含 libx264("运行一下 ffmpeg,打印的信息里需要有 libx264,如果没有肯定不行");FAQ 给出的官方安装方式为 conda install ffmpeg(清华 conda-forge 源)。WSL2 Ubuntu 也可用系统包管理器安装(此为发行版通用做法,非 README 原文命令) |
FAQ https://doc.livetalking.ai/docs/faq/(web_fetch 核验) |
| 磁盘空间 / 模型权重体积 | 官方 README 与网盘页面未列明各权重文件体积(待下载后实测确认)。官方提供两份模型打包:wav2lip 运行所需模型(含 s3fd.pth、wav2lip256.pth、示例数字人 wav2lip256_avatar1.tar.gz);musetalk 后端模型包(含 musetalk 权重与 musetalk_avatar1.tar.gz) |
README 2.1 节 + 官方文档 3.1.1 / 3.1.2 节 |
| 网络要求 | 默认 TTS 为 edgetts(需要访问微软 Edge 在线语音接口);默认 LLM 为 dashscope(对话模式需要 DASHSCOPE_API_KEY);echo 复读模式不调用 LLM |
config.py 默认值 + .env.example + 官方文档 3.5 节 |
06.4 最详细部署步骤(WSL2 Ubuntu 24.04 / Windows 双视角)
视角 A:WSL2 内 Ubuntu 24.04(与官方测试环境 Ubuntu 22.04 同系,源码部署主路径)。视角 B:Windows 10/11 原生,优先使用官方整合包;源码级调试建议回到 WSL2。
06.4.1 安装基础依赖
视角 A:WSL2 Ubuntu 24.04(官方 README 命令)
# 0. 确认已安装 NVIDIA 驱动(Windows 侧)并在 WSL2 中可看到显卡
nvidia-smi
# 1. 安装 miniconda 后创建官方指定环境(README 原文命令)
conda create -n livetalking python=3.12
conda activate livetalking
# 2. 安装 PyTorch:README 测试组合 CUDA 12.8
# 若 nvidia-smi 显示的 CUDA 版本不同,请按 https://pytorch.org/get-started/previous-versions 选择对应 cu 版本
pip install torch==2.9.1 torchvision==0.24.1 torchaudio==2.9.1 --index-url https://download.pytorch.org/whl/cu128
# 3. 拉取源码(国内可改用 Gitee / GitCode 镜像,见 06.4.2"国内加速方案")
git clone https://github.com/lipku/LiveTalking.git
cd LiveTalking
# 4. 安装 Python 依赖(README 原文命令)
pip install -r requirements.txt
# 5. ffmpeg(FAQ 官方方式:conda 安装;需保证编译选项含 libx264)
conda install -c conda-forge ffmpeg
ffmpeg -version # 输出信息中应能看到 --enable-libx264 相关支持
视角 B:Windows 10/11 原生
- 官方 README 2.5 节提供 Windows 整合包:https://pan.quark.cn/s/a040bf5cb065(curl 200 核验,2026-10-25),按包内说明启动即可,无需手动装 PyTorch。
- 官方 README 2.3 节另提供 Windows 桌面客户端:https://pan.quark.cn/s/d7192d8ac19b(curl 200 核验)。
- README 未提供 Windows 原生逐条源码安装命令;若需源码部署,在 WSL2 Ubuntu 中执行视角 A 的步骤。
06.4.2 下载模型 / 权重
wav2lip 后端(README 2.1 节 + 官方文档 3.1.1 节,两个官方网盘二选一)
| 网盘 | 官方地址 | 核验状态 |
|---|---|---|
| 夸克云盘 | https://pan.quark.cn/s/83a750323ef0 | curl 200(2026-10-25) |
| Google Drive | https://drive.google.com/drive/folders/1FOC_MD6wdogyyX_7V1d4NDIO7P9NlSAJ?usp=sharing | 沙箱网络直连超时(000);链接来自官方 README 2.1 节,境外网络可访问性待用户所在环境核验 |
下载后按官方文档 3.1.1 节放置文件:
| 官方要求的目标路径 | 文件 |
|---|---|
wav2lip/face_detection/detection/sfd/s3fd.pth |
s3fd.pth(官方文档 3.1.1 节) |
models/wav2lip.pth |
wav2lip256.pth 拷贝到 models/ 目录后重命名为 wav2lip.pth(README 2.1 节 + 文档 3.1.1 节;app.py 中 load_model("./models/wav2lip.pth") 与之一致) |
data/avatars/wav2lip256_avatar1/ |
解压 wav2lip256_avatar1.tar.gz,整个文件夹拷贝到 data/avatars/ 目录下(README 2.1 节) |
musetalk 后端(官方文档 3.1.2 节)
- 官方迅雷网盘地址:https://pan.xunlei.com/s/VOW3nYho64jeCxT2sxrjcE7fA1?pwd=evnw(curl 200,2026-10-25 核验;提取码
evnw来自链接本身) - 将压缩包内
models/下文件拷贝到项目models/目录;解压musetalk_avatar1.tar.gz后将整个文件夹拷贝到data/avatars/目录下。 - 官方文档 3.1.2 节注明:以下库只在生成 avatar 时需要,推理不需要:
conda install ffmpeg
sudo apt install build-essential cmake
pip install "setuptools<81"
pip install face_recognition
国内加速方案(README 原文给出)
- 源码国内镜像:Gitee https://gitee.com/lipku/LiveTalking、GitCode https://gitcode.com/lipku/LiveTalking(README 首页"国内镜像"章节;两站 curl 均 200)。
- 模型本身官方即托管于国内网盘(夸克 / 迅雷),无需 HF 镜像;Google Drive 为 README 备选下载渠道。
06.4.3 关键配置(命令行参数,来源:官方 config.py 源码 parse_args())
| 参数 | 默认值 | 说明 |
|---|---|---|
--model |
wav2lip |
avatar 模型:musetalk / wav2lip / ultralight(app.py 注册项;README Features 另列 ernerf,独立分支) |
--avatar_id |
wav2lip256_avatar1 |
data/avatars 目录下的数字人形象 ID |
--transport |
webrtc |
输出方式:rtcpush / webrtc / rtmp / virtualcam |
--batch_size |
16 |
推理 batch 大小;官方文档 3.1.1 节说明"可以设置 --batch_size 提高显卡利用率" |
--tts |
edgetts |
TTS 插件:edgetts / gpt-sovits / cosyvoice / fishtts / tencent / doubao / indextts2 / azuretts / qwentts(config.py help 文本) |
--REF_FILE |
zh-CN-YunxiaNeural |
参考文件名或语音模型 ID(音色) |
--REF_TEXT |
None |
参考文本(gpt-sovits 等声音克隆场景使用) |
--TTS_SERVER |
http://127.0.0.1:9880 |
第三方 TTS 服务地址 |
--llm_provider |
dashscope |
LLM 提供方:dashscope / orcarouter |
--llm_model |
空 | 覆盖默认 LLM 模型;空 = 提供方默认模型 |
--push_url |
http://localhost:1985/rtc/v1/whip/?app=live&stream=livestream |
rtcpush 模式推流地址 |
--max_session |
5 |
最大并发会话数;官方文档 3.6 节示例 --max_session 3 |
--listenport |
8010 |
Web 服务监听端口(app.py 中 TCPSite(runner, '0.0.0.0', opt.listenport)) |
--stun |
stun:stun.freeswitch.org:3478 |
WebRTC STUN 服务器地址 |
--fps |
25 |
视频帧率,help 文本注明 must be 25 |
--customvideo_config |
空 | 自定义动作编排 JSON 配置路径 |
--audio_output_device |
None |
音频输出设备索引,仅 --transport=virtualcam 生效;用 python list_audio_devices.py 查看设备 |
--config / -c |
config.yaml |
YAML 配置文件路径;优先级:CLI 参数 > YAML > 默认值 |
环境变量(来源:官方 .env.example):.env.example 提供 TENCENT_APPID / TENCENT_SECRET_KEY / TENCENT_SECRET_ID / DASHSCOPE_API_KEY / DOUBAO_API_KEY / AZURE_SPEECH_KEY / AZURE_TTS_ENDPOINT,按所选 TTS / LLM 服务填写;不使用对应服务可留空。
06.4.4 启动服务(官方 README 2.2 节命令)
conda activate livetalking
cd LiveTalking
# wav2lip 后端(默认)
python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1
# musetalk 后端示例(需先按 06.4.2 下载对应模型与 avatar)
python app.py --transport webrtc --model musetalk --avatar_id musetalk_avatar1
README 原文注意事项:服务端需开放端口 TCP:8010,UDP:1-65536(WebRTC 媒体通道)。本机
http://127.0.0.1:8010无需额外放行;云服务器部署需在安全组放行。
06.5 使用方法
06.5.1 启动方式与入口页面(README 2.3 / 2.4 节 + docs/api.md)
| 接入方式 | 说明 | 地址 / 入口 |
|---|---|---|
| 浏览器 WebUI | 打开 http://<serverip>:8010/index.html,点击"开始连接"播放数字人视频,在文本框输入文字提交即可(README 2.3 节) |
/index.html(首页:WebRTC 连接 + 文本/音频驱动 + 录制控制) |
| Avatar 生成页 | 上传视频自动生成数字人形象(README 2.4 节) | /avatar.html |
| 管理后台 | 实时监控会话状态与全局配置(README 2.4 节) | /admin.html |
| 命令行 / HTTP API | 参考 docs/api.md 通过 HTTP 接口驱动(README 2.3 节) |
基础路径 http://<host>:<listenport> |
| 桌面客户端 | 官方下载:https://pan.quark.cn/s/d7192d8ac19b(README 2.3 节) | Windows 客户端 |
06.5.2 WebUI 操作流程(README 2.3 节 + 官方文档 3.1 节)
- 启动服务后浏览器访问
http://127.0.0.1:8010/index.html。 - 点击"开始连接"建立 WebRTC 通道,页面出现数字人待机画面。
- 在文本框输入要播报的文字,提交后由默认 TTS(edgetts)合成语音并驱动口型;切换到对话模式会先经 LLM 生成回复再播报。
- 需要自定义形象时进入
/avatar.html上传闭嘴不说话的视频生成 avatar(官方文档 3.1.1 / 3.1.2 节给出的命令行等价方式见 06.5.4)。 - 录制:首页提供录制控制按钮;对应后端 API 为
/record与/record/{sessionid}。
06.5.3 HTTP API 参数说明(来源:官方 docs/api.md,web_fetch 全文核验)
| 接口 | 方法 | 关键参数 | 说明 |
|---|---|---|---|
/offer |
POST(JSON) | sdp(必填)、type(必填,offer)、avatar、refaudio、reftext、custom_config |
交换 SDP 建立 WebRTC 连接;响应含 sessionid |
/whep |
POST(application/sdp) |
Query:avatar、refaudio、reftext、tts、tts_server、tts_speed、custom_config |
WHEP 协议接入;响应头 X-Session-ID 返回会话 ID |
/human |
POST(JSON) | sessionid(必填)、text(必填)、type(必填:echo 直接复读 / chat 触发 LLM 回答)、interrupt(可选,bool,是否打断当前播报)、tts(可选,透传 TTS 配置) |
文本驱动数字人说话 |
/humanaudio |
POST(multipart/form-data) | sessionid(必填)、file(必填,音频文件) |
上传音频文件直接驱动数字人 |
/interrupt_talk |
POST | sessionid(必填) |
立即清空当前会话音频队列,打断播报 |
/is_speaking |
POST | sessionid(必填) |
查询是否正在说话,返回 data: true/false |
/record |
POST | sessionid(必填)、type(必填:start_record / end_record) |
服务端渲染录制控制 |
/record/{sessionid} |
GET | 路径参数 sessionid |
下载录制完成的 MP4;不存在返回 404 |
/set_audiotype |
POST | sessionid(必填)、audiotype(必填,int) |
设置动作编排(静音视频 / 自定义状态) |
/sse?sessionid=<sessionid> |
GET(SSE) | Query sessionid(必填) |
服务器→客户端异步状态推送,事件格式 data: {"status": "start"} |
06.5.4 常用命令行补充(官方文档 3.1 节)
# wav2lip 后端:用自己的视频生成 avatar(输入视频需闭嘴不说话;img_size 固定 256)
python -m avatars.wav2lip.genavatar --video_path xxx.mp4 --img_size 256 --avatar_id wav2lip256_avatar1
# 若一直卡住不动,可将 --face_det_batch_size 改小(文档 3.1.1 节备注)
# musetalk 后端:用视频或图片生成 avatar
python -m avatars.musetalk.genavatar --avatar_id musetalk_avatar1 --file ~/sun.mp4
# 多并发会话(文档 3.6 节)
python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1 --max_session 3
# 虚拟摄像头输出(文档 3.8 节:先安装 pyvirtualcam 驱动与 Python 包、pyaudio)
pip install pyvirtualcam
pip install pyaudio
python app.py --transport virtualcam --model wav2lip --avatar_id wav2lip256_avatar1
# 浏览器另开 http://<serverip>:8010/virtualcam.html;OBS 等直播软件选择虚拟摄像头即可
06.5.5 端到端示例(输入 → 命令 → 输出)
场景:本机 WSL2 内用默认 wav2lip 数字人播报一句开场词,并录制为 MP4。
- 输入素材:无需额外图片/视频素材,使用官方示例 avatar
wav2lip256_avatar1;播报文本:大家好,欢迎来到我的频道。 - 启动服务:
conda activate livetalking
cd LiveTalking
python app.py --transport webrtc --model wav2lip --avatar_id wav2lip256_avatar1
- 浏览器打开
http://127.0.0.1:8010/index.html→ 点击"开始连接";在文本框输入大家好,欢迎来到我的频道。提交(type=echo复读模式,不依赖 LLM Key)。 - 录制(
docs/api.md):先POST /record,body{"sessionid": "<连接后获得的 sessionid>", "type": "start_record"};播报结束后type改为end_record;最后GET http://127.0.0.1:8010/record/<sessionid>.mp4下载成片。 - 输出:浏览器端实时看到口型同步的数字人画面;服务端
data/record/<sessionid>.mp4为录制视频。 - 实时性自检(README"6. 性能指标"):后端日志
inferfps= GPU 推理帧率,finalfps= 最终推流帧率,两者均需 ≥25 才算实时。
06.6 常见坑(现象 + 原因 + 解决,均来自官方 README / FAQ / 文档)
| # | 现象 | 原因 | 官方解决方式 |
|---|---|---|---|
| 1 | 启动后报找不到 wav2lip.pth 或模型加载失败 |
模型文件未按 README 2.1 节放置,或 wav2lip256.pth 未重命名为 wav2lip.pth;s3fd.pth 未放入 wav2lip/face_detection/detection/sfd/ |
按 06.4.2 表格核对三个目标路径;app.py 固定读取 ./models/wav2lip.pth |
| 2 | 画面卡顿、finalfps 低于 25,不说话不卡、一说话就掉帧 |
同时说话并发受 GPU 限制;--batch_size 过大;显卡性能不匹配所选后端的推荐型号 |
参考 README 性能表:wav2lip256 需 RTX 3060+,musetalk 需 RTX 3080Ti+;适当调低 --batch_size;后端日志查看 inferfps / finalfps 是否 ≥25 |
| 3 | RTMP 推流失败 / 推流后无画面 | ffmpeg 编译选项不含 libx264(FAQ 第 6 条,"网上版友反馈需要 4.2.2 版本",作者注明不确定具体哪些版本不行) | FAQ:conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 后 conda install ffmpeg;ffmpeg -version 输出中需能看到 libx264 |
| 4 | 浏览器无法采集麦克风 / 语音输入被拦截 | http://<非 localhost IP>:8010 属于非安全来源,浏览器禁止音频采集(官方文档 3.7 节) |
浏览器地址栏打开 edge://flags/#unsafely-treat-insecure-origin-as-secure,将服务端网址(如 http://192.168.3.5:8010)填入并重启浏览器 |
| 5 | 依赖版本报错:numpy.dtype size changed, may indicate binary incompatibility |
numpy 版本与编译好的二进制包不兼容 | FAQ 第 9 条:pip install --upgrade "numpy==1.26.4" |
| 6 | 依赖版本报错:cannot import name 'Dinov2WithRegistersConfig' from 'transformers',或提示需升级 torch 到 v2.6 |
transformers 版本不匹配 | FAQ:pip install transformers==4.50.0(两条 FAQ 记录均指向该版本) |
| 7 | musetalk 预处理数字人报错 'MMCV==2.2.0 is used but incompatible' |
pip 版本过高导致 MMCV 安装不匹配 | FAQ 第 8 条:python -m pip install pip==24.0,再 mim install "mmdet>=3.1.0"、mim install "mmpose>=1.1.0";若报 'Adafactor is already registered in optimizer at torch.optim',执行 mim install mmengine==0.10.7 |
| 8 | 对话模式报错 / 回复为空 | 未配置 LLM 服务密钥;默认 llm_provider=dashscope 需要 DASHSCOPE_API_KEY |
在 .env 中配置 DASHSCOPE_API_KEY,或改用 --llm_provider orcarouter 并配置对应网关密钥;仅复读用 echo 模式,不需要 LLM Key(文档 3.5 节 + .env.example) |
| 9 | 端口 8010 被占用 | 本机其他进程占用默认监听端口 | 用 --listenport 指定其他端口(config.py 参数);云服务器确认 TCP:8010 与 UDP:1-65536 已放行 |
| 10 | setuptools 相关报错(face_recognition 安装阶段) |
setuptools 版本过高 | FAQ 第 12 条:pip install "setuptools<81" |
06.7 本节来源清单
| # | URL | 用途 | 验证方式(2026-10-25) |
|---|---|---|---|
| 1 | https://github.com/lipku/LiveTalking | 官方仓库主页 | curl HEAD 200 |
| 2 | https://raw.githubusercontent.com/lipku/LiveTalking/main/README.md | README 全文(定位、Features、安装、模型下载、端口、性能表、页面、API 入口) | web_fetch 完整读取(2261 字符,全文) |
| 3 | https://raw.githubusercontent.com/lipku/LiveTalking/main/LICENSE | Apache-2.0 许可证核验 | web_fetch 完整读取(Apache 2.0 原文) |
| 4 | https://raw.githubusercontent.com/lipku/LiveTalking/main/config.py | CLI 参数、默认端口、默认模型/TTS/LLM 取值 | web_fetch 完整读取(1404 字符) |
| 5 | https://raw.githubusercontent.com/lipku/LiveTalking/main/app.py | 模型插件注册、默认加载路径、监听端口实现 | web_fetch 完整读取(2125 字符) |
| 6 | https://raw.githubusercontent.com/lipku/LiveTalking/main/requirements.txt | Python 依赖清单与版本钉版 | web_fetch 完整读取(全文 181 字符) |
| 7 | https://raw.githubusercontent.com/lipku/LiveTalking/main/.env.example | TTS/LLM 环境变量名清单(7 个变量) | web_fetch 完整读取(全文 46 字符) |
| 8 | https://raw.githubusercontent.com/lipku/LiveTalking/main/docs/api.md | HTTP API 接口与参数表 | web_fetch 完整读取(1265 字符) |
| 9 | https://doc.livetalking.ai | 官方文档站首页 | curl HEAD 200 |
| 10 | https://doc.livetalking.ai/docs/usage | 官方使用说明(四种模型、传输模式、TTS、动作编排、LLM、多并发、语音输入、虚拟摄像头) | web_fetch 完整读取(3818 字符) |
| 11 | https://doc.livetalking.ai/docs/faq/ | 官方 FAQ(模型、ffmpeg、numpy/transformers/MMCV/setuptools 等排错) | web_fetch 完整读取(634 字符) |
| 12 | https://doc.livetalking.ai/docs/service | 开源版 / 商用版说明入口 | curl HEAD 200 |
| 13 | https://github.com/lipku/LiveTalking/releases | Release 列表(v2.0.4 徽章对应页面) | README 徽章跳转目标;GitHub HTML 页 robots 限制自动抓取,版本号取自 #14 徽章 |
| 14 | https://img.shields.io/github/v/release/lipku/LiveTalking | 最新 release 标签 v2.0.4 | curl 读取 SVG,aria-label="release: v2.0.4" |
| 15 | https://gitee.com/lipku/LiveTalking | README 给出的国内 Gitee 镜像 | curl HEAD 200 |
| 16 | https://gitcode.com/lipku/LiveTalking | README 给出的国内 GitCode 镜像 | curl HEAD 200 |
| 17 | https://pan.quark.cn/s/83a750323ef0 | wav2lip 模型官方夸克网盘(README 2.1 + 文档 3.1.1) | curl HEAD 200 |
| 18 | https://drive.google.com/drive/folders/1FOC_MD6wdogyyX_7V1d4NDIO7P9NlSAJ?usp=sharing | wav2lip 模型官方 Google Drive 备选 | 沙箱网络直连 000(受限网络);URL 来自 README 原文,境外环境待用户核验 |
| 19 | https://pan.xunlei.com/s/VOW3nYho64jeCxT2sxrjcE7fA1?pwd=evnw | musetalk 后端模型官方迅雷网盘(文档 3.1.2) | curl HEAD 200 |
| 20 | https://pan.quark.cn/s/a040bf5cb065 | README 2.5 节 Windows 整合包 | curl HEAD 200 |
| 21 | https://pan.quark.cn/s/d7192d8ac19b | README 2.3 节 Windows 桌面客户端 | curl HEAD 200 |
| 22 | https://www.livetalking.top | README 2.5 节商用版体验地址 | curl HEAD 200 |
| 23 | https://raw.githubusercontent.com/lipku/LiveTalking/main/assets/LiveTalking-logo.png | 图 06-1 官方 logo 原图 | curl 下载 + file 校验 PNG 800×281,182,644 字节 |
| 24 | https://raw.githubusercontent.com/lipku/LiveTalking/main/assets/index.jpg | 图 06-2 官方 Web 首页截图原图 | curl 下载 + file 校验 JPEG 2642×1356,279,848 字节 |
| 25 | https://raw.githubusercontent.com/lipku/LiveTalking/main/assets/dataflow.png | 备用官方数据流图(已下载备查) | curl 下载 + file 校验 PNG 2476×262,84,053 字节 |
| 26 | https://github.com/lipku/livestream | README 使用场景中"虚拟主播/直播带货"关联项目 | curl HEAD 200 |
| 27 | https://github.com/letmaik/pyvirtualcam | 文档 3.8 节虚拟摄像头驱动 | curl HEAD 200 |
| 28 | https://github.com/lipku/python_rtmpstream | 文档 3.2.3 节 RTMP 推流依赖库 | curl HEAD 200 |
| 29 | https://github.com/anliyuan/Ultralight-Digital-Human | 文档 3.1.4 节 ultralight 后端训练参考项目 | curl HEAD 200 |
| 30 | https://pytorch.org/get-started/previous-versions | README 指定的 PyTorch 历史版本选择页(README 原文引用) | 官方站点,README 引用;未单独抓取页面内容 |
| 31 | https://download.pytorch.org/whl/cu128 | README 安装命令中 torch 2.9.1 cu128 wheel 索引 | curl HEAD 200 |
| 32 | https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge | FAQ 第 6 条 ffmpeg 安装所用 conda-forge 镜像 | curl HEAD 200 |
| 33 | https://github.com/lipku/LiveTalking/blob/main/README.md | README 源码页面(06.1 许可证徽章指向) | curl HEAD 200 |
07. MuseTalk —— 腾讯音乐 Lyra Lab 出品的实时高保真音频驱动视频口型同步模型
适用场景:给已有视频/照片中的人物换配音口型、配合 MuseV 生成的虚拟人视频完成口型对齐、离线批量配音成片;仓库同时提供普通推理、实时推理与 Gradio 网页 Demo 三套入口。本节命令与参数均以官方 README、官方仓库脚本(
scripts/inference.py、scripts/realtime_inference.py、app.py、inference.sh、download_weights.sh、download_weights.bat、requirements.txt、configs/inference/*.yaml)为准。
07.1 项目定位与基本信息
| 项目 | 内容 |
|---|---|
| 一句话定位 | 实时高质量音频驱动口型同步模型(MuseTalk: Real-Time High-Fidelity Video Dubbing via Spatio-Temporal Sampling),在 ft-mse-vae 潜空间中按输入音频修改人脸区域(256×256),支持中/英/日等多语言音频,NVIDIA Tesla V100 上 30fps+(来源:官方 README Overview 与开头摘要) |
| 开源许可 | 代码:MIT License(Copyright © 2024 Tencent Music Entertainment Group),学术与商业使用均无限制;训练好的模型权重:README 声明可用于任何用途,包括商业用途;whisper、ft-mse-vae、dwpose、S3FD 等第三方开源组件须遵守各自许可证;测试数据集仅可用于非商业研究目的(来源:官方仓库 LICENSE 文件 + README "Disclaimer/License" 章节,web_fetch 核验) |
| 官方 GitHub 仓库 | https://github.com/TMElyralab/MuseTalk(curl HEAD 200,2026-10-25 核验) |
| 官方 HuggingFace 权重仓库 | https://huggingface.co/TMElyralab/MuseTalk(curl HEAD 200);官方在线 Gradio Demo:https://huggingface.co/spaces/TMElyralab/MuseTalk(curl HEAD 200) |
| 官方文档/官网 | 本项目没有独立官方文档站点;使用说明全部位于 GitHub README;技术报告:https://arxiv.org/abs/2410.10122(curl 200),v2 版本 https://arxiv.org/abs/2410.10122v2(curl 200)。README 称"对新用户提供了详细安装与使用教程",即仓库 README 本身 |
| 版本信息 | 官方未在 GitHub Releases 发布版本包(release 徽章显示 "no releases or repo not found",2026-10-25 curl 核验);模型版本以 README News 为准:MuseTalk 1.5 于 2025-03-28 发布(清晰度、身份一致性、唇音同步均优于 1.0);训练代码于 2025-04-05 开源;1.0 版本于 2024-04-02 发布。当前 main 分支推理命令同时支持 v1(1.0)与 v15(1.5) |
| 作者 / 机构 | Yue Zhang、Zhizhou Zhong、Minhao Liu、Zhaokang Chen、Bin Wu†、Yubin Zeng、Chao Zhan、Junxin Huang、Yingjie He、Wenjiang Zhou;同等贡献,†通讯作者 benbinwu@tencent.com;腾讯音乐娱乐 Lyra Lab(README 首页署名) |
| 技术要点 | 非扩散模型:单次前向在潜空间完成 inpainting;音频由冻结的 whisper-tiny 编码;生成网络借用 Stable Diffusion UNet 结构,音频 embedding 经交叉注意力融合到图像 embedding(README "Model" 章节) |
| 已知局限(README "Limitations") | 人脸区域 256×256,分辨率未达理论上限,可结合 GFPGAN 等超分模型提升;胡须、唇形唇色等面部细节保留不充分;当前流水线逐帧生成,存在抖动 |
07.2 官方图片
图 07-1 MuseTalk 模型结构(README "Model" 章节原图)

- 来源 URL:https://github.com/user-attachments/assets/02f4a214-1bdd-4326-983c-e70b478accba(README
原始链接,跟随 302 重定向下载) - 下载方式:
curl -L -o 07_musetalk_model_structure.png "<上述 URL>";2026-10-25 下载后file校验:PNG image data, 1934 x 646, 8-bit/color RGBA,大小 410,486 字节(>20KB)。
图 07-2 Gradio Demo 参数面板(README "Gradio Demo" 章节引用图 assets/figs/gradio_2.png)

- 来源 URL:https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/assets/figs/gradio_2.png
- 下载方式:
curl -L -o 07_musetalk_gradio_params.png "<上述 URL>";2026-10-25 下载后file校验:PNG image data, 1781 x 1066, 8-bit/color RGBA,大小 75,170 字节(>20KB)。
说明:仓库另一张
assets/figs/gradio.png(硬件耗时对比图)下载后仅 13,911 字节,未达到本节 ">20KB" 的交付要求,故未引用;本地亦未保留。
07.3 环境要求
| 维度 | 要求 / 说明 | 官方依据 |
|---|---|---|
| 操作系统 | README 同时提供 Linux 与 Windows 的安装、普通推理、实时推理命令;Gradio Demo 官方实测环境为 Windows + NVIDIA RTX 3050 Ti Laptop GPU(README "Gradio Demo" 章节)。本机 WSL2 Ubuntu 24.04 与 Windows 10/11 原生均可执行 README 命令 | README Installation / Quickstart / Gradio Demo |
| Python | 官方推荐 Python 3.10(conda create -n MuseTalk python==3.10) |
README "Build environment" |
| CUDA / PyTorch | 官方推荐 CUDA 11.7;安装 PyTorch 2.0.1、torchvision 0.15.2、torchaudio 2.0.2,提供 pip(cu118 wheel)与 conda 两种方式 | README "Install PyTorch 2.0.1" |
| GPU 与显存 | 实时推理基准:NVIDIA Tesla V100 上 30fps+(README Overview)。官方最低实测:Windows + RTX 3050 Ti Laptop 4GB 显存,fp16 模式生成 8 秒视频约 5 分钟(README Gradio 章节)。官方未列出其他消费级显卡的显存占用 GB 数值(待实测) | README Overview / Gradio Demo |
| 本机显卡适配说明 | RTX 3070 8GB:高于官方最低实测的 4GB 机型,离线普通推理在 fp16 下可运行;官方未承诺 3070 达到实时帧率,实时推理速度以本机实测为准。RTX 4090 24GB:显存余量充足,可关闭 fp16 换取更好画质。以上为对照官方最低配置的说明,非官方实测结论 | README Gradio 章节(对照得出,已注明) |
| 内存 | 官方 README / 脚本未列明内存容量要求(待验证) | — |
Python 依赖(requirements.txt 钉版,web_fetch 核验原文) |
diffusers==0.30.2、accelerate==0.28.0、numpy==1.23.5、tensorflow==2.12.0、tensorboard==2.12.0、opencv-python==4.9.0.80、soundfile==0.12.1、transformers==4.39.2、huggingface_hub==0.30.2、librosa==0.11.0、einops==0.8.1、gradio==5.24.0、gdown、requests、imageio[ffmpeg]、omegaconf、ffmpeg-python、moviepy |
https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/requirements.txt |
| MMLab 生态依赖 | openmim → mmengine → mmcv==2.0.1 → mmdet==3.1.0 → mmpose==1.1.0(README "Install MMLab Packages" 原文版本号) |
README Installation |
| ffmpeg | 普通推理与视频合成依赖 ffmpeg;README 要求先 ffmpeg -version 确认可用;Linux sudo apt-get install ffmpeg;Windows 从 FFmpeg static 构建下载并加入 PATH,或通过 --ffmpeg_path 参数指定 |
README "Setup FFmpeg" + Quickstart "Prerequisites" + scripts/inference.py |
| 磁盘空间 / 模型权重体积 | 下列体积为 2026-10-25 对各 HF / 官方 URL 执行 HTTP HEAD(Content-Length)实测;官方 README 未给出官方体积说明。7 个已测文件合计约 8.59 GiB;人脸解析 79999_iter.pth 托管于 Google Drive,本次未取得体积(待验证);另需为输出帧图片与成片预留磁盘 |
07.4.3 权重清单表(实测值 + 出处 URL) |
07.4 最详细部署步骤(WSL2 Ubuntu 24.04 / Windows 10-11 双视角)
07.4.1 环境搭建(README Installation 原文命令)
视角 A:WSL2 Ubuntu 24.04 / Linux
# 1. 创建官方推荐环境
conda create -n MuseTalk python==3.10
conda activate MuseTalk
# 2. 安装 PyTorch 2.0.1(README Option 1:pip cu118 wheel)
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
# README Option 2(conda 方式,二选一即可):
# conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.8 -c pytorch -c nvidia
# 3. 拉取源码
git clone https://github.com/TMElyralab/MuseTalk.git
cd MuseTalk
# 4. 安装其余 Python 依赖(README 原文命令)
pip install -r requirements.txt
# 5. 安装 MMLab 生态(README 原文命令)
pip install --no-cache-dir -U openmim
mim install mmengine
mim install "mmcv==2.0.1"
mim install "mmdet==3.1.0"
mim install "mmpose==1.1.0"
# 6. 安装 ffmpeg(README Quickstart Prerequisites:Linux 用系统包管理器)
sudo apt-get update && sudo apt-get install -y ffmpeg
ffmpeg -version # 确认命令在 PATH 中
视角 B:Windows 10/11 原生
# 1. conda 环境(与 Linux 一致)
conda create -n MuseTalk python==3.10
conda activate MuseTalk
# 2. PyTorch(README 同一组 pip 命令,Windows 下直接可用)
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
# 3. 源码与依赖
git clone https://github.com/TMElyralab/MuseTalk.git
cd MuseTalk
pip install -r requirements.txt
pip install --no-cache-dir -U openmim
mim install mmengine
mim install "mmcv==2.0.1"
mim install "mmdet==3.1.0"
mim install "mmpose==1.1.0"
ffmpeg 安装(README "Setup FFmpeg" 原文):
- 下载 ffmpeg-static 构建包:https://github.com/BtbN/FFmpeg-Builds/releases(curl 200 核验)。
- Linux:解压后设置环境变量
export FFMPEG_PATH=/path/to/ffmpeg,README 示例export FFMPEG_PATH=/musetalk/ffmpeg-4.4-amd64-static。 - Windows:将
ffmpeg-xxx\bin目录加入系统 PATH;命令行运行ffmpeg -version能输出版本信息即配置成功;也可以在推理命令中用--ffmpeg_path参数指定实际 bin 目录(README Windows 推理命令即采用该方式)。
07.4.2 下载权重(两种官方方式)
方式一:官方下载脚本(推荐,脚本内置国内 HF 镜像)
| 系统 | 命令 | 脚本事实(web_fetch 核验源码) |
|---|---|---|
| Linux | sh ./download_weights.sh |
脚本内 export HF_ENDPOINT=https://hf-mirror.com;依次下载 v1.0、v1.5、sd-vae、whisper、dwpose、syncnet;gdown 下载人脸解析权重;curl 下载 resnet18 |
| Windows | download_weights.bat |
脚本内 set HF_ENDPOINT=https://hf-mirror.com;使用 hf download 命令拉取 TMElyralab/MuseTalk 整仓及上述子模型;人脸解析从 HF ManyOtherFunctions/face-parse-bisent 下载两个文件 |
方式二:手动下载(README "Option 2: Manual Download" 原文清单)
- MuseTalk 训练权重:https://huggingface.co/TMElyralab/MuseTalk/tree/main
- 其他组件权重: - sd-vae-ft-mse:https://huggingface.co/stabilityai/sd-vae-ft-mse/tree/main(curl 200) - whisper-tiny:https://huggingface.co/openai/whisper-tiny/tree/main(curl 200) - dwpose:https://huggingface.co/yzd-v/DWPose/tree/main(curl 200) - syncnet:https://huggingface.co/ByteDance/LatentSync/tree/main(curl 200) - face-parse-bisent 79999_iter.pth:https://drive.google.com/file/d/154JgKpzCPW82qINcVieuPH3fZ2e0P812/view?pli=1 - resnet18:https://download.pytorch.org/models/resnet18-5c106cde.pth(curl 实测 46,827,520 字节)
权重目录结构(README 原文树形清单,必须按此组织到 models/ 下):
./models/
├── musetalk
│ ├── musetalk.json
│ └── pytorch_model.bin
├── musetalkV15
│ ├── musetalk.json
│ └── unet.pth
├── syncnet
│ └── latentsync_syncnet.pt
├── dwpose
│ └── dw-ll_ucoco_384.pth
├── face-parse-bisent
│ ├── 79999_iter.pth
│ └── resnet18-5c106cde.pth
├── sd-vae
│ ├── config.json
│ └── diffusion_pytorch_model.bin
└── whisper
├── config.json
├── pytorch_model.bin
└── preprocessor_config.json
07.4.3 权重文件清单与实测体积(2026-10-25 HTTP HEAD Content-Length 实测)
| 目录 / 文件 | 来源仓库 | 实测体积 | 备注 |
|---|---|---|---|
models/musetalk/pytorch_model.bin |
https://huggingface.co/TMElyralab/MuseTalk | 3,400,076,549 B ≈ 3.17 GiB | MuseTalk 1.0 权重;只用 1.5 时可不下载 |
models/musetalkV15/unet.pth |
https://huggingface.co/TMElyralab/MuseTalk | 3,400,074,924 B ≈ 3.17 GiB | MuseTalk 1.5 权重(README 推荐版本) |
models/sd-vae/diffusion_pytorch_model.bin |
https://huggingface.co/stabilityai/sd-vae-ft-mse | 334,707,217 B ≈ 319.2 MiB | 冻结 VAE |
models/whisper/pytorch_model.bin |
https://huggingface.co/openai/whisper-tiny | 151,095,027 B ≈ 144.1 MiB | 冻结音频编码器 |
models/dwpose/dw-ll_ucoco_384.pth |
https://huggingface.co/yzd-v/DWPose | 406,878,486 B ≈ 388.0 MiB | 人脸关键点检测 |
models/syncnet/latentsync_syncnet.pt |
https://huggingface.co/ByteDance/LatentSync | 1,488,019,828 B ≈ 1.39 GiB | 唇音同步判别网络 |
models/face-parse-bisent/resnet18-5c106cde.pth |
https://download.pytorch.org/models/resnet18-5c106cde.pth | 46,827,520 B ≈ 44.7 MiB | 人脸解析 backbone |
models/face-parse-bisent/79999_iter.pth |
Google Drive(README 手动清单) | 待验证(本次未能取得 Content-Length) | 人脸解析权重 |
| 合计(不含 79999_iter.pth) | — | 约 8.59 GiB | 另需预留输出帧与成片空间 |
国内加速:
download_weights.sh/download_weights.bat已把HF_ENDPOINT指向 https://hf-mirror.com(curl 200 核验);手动下载时也可在各 HF URL 前替换域名huggingface.co → hf-mirror.com。
07.4.4 关键配置文件修改(以官方 YAML 原文为准,web_fetch 核验)
普通推理配置 configs/inference/test.yaml(当前 main 分支原文):
task_0:
video_path: "data/video/yongen.mp4"
audio_path: "data/audio/yongen.wav"
task_1:
video_path: "data/video/yongen.mp4"
audio_path: "data/audio/eng.wav"
bbox_shift: -7
| 字段 | 含义 | 官方说明 |
|---|---|---|
video_path |
输入视频、图片文件或图片目录(scripts/inference.py 支持三种类型) |
README:video_path 为输入视频/图片/图片目录路径 |
audio_path |
输入音频文件路径 | README:audio_path 为输入音频文件路径 |
bbox_shift |
人脸掩码上边界偏移量,仅 v1.0 生效;正值(向下)增大张嘴幅度,负值(向上)减小张嘴幅度 | README "Use of bbox_shift to have adjustable results (For 1.0)";scripts/inference.py 中 v15 分支强制 bbox_shift = 0 |
result_name |
可选,自定义输出视频文件名(scripts/inference.py 读取该字段;YAML 默认配置未使用) |
源码字段 |
实时推理配置 configs/inference/realtime.yaml(当前 main 分支原文):
avator_1:
preparation: True # your can set it to False if you want to use the existing avator, it will save time
bbox_shift: 5
video_path: "data/video/yongen.mp4"
audio_clips:
audio_0: "data/audio/yongen.wav"
audio_1: "data/audio/eng.wav"
| 字段 | 含义 | 官方说明(README "Important notes for real-time inference") |
|---|---|---|
preparation |
处理新数字人时设为 True;复用已准备好的形象设为 False 以节省时间 |
README 实时推理注意事项第 1、4 条 |
bbox_shift |
人脸偏移量(仅 v1.0 生效;scripts/realtime_inference.py 中 v15 分支同样固定为 0) |
源码 + README |
video_path |
数字人参考视频路径 | README 配置说明 |
audio_clips |
实时模式下逐段生成所用的音频片段字典 | README 注意事项第 2 条:准备完成后,形象将用 audio_clips 中的音频片段生成视频 |
README 补充:为获得最佳效果,输入视频建议 25fps(与训练时一致);帧率偏低的视频可先插帧,或用 ffmpeg 转成 25fps。
07.4.5 启动与推理命令
普通推理(Normal Inference,README Quickstart 原文)
Linux:
# MuseTalk 1.5(README 推荐)
sh inference.sh v1.5 normal
# MuseTalk 1.0
sh inference.sh v1.0 normal
Windows(README 原文命令,路径分隔符为反斜杠;--ffmpeg_path 指向实际 ffmpeg bin 目录):
REM MuseTalk 1.5(推荐)
python -m scripts.inference --inference_config configs\inference\test.yaml --result_dir results\test --unet_model_path models\musetalkV15\unet.pth --unet_config models\musetalkV15\musetalk.json --version v15 --ffmpeg_path ffmpeg-master-latest-win64-gpl-shared\bin
REM MuseTalk 1.0:相应改为 models\musetalk、pytorch_model.bin、--version v1
实时推理(Real-time Inference,README Quickstart 原文)
Linux:
# MuseTalk 1.5(推荐)
sh inference.sh v1.5 realtime
# MuseTalk 1.0
sh inference.sh v1.0 realtime
Windows(README 原文命令):
REM MuseTalk 1.5(推荐)
python -m scripts.realtime_inference --inference_config configs\inference\realtime.yaml --result_dir results\realtime --unet_model_path models\musetalkV15\unet.pth --unet_config models\musetalkV15\musetalk.json --version v15 --fps 25 --ffmpeg_path ffmpeg-master-latest-win64-gpl-shared\bin
REM MuseTalk 1.0:相应改为 models\musetalk、pytorch_model.bin、--version v1
inference.sh脚本事实(web_fetch 核验):normal→scripts.inference+configs/inference/test.yaml+results/test;realtime→scripts.realtime_inference+configs/inference/realtime.yaml+results/realtime,并附加--fps 25;v1.0对应--version v1与models/musetalk/pytorch_model.bin,v1.5对应--version v15与models/musetalkV15/unet.pth。
Gradio 网页 Demo(README "Gradio Demo" 原文命令;Windows / Linux 通用):
# 可去掉 --use_float16 换取更好画质,但会增加显存占用与推理时间(README 原文说明)
python app.py --use_float16 --ffmpeg_path ffmpeg-master-latest-win64-gpl-shared\bin
app.py 参数(源码 argparse 核验):--ip 默认 127.0.0.1,--port 默认 7860,--share(创建公开链接),--use_float16,--ffmpeg_path 默认 Windows 路径 ffmpeg-master-latest-win64-gpl-shared\bin。启动后浏览器访问 http://127.0.0.1:7860。
07.5 使用方法
07.5.1 方式一:Gradio 网页 Demo(README "Gradio Demo" 章节 + app.py 界面定义)
- 启动
python app.py --use_float16 --ffmpeg_path <ffmpeg bin 目录>。 - 左侧面板:Drving Audio(
app.py源码原始标签,即 Driving Audio)上传驱动音频;Reference Video 上传参考视频(app.py的check_video会自动把视频转成 25fps)。 - 参数区:
-
BBox_shift value, px(bbox_shift,默认 0,仅 v1.0 可调;Demo 固定使用 v15) -Extra Margin(滑块 0–40,默认 10,决定下颌区域可动范围) -Parsing Mode(jaw/raw,默认jaw) -Left Cheek Width/Right Cheek Width(滑块 20–160,默认 90;jaw模式下决定左右脸颊编辑范围) - 先点 "1. Test Inpainting" 仅生成第一帧用于微调口型参数,减少成片面部瑕疵(README 建议:为节省推理时间,可先生成第一帧调试最佳参数)。
- 参数满意后点 "2. Generate",右侧输出口型同步视频。
07.5.2 方式二:命令行普通推理(离线批量配音)
- 编辑
configs/inference/test.yaml,把video_path/audio_path换成自己的素材;可写多个task_*任务。 - 执行 07.4.5 节普通推理命令。
- 输出目录:
results/test/v15/<视频名>_<音频名>.mp4(scripts/inference.py命名规则:output_basename = f"{input_basename}_{audio_basename}",先帧序列 + 临时视频,再用 ffmpeg 合并输入音频)。
07.5.3 方式三:命令行实时推理
- 首次为新数字人准备素材:
configs/inference/realtime.yaml中preparation: True,填写video_path与audio_clips。 - 执行 07.4.5 节实时推理命令;首次会做人脸检测、坐标提取、VAE latent 等准备工作并缓存:v15 为
results/v15/avatars/<avatar_id>/,v1 为results/avatars/<avatar_id>/(scripts/realtime_inference.py源码路径规则)。 - 后续复用同一形象:将
preparation改为False,跳过准备阶段。 - 可选跳过图片保存以测速:
python -m scripts.realtime_inference --inference_config configs/inference/realtime.yaml --skip_save_images
(README "For faster generation without saving images" 原文命令)
07.5.4 普通推理参数说明表(来源:scripts/inference.py 源码 argparse,逐项核验默认值)
| 参数 | 默认值 | 说明 |
|---|---|---|
--ffmpeg_path |
./ffmpeg-4.4-amd64-static/ |
ffmpeg 可执行文件所在目录;找不到时脚本将其加入 PATH(Windows 分隔符 ;,其他系统 :) |
--gpu_id |
0 |
使用的 GPU 编号 |
--vae_type |
sd-vae |
VAE 类型 |
--unet_config |
./models/musetalk/config.json(源码默认值) |
UNet 配置 JSON 路径;1.5 启动命令中传 models/musetalkV15/musetalk.json |
--unet_model_path |
./models/musetalkV15/unet.pth(源码默认值) |
UNet 权重路径;1.0 传 models/musetalk/pytorch_model.bin |
--whisper_dir |
./models/whisper |
Whisper 模型目录 |
--inference_config |
configs/inference/test_img.yaml(源码默认值) |
推理 YAML 配置路径 |
--bbox_shift |
0 |
人脸框偏移像素;仅 v1 生效,v15 固定为 0 |
--result_dir |
./results |
结果输出根目录 |
--extra_margin |
10 |
人脸裁剪额外边距(v15 生效) |
--fps |
25 |
视频帧率(图片/图片目录输入时使用) |
--audio_padding_length_left |
2 |
音频左侧 padding 长度 |
--audio_padding_length_right |
2 |
音频右侧 padding 长度 |
--batch_size |
8 |
推理 batch 大小 |
--output_vid_name |
None |
自定义输出视频文件名;YAML 中 result_name 会覆盖 |
--use_saved_coord |
关 | 复用已保存的人脸坐标 .pkl 以节省时间 |
--saved_coord |
关 | 保存坐标供后续复用;未开启则处理结束后删除坐标缓存 |
--use_float16 |
关 | 启用 fp16(pe / vae.vae / unet.model 转半精度),降低显存与耗时 |
--parsing_mode |
jaw |
人脸融合解析模式(jaw / raw) |
--left_cheek_width |
90 |
左脸颊区域宽度(v15 解析参数) |
--right_cheek_width |
90 |
右脸颊区域宽度(v15 解析参数) |
--version |
v15 |
模型版本,可选 v1 / v15 |
07.5.5 实时推理参数补充(来源:scripts/realtime_inference.py 源码 argparse)
| 参数 | 默认值 | 说明 |
|---|---|---|
--batch_size |
20 |
实时推理 batch 大小(与普通推理的 8 不同) |
--skip_save_images |
关 | 跳过分帧图片保存,仅统计速度(README 07.5.3 命令) |
--extra_margin |
10 |
人脸裁剪额外边距 |
--parsing_mode |
jaw |
融合解析模式 |
--left_cheek_width / --right_cheek_width |
90 |
左右脸颊宽度 |
| 其他参数 | 同 07.5.4 | 实时脚本内模型固定转半精度(pe.half() 等),无 --use_float16 开关 |
07.5.6 端到端示例(输入 → 命令 → 输出,使用仓库自带示例素材)
- 输入素材(仓库内置,已核验可达):
- 视频:
data/video/yongen.mp4(https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/data/video/yongen.mp4,HTTP HEAD 实测 1,870,923 字节) - 音频:data/audio/yongen.wav(https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/data/audio/yongen.wav,实测 1,536,078 字节) - 配置:保持
configs/inference/test.yaml中task_0默认值不变(即上述两个文件)。 - 命令(Linux / WSL2):
conda activate MuseTalk
cd MuseTalk
sh inference.sh v1.5 normal
- 处理过程:ffmpeg 抽帧 → Whisper 提取音频特征 → 人脸关键点与 bbox 检测(坐标缓存为
.pkl)→ VAE 编码 latent → UNet 逐 batch 推理 → 解码贴回原画面 → ffmpeg 合成yongen_yongen.mp4并合并音频。 - 输出:
results/test/v15/yongen_yongen.mp4(scripts/inference.py输出命名规则)。 - Windows 等价命令:
python -m scripts.inference --inference_config configs\inference\test.yaml --result_dir results\test --unet_model_path models\musetalkV15\unet.pth --unet_config models\musetalkV15\musetalk.json --version v15 --ffmpeg_path <实际 ffmpeg bin 目录>
07.6 常见坑(现象 + 原因 + 解决,依据官方 README 与源码)
| # | 现象 | 原因 | 官方依据 / 解决方式 |
|---|---|---|---|
| 1 | 权重下载慢、连接 HF 超时 | 官方默认权重托管在 HuggingFace,境内直连不稳定 | 使用 sh ./download_weights.sh(Linux)或 download_weights.bat(Windows);两个脚本均内置 HF_ENDPOINT=https://hf-mirror.com 镜像;手动下载时把 HF 域名替换为 hf-mirror.com |
| 2 | 报错 "Unable to find ffmpeg" 或视频合成失败 | ffmpeg 不在 PATH,或 --ffmpeg_path 指向目录不正确 |
先执行 ffmpeg -version 确认;Linux sudo apt-get install ffmpeg;Windows 从 https://github.com/BtbN/FFmpeg-Builds/releases 下载 static 包,把 bin 加入 PATH,或在命令中传正确的 --ffmpeg_path(README Setup FFmpeg + Quickstart Prerequisites) |
| 3 | 显存不足(OOM) | 未开 fp16,或 batch 过大;官方最低实测为 4GB 显存机型(fp16) | 普通推理加 --use_float16;Gradio 启动加 --use_float16(README:去掉该选项画质更好,但显存占用与推理时间增加);必要时降低 --batch_size |
| 4 | 依赖版本冲突、导入报错 | requirements.txt 为钉版环境(numpy 1.23.5、transformers 4.39.2、diffusers 0.30.2 等),MMLab 也有固定版本 |
严格按 README 顺序安装:先 pip install -r requirements.txt,再用 mim 安装 mmcv==2.0.1 / mmdet==3.1.0 / mmpose==1.1.0;不要随意 pip install -U 升级这些包 |
| 5 | 成片口型节奏与原视频帧率不匹配 | 输入视频帧率不是 25fps(训练帧率) | README:输入视频建议 25fps;帧率偏低时先插帧,或用 ffmpeg 转成 25fps;Gradio 的 check_video 会自动把上传视频转 25fps(app.py 源码) |
| 6 | v1.5 下调整 bbox_shift 没有效果 |
scripts/inference.py / scripts/realtime_inference.py 中 version == "v15" 时强制 bbox_shift = 0;bbox_shift 是 v1.0 专属参数 |
仅在 --version v1 时使用 bbox_shift(README "For 1.0" 小节与 assets/BBOX_SHIFT.md);v15 通过 extra_margin、parsing_mode、左右脸颊宽度调整 |
| 7 | 实时推理第二次运行仍重复做人脸检测与坐标提取 | realtime.yaml 中 preparation 仍为 True |
新形象首次 True 完成准备;复用同一形象改为 False(README 实时推理注意事项第 1、4 条);若修改了 bbox_shift,脚本会提示需要重建 avatar |
| 8 | Windows 下实时推理达不到 30fps+ | 官方 30fps+ 实时基准为 NVIDIA Tesla V100;README 未承诺消费级 Windows 显卡实时帧率 | 以本机实测为准;降低 --batch_size、使用 fp16;Windows 下 app.py 已按源码设置 WindowsSelectorEventLoopPolicy 解决异步 IO 问题(app.py 源码) |
| 9 | 找不到 79999_iter.pth 或 resnet18 |
手动下载清单中人脸解析权重来自 Google Drive,容易漏下 | Linux 脚本用 gdown --id 154JgKpzCPW82qINcVieuPH3fZ2e0P812 下载;Windows bat 从 HF ManyOtherFunctions/face-parse-bisent 拉取两个文件;按 07.4.2 目录结构核对 |
| 10 | 输出视频面部抖动 / 身份细节丢失 | README "Limitations" 已声明:当前流水线逐帧生成存在抖动;胡须、唇形唇色等细节保留不充分 | 属模型已知局限;可结合 GFPGAN 等超分模型后处理(README Limitations 建议) |
07.7 本节来源清单
| # | URL | 用途 | 验证方式(2026-10-25) |
|---|---|---|---|
| 1 | https://github.com/TMElyralab/MuseTalk | 官方仓库主页 | curl HEAD 200 |
| 2 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/README.md | README 全文(定位、News、环境、权重、配置、命令、Gradio、Limitations、License) | web_fetch 完整读取(5638 字符,全文) |
| 3 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/LICENSE | MIT 代码许可 + 第三方组件许可清单核验 | web_fetch 完整读取(3335 字符) |
| 4 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/requirements.txt | 钉版 Python 依赖清单(18 个依赖条目) | web_fetch 完整读取(72 字符) |
| 5 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/configs/inference/test.yaml | 普通推理配置字段与示例路径 | web_fetch 完整读取(47 字符) |
| 6 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/configs/inference/realtime.yaml | 实时推理配置字段与示例路径 | web_fetch 完整读取(65 字符) |
| 7 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/scripts/inference.py | 普通推理参数表、v15 固定 bbox_shift、输出命名规则、ffmpeg PATH 处理 | web_fetch 完整读取(2739 字符) |
| 8 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/scripts/realtime_inference.py | 实时推理参数表、准备阶段逻辑、fp16 固定处理 | web_fetch(snippet 定向读取 argparse 与类实现段落) |
| 9 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/app.py | Gradio 参数(ip/port/share/fp16/ffmpeg_path)、界面控件、25fps 转码、Windows 事件循环策略 | web_fetch 完整读取(5366 字符) |
| 10 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/inference.sh | Linux 普通/实时推理参数拼装规则 | web_fetch 完整读取(485 字符) |
| 11 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/download_weights.sh | Linux 下载脚本、HF 镜像地址、下载文件清单 | web_fetch 完整读取(430 字符) |
| 12 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/download_weights.bat | Windows 下载脚本、HF 镜像地址、人脸解析替代来源 | web_fetch 完整读取(349 字符) |
| 13 | https://huggingface.co/TMElyralab/MuseTalk | 官方模型权重仓库(v1.0 / v1.5) | curl HEAD 200;HF API 列文件 musetalk/pytorch_model.bin、musetalkV15/unet.pth 等 |
| 14 | https://huggingface.co/spaces/TMElyralab/MuseTalk | 官方在线 Gradio Demo | curl HEAD 200 |
| 15 | https://arxiv.org/abs/2410.10122 | 官方技术报告 | curl HEAD 200 |
| 16 | https://arxiv.org/abs/2410.10122v2 | 技术报告 v2(README News 10/18/2024 引用) | curl HEAD 200 |
| 17 | https://huggingface.co/stabilityai/sd-vae-ft-mse/tree/main | sd-vae-ft-mse 权重来源 | curl HEAD 200;权重体积 HTTP HEAD 334,707,217 B |
| 18 | https://huggingface.co/openai/whisper-tiny/tree/main | whisper-tiny 权重来源 | curl HEAD 200;体积 HTTP HEAD 151,095,027 B |
| 19 | https://huggingface.co/yzd-v/DWPose/tree/main | DWPose 权重来源 | curl HEAD 200;体积 HTTP HEAD 406,878,486 B |
| 20 | https://huggingface.co/ByteDance/LatentSync/tree/main | SyncNet 权重来源 | curl HEAD 200;体积 HTTP HEAD 1,488,019,828 B |
| 21 | https://drive.google.com/file/d/154JgKpzCPW82qINcVieuPH3fZ2e0P812/view?pli=1 | face-parse-bisent 79999_iter.pth 官方手动下载链接 | 来自 README 手动清单;Google Drive 体积本次未能取得(待验证) |
| 22 | https://download.pytorch.org/models/resnet18-5c106cde.pth | resnet18 权重官方直链 | curl HEAD 200;体积 46,827,520 B |
| 23 | https://hf-mirror.com | 官方脚本内置 HF 国内镜像 | curl HEAD 200;镜像地址由 #11、#12 脚本源码核验 |
| 24 | https://github.com/BtbN/FFmpeg-Builds/releases | README 指定的 Windows/Linux ffmpeg static 构建下载页 | curl HEAD 200 |
| 25 | https://github.com/chaojie/ComfyUI-MuseTalk | README "Third party integration" 第三方 ComfyUI 集成(README 注明未由官方验证维护) | curl HEAD 200 |
| 26 | https://github.com/user-attachments/assets/02f4a214-1bdd-4326-983c-e70b478accba | 图 07-1 模型结构图原图(README ![Model Structure]) |
curl -L 跟随重定向下载 + file 校验 PNG 1934×646,410,486 字节 |
| 27 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/assets/figs/gradio_2.png | 图 07-2 Gradio 参数面板原图 | curl 下载 + file 校验 PNG 1781×1066,75,170 字节 |
| 28 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/data/video/yongen.mp4 | 端到端示例输入视频 | HTTP HEAD 206,1,870,923 字节 |
| 29 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/data/audio/yongen.wav | 端到端示例输入音频 | HTTP HEAD 206,1,536,078 字节 |
| 30 | https://raw.githubusercontent.com/TMElyralab/MuseTalk/main/data/audio/eng.wav | 配置 task_1 / realtime audio_1 示例音频 | HTTP HEAD 206,1,920,078 字节 |
| 31 | https://github.com/TMElyralab/MuseTalk/releases | GitHub Releases 页面 | curl 徽章查询确认:官方未发布 Release 包 |
| 32 | https://github.com/TMElyralab/MuseV | README 推荐的配套文本/图片/姿态生成视频方案(组合使用) | README "Combining MuseV and MuseTalk" 引用;未单独抓取页面 |
| 33 | https://download.pytorch.org/whl/cu118 | README 安装命令中 torch 2.0.1 cu118 wheel 索引 | curl HEAD 200 |
08. Hugging Face speech-to-speech —— 本地全链路实时语音对话(语音进、语音出)开源语音智能体
适用场景说明:面向博主个人电脑本地部署,基线环境 Windows 10/11 + WSL2(Ubuntu 24.04)、RTX 3070 8GB / RTX 4090 24GB,另含 Linux 云服务器视角。本节严格以官方仓库 README、
docs/configuration.md、demo/README.md与src/speech_to_speech/下 STT / LLM / TTS 组件指南原文为事实来源;README 未提供的 Colab / T4 方案、官方未给出的显存数值均如实标注,不做推测补充。
08.1 项目定位与基本信息
| 项目 | 内容 |
|---|---|
| 一句话定位 | 一个由开源模型拼装、完全在本机运行的低延迟语音智能体:一条命令启动对话,无需 API key、不依赖云服务;默认流水线为 Silero VAD → Parakeet TDT → Qwen3.5-4B → Qwen3-TTS,每个环节均可替换;服务端以 WebSocket / WebRTC 提供 OpenAI Realtime 协议,原本对接 OpenAI Realtime API 的客户端可直接指向本机(README 开篇原文:"A low-latency voice agent built from open models that runs entirely on your computer. One command starts a conversation: no API key, no cloud service.")。 |
| 开源许可 | Apache License 2.0。出处:README 顶部 License 徽章链接 ./LICENSE;官方仓库 LICENSE 文件开头为 Apache License Version 2.0, January 2004(已下载原文核对)。注意:项目代码 Apache-2.0,但部分可选 TTS 模型权重另有许可(如 OmniVoice 预训练权重为 CC-BY-NC、Phonon 40M 为 CC BY-NC 4.0,README 各小节警示,商用前需单独核对模型卡)。 |
| 官方 GitHub 仓库 | https://github.com/huggingface/speech-to-speech |
| 官方文档 / 官网 | 主文档即仓库 README:https://github.com/huggingface/speech-to-speech ;YAML 配置指南:https://github.com/huggingface/speech-to-speech/blob/main/docs/configuration.md ;浏览器 Demo 说明:https://github.com/huggingface/speech-to-speech/blob/main/demo/README.md ;组件指南:STT https://github.com/huggingface/speech-to-speech/blob/main/src/speech_to_speech/STT/README.md 、LLM https://github.com/huggingface/speech-to-speech/blob/main/src/speech_to_speech/LLM/README.md 、TTS https://github.com/huggingface/speech-to-speech/blob/main/src/speech_to_speech/TTS/README.md ;PyPI 发行页:https://pypi.org/project/speech-to-speech/ 。 |
| 版本信息 | 截至 2026-10-25 官方 PyPI 最新版:1.1.0(来源:https://pypi.org/pypi/speech-to-speech/json ,info.version;requires_python: >=3.11)。README 要求 CPython 3.11–3.14(推荐 3.11);README 原文注明 Python 3.10 已于 2026-10-01 EOL 后不再支持。 |
| 默认流水线各环节模型(README「How it works」「Supported Components」表) | ① VAD:Silero VAD v5;② STT:Parakeet TDT 0.6B v3;③ LLM:Linux/Windows NVIDIA 走 Transformers 加载 Qwen3.5-4B,Apple Silicon 走 MLX 加载 Qwen3.5-4B-4bit;④ TTS:Qwen3-TTS-12Hz-1.7B-CustomVoice(Linux 下 GGML 后端,macOS 下 mlx-audio)。 |
| 协议与端口 | 服务端实现 OpenAI Realtime 协议核心事件集,WebSocket 路径 /v1/realtime,默认 ws://127.0.0.1:8765/v1/realtime(README「Realtime API」节);浏览器 Demo 端口 7860(demo README)。 |
08.2 官方图片
- 下图为官方 README 顶部 logo(README 第 3 行
<img src="https://raw.githubusercontent.com/huggingface/speech-to-speech/main/logo.png" width="600"/>):

| 项目 | 记录 |
|---|---|
| 本地文件 | https://zhouruolin.cn/upload/08_speech2speech_logo.png |
| 图片来源 URL | https://raw.githubusercontent.com/huggingface/speech-to-speech/main/logo.png |
| 下载方式 | curl -sL -o 08_speech2speech_logo.png "https://raw.githubusercontent.com/huggingface/speech-to-speech/main/logo.png" |
| 格式 / 体积校验 | file 命令确认:PNG image data, 1677 x 1155, 8-bit/color RGBA, non-interlaced;体积 66,165 字节(约 64.6 KB),大于 20 KB 阈值。 |
- 补充素材(非 PNG/JPEG,按本节图片规则不嵌入正文,仅登记来源):README 「How it works」上方的端点切换演示动图
docs/assets/endpoint-swap-light.gif(暗色模式endpoint-swap-dark.gif),来源 https://raw.githubusercontent.com/huggingface/speech-to-speech/main/docs/assets/endpoint-swap-light.gif ,curl 200 已验证可访问。
08.3 环境要求
| 维度 | 官方说明(README Quickstart / Installation / LLM Backends / Supported Components 节 + PyPI 元数据) |
|---|---|
| 操作系统 | README CI 覆盖矩阵:Linux(CPython 3.11、3.12、3.13、3.14,完整测试套件 + 冒烟测试);Apple Silicon macOS(3.11–3.14 冒烟测试);Windows 不在该兼容性矩阵覆盖范围内(README 原文:"Windows is not covered by this compatibility matrix")。Ubuntu 需先安装音频库 libportaudio2、libsndfile1;Windows 激活命令为 .venv\Scripts\Activate.ps1。WSL2(Ubuntu 24.04)按 Linux 路径部署是官方文档描述最完整的 NVIDIA 路径。 |
| GPU 与显存 | README「Quickstart」平台模型表:Apple Silicon Mac:Qwen3.5-4B 4-bit(MLX LM),规划 16 GB 统一内存;Linux / Windows NVIDIA:Qwen3.5-4B(Transformers),规划 24 GB 显存;其他机器:Qwen3.5-4B 走 Transformers 跑 CPU,回复缓慢。README「Combining with llama.cpp」节:使用默认语音模型时,Mac 规划 24 GB 统一内存、NVIDIA 规划 16 GB 显存,其中约 8 GB 由语音流水线占用。README 未公布 8GB 显卡的官方可行配置(见 08.4「RTX 3070 8GB 现实说明」)。 |
| 内存 | README 未单独公布系统内存下限;Mac 路径以 16 GB 统一内存为规划值(MLX 4-bit);NVIDIA 路径按 24 GB 显存规划。 |
| 依赖 | 基础包 pip install speech-to-speech 已包含默认流水线全部依赖:Silero VAD + Parakeet TDT(监听)、Qwen3.5-4B(回复)、Qwen3-TTS(语音)、本地音频客户端与 Realtime 服务端。可选后端以 pip extras 方式安装(清单见 08.4)。浏览器 Demo 另需 Node.js / npm 与 uv;源码开发方式依赖 uv。默认 Linux Qwen3-TTS wheel 面向 CUDA 12.8 + Ubuntu 24.04 编译(README「CUDA Note for Qwen3-TTS」节)。 |
| 磁盘空间(含模型权重体积,本环境经 HF tree API 实测) | 默认流水线首次运行自动下载模型;以下为实测仓库体积: |
| 默认模型 | HF 仓库 | 实测体积 |
|---|---|---|
| Qwen3.5-4B(Linux/Windows Transformers 权重) | https://huggingface.co/Qwen/Qwen3.5-4B | 约 8.7 GB |
| Qwen3-TTS-12Hz-1.7B-CustomVoice | https://huggingface.co/Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice | 约 4.2 GB |
| Parakeet TDT 0.6B v3 | https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3 | 约 5.3 GB |
| Qwen3.5-4B-4bit(仅 Mac MLX) | https://huggingface.co/mlx-community/Qwen3.5-4B-4bit | 约 2.9 GB |
另含 Silero VAD、Smart Turn v3.2 ONNX 检查点等小型资源;首次在线启动缓存完成后可离线运行(README「Offline Operation」节)。
08.4 最详细部署步骤(Windows 与 WSL2 双视角)
1. 依赖安装
WSL2(Ubuntu 24.04,官方文档描述最完整的 Linux 路径):
# README Quickstart 原文:先装音频系统库
sudo apt-get install libportaudio2 libsndfile1
# Python 3.11–3.14(推荐 3.11),创建虚拟环境
python3 -m venv .venv
source .venv/bin/activate
Windows 原生:README 仅给出环境激活命令 .venv\Scripts\Activate.ps1,并明确 Windows 不在 CI 兼容性矩阵内;默认 Qwen3-TTS GGML wheel 面向 Linux 编译,原生 Windows 预期存在兼容性风险。建议 NVIDIA 显卡用户优先走 WSL2 路径;原生 Windows 步骤如下,问题需自行排查:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
源码开发方式(README「From Source」节,Linux/macOS):
git clone https://github.com/huggingface/speech-to-speech.git
cd speech-to-speech
uv sync --python 3.11
source .venv/bin/activate
2. 项目下载 / 安装(README「Installation」节,PyPI 官方方式)
pip install speech-to-speech
可选后端 extras(README「Optional Components」节原文命令):
pip install "speech-to-speech[kokoro]" # Kokoro-82M TTS(macOS 需 Python 3.11–3.12)
pip install "speech-to-speech[kitten]" # KittenTTS
pip install "speech-to-speech[pocket]" # Pocket TTS
pip install "speech-to-speech[phonon]" # Phonon TTS(检查点另行提供)
pip install "speech-to-speech[chattts]" # ChatTTS
pip install "speech-to-speech[omnivoice]" # OmniVoice TTS(CUDA / Intel XPU / Apple Silicon)
pip install "speech-to-speech[faster-whisper]" # Faster Whisper STT
pip install "speech-to-speech[whisper-mlx]" # Lightning Whisper MLX STT(macOS)
pip install "speech-to-speech[paraformer]" # Paraformer STT(FunASR)
pip install "speech-to-speech[fireredvad]" # FireRed streaming VAD
pip install "speech-to-speech[nemo]" # Parakeet Unified / Nemotron / Orukeet STT(NeMo)
pip install "speech-to-speech[mlx-lm]" # macOS mlx-vlm 视觉模型支持
3. 模型 / 权重下载(官方来源 + 国内加速 + 显存现实说明)
官方来源:首次 speech-to-speech local 启动时自动从 Hugging Face Hub 下载默认流水线模型(README Quickstart:"The first run downloads the models, so give it a few minutes");README「Offline Operation」节要求先在线跑通一次、缓存齐 STT / LLM / TTS / Silero VAD / NLTK / Smart Turn 资源后,再用 HF_HUB_OFFLINE=1 离线运行。
国内加速:沿用 huggingface_hub 标准环境变量 HF_ENDPOINT(机制说明:https://huggingface.co/docs/huggingface_hub/guides/environment-variables ):
export HF_ENDPOINT=https://hf-mirror.com
CUDA wheel 适配(README「CUDA Note for Qwen3-TTS」节原文):Linux 下 Qwen3-TTS GGML 后端来自 faster-qwen3-tts[ggml],PyPI 默认 qwentts-cpp-python wheel 面向 CUDA 12.8 与 manylinux_2_39(即 Ubuntu 24.04);CUDA 运行时或 glibc 更旧时,先从 HF wheelhouse 安装匹配 wheel,再装 speech-to-speech:
# CUDA 13.x
pip install "qwentts-cpp-python==0.3.1+cu130" \
-f https://huggingface.co/datasets/andito/qwentts-cpp-python-wheels/tree/main/whl/cu130
# CUDA 12.4
pip install "qwentts-cpp-python==0.3.1+cu124" \
-f https://huggingface.co/datasets/andito/qwentts-cpp-python-wheels/tree/main/whl/cu124
# 纯 CPU 退路
pip install "qwentts-cpp-python==0.3.1+cpu" \
-f https://huggingface.co/datasets/andito/qwentts-cpp-python-wheels/tree/main/whl/cpu
pip install speech-to-speech
备选:README 注明可传
--qwen3_tts_backend torch使用旧版 CUDA-graphs 实现替代 GGML。
RTX 3070 8GB 现实说明(严格按 README 边界,不做外推):
| 路径 | README 依据 | 8GB 可行性结论 |
|---|---|---|
| 默认 NVIDIA 流水线(Qwen3.5-4B Transformers + Qwen3-TTS + Parakeet) | README 平台表规划 24 GB 显存 | 8GB 不满足官方规划值;README 未提供 8GB 官方配置与量化降级命令,能否跑通需本机实测,本节不承诺可用。 |
| llama.cpp 外接 LLM | README「Combining with llama.cpp」节规划 NVIDIA 16 GB 显存,其中约 8 GB 归语音流水线 | 16 GB 规划值仍高于 8GB;README 未给出 8GB 量化方案,属待实测路径。 |
| 纯 CPU 兜底 | README 平台表「Other machines: Qwen3.5-4B via Transformers on CPU — Slow replies」 | 官方明示可用但回复缓慢;8GB 显卡机器可作为验证流程的退路。 |
| 托管 LLM 后端(语音识别 / 合成留在本地,LLM 走远程) | README「Local speech with a hosted LLM」节:"Speech recognition and synthesis stay local, so your audio never leaves your computer; transcribed text and conversation history go to the provider." | 本机仅承担 STT + TTS 流水线,显存压力下降;需对应服务商 API key(凭据见 08.4 第 4 步)。 |
| 更换更小 LLM | README 仅给出 --model_name Qwen/Qwen3.5-9B(Linux/Windows)与 mlx-community/Qwen3.5-9B-4bit(Mac)示例,未列出 4B 以下官方推荐档位 |
自定义模型需自行核对显存与兼容性;README 未给出 8GB 量化方案,属待实测路径。 |
关于 Colab / T4:官方 README、
docs/与demo/README.md全文未提供 Colab 笔记本或 T4 免费运行方案,本节不编造 Colab 路径;如需云端体验,请以官方仓库后续更新为准。
4. 关键配置(凭据与开关表)
凭据要求(README 各节原文,默认本地流水线不需要任何 key):
| 场景 | 凭据 / 环境变量 | 来源 |
|---|---|---|
| 默认本地流水线(STT + LLM + TTS 全本地) | 无需 API key、无需云服务 | README 开篇原文 |
OpenAI 托管 LLM(--llm_backend responses-api) |
OPENAI_API_KEY(export OPENAI_API_KEY=...) |
README「Local speech with a hosted LLM」节 |
HF Inference Providers(https://router.huggingface.co/v1) |
HF_TOKEN,参数 --responses_api_api_key "$HF_TOKEN" |
README「Responses API Backend」provider 表 |
OpenRouter(https://openrouter.ai/api/v1) |
OPENROUTER_API_KEY |
README provider 表 |
| 本地 vLLM / llama.cpp 服务 | 无需 key(vLLM omit or any string;llama.cpp 传空字符串 "") |
README provider 表 |
| 受限模型 Phonon 40M 检查点 | 先在 HF 接受条款,再设置 HF_TOKEN 或执行 hf auth login |
README「Phonon TTS」节 |
| 浏览器 Demo 网页搜索工具(可选) | SERPER_API_KEY(Serper.dev);不配置则工具禁用 |
demo README「Tools」节 |
| 摄像头视觉输入 | 需服务端选视觉语言模型并传 --llm_is_vlm;默认模型为纯文本 |
demo README「Tools」节 + LLM README |
模块级与流水线开关(README「CLI Reference」节 + 组件指南):
| 参数 | 默认 / 取值 | 说明 |
|---|---|---|
--device |
按平台自动 | 所有环节统一设备;--llm_device 仅改 LLM 设备,--stt_device / --qwen3_tts_device 等仅改对应环节 |
--stt |
parakeet-tdt |
识别后端;可选 whisper、faster-whisper、paraformer、qwen3-asr、parakeet-unified、nemotron-streaming、orukeet、openai、openai-realtime、vllm-realtime 等(STT README 清单) |
--llm_backend |
Linux/Windows:transformers;macOS:mlx-lm |
可选 responses-api / chat-completions 接远程或独立服务 |
--tts |
qwen3 |
合成后端;可选 kokoro、kitten、pocket、phonon、chattts、omnivoice、mms、openai、minimax、drama3 等(TTS README 清单) |
--model_name |
平台默认模型 | 替换本地 LLM 模型;Mac 用 MLX 转换名,Linux/Windows 用 Transformers 检查点名 |
--num_pipelines |
1 |
隔离实例数量;服务端每流水线单元一个并发会话 |
--torch_num_threads N |
未设置(Silero 加载后单线程) | 进程级 PyTorch CPU 线程数;CPU STT 可权衡提速 Silero 变慢 |
--log_transcripts |
关 | 开启后日志记录完整用户 / 助手转写(启动时告警:对话内容会进入日志收集系统) |
--verbose / --log_level debug |
关 | 诊断输出;--log_level debug 配合 --verbose 出详细本地日志 |
--no_smart_turn |
默认开启 Smart Turn v3.2 | 关闭端点确认 ONNX 模型;--smart_turn_model_path 可指定本地 ONNX 路径 |
--host 0.0.0.0 |
默认 127.0.0.1 |
serve 暴露到网络时显式指定;服务端自身不做鉴权与限流,仅应在可信网络开启(README「LLM Proxy」节警示) |
--playback-buffer-ms |
后端默认缓冲(OpenAI 兼容 TTS 客户端缓冲 196 ms) | 调大抗卡顿但延迟首句,调小启动快但易抖动 |
VAD 参数(README「VAD Parameters」节,Silero VAD v5):
| 参数 | 默认 | 说明 |
|---|---|---|
--thresh |
源码默认 | 触发语音活动检测的阈值 |
--min_speech_ms |
推荐搭配 384 | 判定为语音的最短语音时长 |
--min_speech_continuation_ms |
推荐搭配 192 | 可重开软结束回合内的续说话滞回阈值 |
--min_silence_ms |
64 ms | 切分语音的最短静音长度 |
--short_segment_merge_ms |
未设置 | 短于 --min_speech_ms 的相邻 VAD 段合并窗口 |
--speculative_reopen_ms |
800 ms | 软结束后延迟 800 ms 才提交回复,便于接续语音重开回合 |
--unanswered_reopen_ms |
未设置 | 未收到助手输出的软结束回合最长可重开时长上限 |
Qwen3-TTS 参数(TTS README「6) Qwen3-TTS」节):
| 参数 | 默认 / 取值 | 说明 |
|---|---|---|
--qwen3_tts_model_name |
Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice |
TTS 检查点 |
--qwen3_tts_device |
按平台自动 | 如 cuda / cpu |
--qwen3_tts_backend |
非 macOS 默认 ggml;可 torch |
GGML 或 CUDA-graphs 后端 |
--qwen3_tts_speaker |
Aiden |
内置音色;Demo 可选 Aiden、Ryan、Dylan、Eric、Ono_Anna、Serena、Sohee、Uncle_Fu、Vivian(demo README 音色表) |
--qwen3_tts_language |
auto |
语言码;如 zh、en;模型卡覆盖中 / 英 / 日 / 韩 / 德 / 法 / 俄 / 葡 / 西 / 意 10 种语言 |
--qwen3_tts_ggml_quantization |
后端默认 | BF16 / Q8_0 / Q4_K_M / F32 |
--qwen3_tts_ref_audio |
无 | 音色克隆参考音频;默认 CustomVoice 模型无需参考音频即可使用内置音色 |
--qwen3_tts_ref_cache_dir |
~/.cache/faster-qwen3-tts/qwentts_refs |
GGML 音色参考缓存目录 |
5. 启动(README「Commands」节三条官方命令)
| 命令 | 行为 | 典型场景 |
|---|---|---|
speech-to-speech local |
同一进程内组合 serve + 打包麦克风 / 扬声器客户端,回环连接 |
一条命令本地对话(README Quickstart 默认命令) |
speech-to-speech serve |
仅运行流水线服务端,WebSocket / WebRTC 监听 127.0.0.1:8765 |
对接自建 App / 设备 / 浏览器 Demo |
speech-to-speech talk --url ws://127.0.0.1:8765/v1/realtime |
打包麦克风 / 扬声器客户端,连接已有 Realtime 服务端 | 连到另一台机器上的服务端 |
# README Quickstart 原文命令(WSL2 / Linux)
python3 -m venv .venv
source .venv/bin/activate
pip install speech-to-speech
speech-to-speech local
停止:Ctrl+C。README 提示:佩戴耳机避免助手听到自己;或加 --local_audio_block_mic_during_playback 在播放期间屏蔽麦克风。
08.5 使用方法
启动方式与界面
- 终端本地对话(
local):启动后终端显示Loading models…,音频设备就绪、会话配置完成后出现Ready — start speaking.;用户消息黄色、助手回复绿色(支持颜色的终端);默认只显示最终用户转写与流式助手回复,隐藏后端转写副本、常规日志、工具细节与协议事件(README Quickstart 节)。 - 浏览器 Demo(
serve+demo/,demo README「Quick start (local)」节):需要仓库检出、uv、Node.js / npm。
```bash # 1) 启动语音服务端(首次启动下载模型,等待监听 ws://127.0.0.1:8765/v1/realtime) uv sync --python 3.11 uv run speech-to-speech serve
# 2) 安装浏览器 SDK 依赖并启动 Demo 应用 npm ci --prefix demo uv pip install -r demo/requirements.txt export SPEECH_TO_SPEECH_URL=ws://localhost:8765/v1/realtime uv run uvicorn --app-dir demo server:app --reload --port 7860 ```
打开 http://localhost:7860/ ,点击光球、允许麦克风权限后开始对话。Docker 方式(demo README 原文):
bash
docker build -t s2s-demo demo/
docker run -p 7860:7860 -e SPEECH_TO_SPEECH_URL=ws://host.docker.internal:8765/v1/realtime s2s-demo
浏览器麦克风要求 HTTPS 或 localhost:
127.0.0.1与localhost可用,纯http://192.168.x.y局域网地址无法调用getUserMedia()(demo README 原文)。 - OpenAI Realtime SDK 直连(README「Realtime API」节官方示例):
```python from openai import OpenAI
client = OpenAI( base_url="http://localhost:8765/v1", websocket_base_url="ws://localhost:8765/v1", api_key="not-needed", )
with client.realtime.connect(model="local") as conn: conn.send( { "type": "session.update", "session": { "type": "realtime", "instructions": "You are a helpful assistant.", "audio": { "input": { "turn_detection": { "type": "server_vad", "interrupt_response": True, } } }, }, } )
for event in conn:
print(event.type)
```
README 注明:服务端实现的是 OpenAI Realtime 核心事件子集(入站 input_audio_buffer.append、session.update、conversation.item.create、conversation.item.truncate、response.create、response.cancel;出站语音起止、流式转写、音频增量、工具调用、response.done),并非完整 API 等价。
中文对话配置(README「Multi-Language Support」节 + STT README 语种表)
默认 Parakeet TDT 仅支持 25 种欧洲语言(en, de, fr, es, it, pt, nl, pl, ru, uk, cs, sk, hu, ro, bg, hr, sl, sr, da, no, sv, fi, et, lv, lt),不含中文;中文对话必须切换 STT 后端:
| 目标 | 命令参数 | 依据 |
|---|---|---|
| Whisper(Transformers,内置) | --stt whisper --language zh |
README 多语言节:--language 属于 Whisper 后端;STT README Whisper 内部语种表含 zh |
| Faster Whisper(需先装 extra) | pip install "speech-to-speech[faster-whisper]" 后 --stt faster-whisper --faster_whisper_stt_gen_language zh |
STT README「4) Faster-Whisper」节 |
| Paraformer(中文导向) | --stt paraformer(默认 paraformer-zh) |
STT README「6) Paraformer」节 |
| TTS 中文输出 | 默认 Qwen3-TTS --qwen3_tts_language auto(模型卡覆盖中文);--detect_llm_output_language 按助手回复文本检测语言后送 TTS;--enable_lang_prompt 追加「请用用户语种回复」指令 |
README「Multi-Language Support」节 |
端到端示例:WSL2 本地中文语音对话(4090 24GB 推荐配置;3070 8GB 见 08.4 现实说明)
# 1) 系统音频库(README Quickstart Ubuntu 节)
sudo apt-get install libportaudio2 libsndfile1
# 2) 环境
python3 -m venv .venv
source .venv/bin/activate
pip install speech-to-speech
# 3) 中文对话启动:Whisper 识别中文 + 按助手回复语言检测 + Qwen3-TTS 自动语种
speech-to-speech local \
--stt whisper \
--language zh \
--enable_lang_prompt \
--detect_llm_output_language \
--qwen3_tts_language auto
交互流程(README Quickstart 原文描述):开口说话 → 停顿 → 助手通过扬声器回答;Ctrl+C 停止;首次运行需等待模型下载;佩戴耳机或加 --local_audio_block_mic_during_playback 防止自激回声。
换音色示例(TTS README + demo README 音色表):
speech-to-speech local \
--tts qwen3 \
--qwen3_tts_speaker Ryan \
--qwen3_tts_device cuda
外接 llama.cpp LLM 示例(README「Combining with llama.cpp」节原文命令,终端 1 起 LLM、终端 2 连流水线):
# 终端 1:llama-server 常驻
llama-server \
-hf ggml-org/gemma-4-E4B-it-GGUF:Q4_0 \
--alias local-gemma \
--host 127.0.0.1 --port 8080 \
-ngl all -np 1 -c 8192 -fa on \
--no-mmproj \
--reasoning off
# 终端 2:语音流水线接入本地 LLM
speech-to-speech local \
--llm_backend responses-api \
--model_name local-gemma \
--responses_api_base_url http://127.0.0.1:8080/v1 \
--responses_api_api_key ""
托管 LLM 示例(语音留本地,文本上云,README「Local speech with a hosted LLM」节):
export OPENAI_API_KEY=...
speech-to-speech local --llm_backend responses-api
08.6 常见坑
| # | 现象 | 原因 | 解决(README 官方依据) |
|---|---|---|---|
| 1 | 助手反复听到自己的声音、对话自激循环 | 扬声器声音被麦克风回采;README Quickstart 明确提示需戴耳机 | 佩戴耳机;或启动时加 --local_audio_block_mic_during_playback 在播放期间屏蔽麦克风。 |
| 2 | 启动报 libcudart.so.12 缺失 / Qwen3-TTS wheel 加载失败 |
默认 qwentts-cpp-python wheel 面向 CUDA 12.8 + Ubuntu 24.04;本机 CUDA 或 glibc 更旧(README「CUDA Note」节) |
先按 08.4 第 3 步安装匹配 wheel(cu124 / cu130 / cpu)再 pip install speech-to-speech;DGX Spark 等 ARM64 CUDA 13 环境按 README DGX Spark 小节单独处理;备选 --qwen3_tts_backend torch。 |
| 3 | 浏览器 Demo 打不开麦克风 / 无音频 | getUserMedia() 仅允许 HTTPS 或 localhost;纯局域网 HTTP 地址被浏览器拒绝(demo README 原文) |
用 http://localhost:7860/ 或 http://127.0.0.1:7860/ 访问;跨机访问需自行配置 HTTPS 反向代理。 |
| 4 | 中文说话后识别出乱码 / 空白 | 默认 STT Parakeet TDT 仅 25 种欧洲语言,不含中文(README 多语言表 + STT README 语种清单) | 切换 --stt whisper --language zh,或安装 faster-whisper extra、--stt paraformer;确认 TTS 侧 --qwen3_tts_language auto 或显式 zh。 |
| 5 | 首次启动模型下载缓慢 / 超时 | 默认从 Hugging Face Hub 拉取 Qwen3.5-4B、Qwen3-TTS、Parakeet 等多 GB 模型 | 启动前 export HF_ENDPOINT=https://hf-mirror.com;在线跑通一次缓存后,用 HF_HUB_OFFLINE=1 speech-to-speech local 离线运行(README「Offline Operation」节);Smart Turn 检查点缺失时 --no_smart_turn 关闭。 |
| 6 | 安装可选 TTS 后 numpy 版本冲突报错 | DeepFilterNet 要求 numpy<2,Pocket TTS 要求 numpy>=2,二者互斥(README「Note on DeepFilterNet」节) |
不要在同一环境同时启用两者;按 README 说明仅在不使用 Pocket TTS 的环境手动安装 DeepFilterNet。 |
| 7 | Windows 原生安装后依赖 / 音频库异常 | README 兼容性矩阵未覆盖 Windows;Linux 音频库命令仅适用 Ubuntu;Qwen3-TTS GGML wheel 为 Linux 目标 | 优先使用 WSL2 Ubuntu 24.04 部署 NVIDIA 路径;原生 Windows 问题需自行对照报错排查,官方未提供 Windows 专用安装指引。 |
08.7 本节来源清单
| # | URL | 用途 | 验证方式(2026-10-25) |
|---|---|---|---|
| 1 | https://github.com/huggingface/speech-to-speech | 官方仓库主页 | curl HTML 200(GitHub 主页受 robots.txt 限制 web_fetch,改用 raw README 全文精读 + curl 核验) |
| 2 | https://raw.githubusercontent.com/huggingface/speech-to-speech/main/README.md | 主 README(定位、Quickstart、安装、平台模型表、凭据、LLM 后端、离线、多语言、VAD / 模块参数、TTS 后端清单的唯一事实来源) | curl 200 下载后全文精读(972 行) |
| 3 | https://github.com/huggingface/speech-to-speech/blob/main/LICENSE | Apache 2.0 许可证原文 | curl raw LICENSE 200,开头 Apache License Version 2.0, January 2004 已核对 |
| 4 | https://pypi.org/project/speech-to-speech/ | PyPI 发行页(版本 1.1.0、Python >=3.11) | curl 200;https://pypi.org/pypi/speech-to-speech/json 复核 info.version=1.1.0、requires_python>=3.11 |
| 5 | https://github.com/huggingface/speech-to-speech/blob/main/docs/configuration.md | YAML 配置指南(块定义、mac.yaml 示例、Python 启动 API) | curl raw 200(183 行) |
| 6 | https://github.com/huggingface/speech-to-speech/blob/main/demo/README.md | 浏览器 Demo 启动命令、端口 7860、localhost/HTTPS 限制、音色表、工具凭据、环境变量 | curl raw 200(362 行) |
| 7 | https://github.com/huggingface/speech-to-speech/blob/main/src/speech_to_speech/STT/README.md | 各 STT 后端清单、语种表、语言参数归属 | curl raw 200(318 行) |
| 8 | https://github.com/huggingface/speech-to-speech/blob/main/src/speech_to_speech/LLM/README.md | 本地模型选择、--llm_device、生成参数、API 后端 |
curl raw 200(已下载核对) |
| 9 | https://github.com/huggingface/speech-to-speech/blob/main/src/speech_to_speech/TTS/README.md | Qwen3-TTS 参数前缀、音色、后端、量化开关 | curl raw 200(391 行) |
| 10 | https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3 | 默认 STT 模型卡;仓库体积 5.3 GB(tree API 实测) | curl 200 |
| 11 | https://huggingface.co/Qwen/Qwen3.5-4B | 默认 LLM 模型卡;仓库体积 8.7 GB(tree API 实测) | curl 200 |
| 12 | https://huggingface.co/Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice | 默认 TTS 模型卡;仓库体积 4.2 GB(tree API 实测);10 语种含中文说明取自模型卡 README | curl 200;模型卡 README 语种清单已核对 |
| 13 | https://huggingface.co/mlx-community/Qwen3.5-4B-4bit | Mac MLX 默认模型;体积 2.9 GB(tree API 实测) | curl 200 |
| 14 | https://github.com/snakers4/silero-vad | 默认 VAD 上游仓库 | curl 200 |
| 15 | https://huggingface.co/datasets/andito/qwentts-cpp-python-wheels/tree/main/whl/cu124 | CUDA 12.4 匹配 wheel 目录(README CUDA Note) | curl 200 |
| 16 | https://huggingface.co/datasets/andito/qwentts-cpp-python-wheels/tree/main/whl/cu130 | CUDA 13.x 匹配 wheel 目录 | curl 200 |
| 17 | https://huggingface.co/datasets/andito/qwentts-cpp-python-wheels/tree/main/whl/cpu | CPU 退路 wheel 目录 | curl 200 |
| 18 | https://huggingface.co/pipecat-ai/smart-turn-v3 | Smart Turn v3.2 ONNX 检查点(README「Smart Turn endpointing」节) | curl 200 |
| 19 | https://huggingface.co/docs/huggingface_hub/guides/environment-variables | HF_ENDPOINT / HF_HUB_OFFLINE 环境变量机制官方文档 |
curl 200 |
| 20 | https://raw.githubusercontent.com/huggingface/speech-to-speech/main/docs/assets/endpoint-swap-light.gif | 官方端点切换演示动图(仅登记,未嵌入正文) | curl 200 |
| 21 | https://github.com/huggingface/speech-to-speech/blob/main/example_configs/mac.yaml | 官方 Mac YAML 配置示例 | curl raw 200 |
| 22 | https://github.com/huggingface/speech-to-speech/blob/main/docs/openai-compatible-stt.md | OpenAI 兼容 STT 端点指南 | curl raw 200 |
| 23 | https://github.com/huggingface/speech-to-speech/blob/main/demo/livekit/README.md | LiveKit Agents 接入说明 | curl raw 200 |
| 24 | https://huggingface.co/hexgrad/Kokoro-82M | 可选 TTS Kokoro-82M 模型卡(README extras 清单) | curl 200 |
| 25 | https://github.com/2noise/ChatTTS | 可选 TTS ChatTTS 上游(README extras 清单;README 多语言表标注支持英 / 中) | curl 200 |
| 26 | https://huggingface.co/kyutai-labs/pocket-tts | 可选 TTS Pocket TTS 模型卡(README extras 清单) | 本环境 curl 401(受限 / 需登录),链接取自 README,可用性以模型卡为准 |
| 27 | https://github.com/huggingface/speech-to-speech.git | 源码开发方式 git clone 地址(08.4 第 1 步) |
与 #1 同一仓库;curl 200 |
| 28 | https://raw.githubusercontent.com/huggingface/speech-to-speech/main/logo.png | 08.2 节官方 logo 原始地址(README 第 3 行 <img> 引用) |
curl 200 下载,file 校验 PNG 1677×1155、66,165 字节 |
| 29 | https://hf-mirror.com | HF 国内镜像站首页;HF_ENDPOINT=https://hf-mirror.com 镜像目标 |
首页 curl 200;模型文件解析在本环境超时,镜像可用性以读者本地网络为准 |
| 30 | https://router.huggingface.co/v1 | HF Inference Providers 接入端点(README「Responses API Backend」provider 表,--responses_api_base_url) |
裸 GET 根路径 404(API 端点需鉴权 / POST,非死链);地址逐字摘自 README provider 表 |
| 31 | https://openrouter.ai/api/v1 | OpenRouter 接入端点(README provider 表,--responses_api_base_url) |
裸 GET 根路径 404(API 端点需鉴权 / POST,非死链);地址逐字摘自 README provider 表 |
说明:正文中
ws://127.0.0.1:8765/v1/realtime、http://localhost:7860/、http://127.0.0.1:8080/v1等为本机回环示例地址,非外部引用,不列入来源清单。待复核 / 边界说明:① 官方 README 未提供 Colab 或 T4 免费方案,本节未予编写;② 8GB 显存显卡的官方可行配置 README 未给出,08.4 已逐条标注边界;③ Pocket TTS 模型卡在本环境返回 401,安装该 extra 前需先在 HF 确认模型可见性与许可;④ 第三方可选后端(OmniVoice、Phonon 等)权重许可独立于项目 Apache-2.0,商用前须核对对应模型卡条款。
09. Open WebUI —— 自托管 LLM Web 界面(类 ChatGPT,可对接 Ollama / OpenAI 兼容接口)
适配场景:Windows 10/11 + WSL2(Ubuntu 24.04)本地部署;RTX 3070 8GB / RTX 4090 24GB 均可使用。Open WebUI 本身只是"前端 + 管理面板",不自带大模型,需要对接本机 Ollama、llama.cpp 或任意 OpenAI 兼容接口。
09.1 项目定位与基本信息
- 一句话定位:一个可完全离线运行、功能丰富、面向自托管场景的 AI 平台界面(官方原文:"a self-hosted AI platform … built to run entirely offline"),原生支持 Ollama 与 OpenAI 兼容 API,为本地模型与云端模型提供与 ChatGPT 类似的对话体验,并内置知识库(RAG)、插件、工具调用等能力。
- 开源许可:Open WebUI License(自定义许可,非标准 MIT/Apache/GPL)。
- 出处:官方仓库
LICENSE文件(https://raw.githubusercontent.com/open-webui/open-webui/main/LICENSE ,已下载核验)与 README "License" 一节(https://github.com/open-webui/open-webui )。 - 关键条款(依据 LICENSE 文件原文概括):允许源码/二进制再分发与修改,但必须保留版权声明;不得在未经书面许可的情况下使用版权方/贡献者名义为衍生品背书;必须保留 "Open WebUI" 品牌(名称、Logo 及界面标识)——例外情形为:① 任意连续 30 天内终端用户不超过 50 人;② 获得版权方书面许可;③ 取得正式企业许可。代码库中沿用历史许可的旧组件,按各自原始许可条款执行(见仓库
LICENSE_HISTORY)。 - 官方 GitHub 仓库:https://github.com/open-webui/open-webui
- 官方官网:https://openwebui.com/ (品牌与产品介绍站,HTTP 200 已核验)。
- 官方文档站:https://docs.openwebui.com/ (安装、配置、RAG、排障等全部官方说明,HTTP 200 已核验)。
- 版本说明:截至 2026-10-25,官方最新 release 为 v0.12.4(发布时间 2026-10-25 08:07 UTC,来源:https://github.com/open-webui/open-webui/releases/tag/v0.12.4 );PyPI 包
open-webui最新版本同为 0.12.4(来源:https://pypi.org/project/open-webui/ ,requires_python:<3.13.0a1,>=3.11)。
09.2 官方图片
两张图均来自官方文档站
docs.openwebui.com的官方资源目录,使用curl -L下载,已用file命令核验为 PNG 且体积大于 20KB;未使用任何 AI 生成图或非官方截图。
图 09-1 Open WebUI 全新对话界面(官方文档截图)

- 来源 URL:https://docs.openwebui.com/assets/images/new-chat-placeholder-be568eb047e004bf0757ff35e34b4289.png
- 下载方式:
curl -L -o 09_openwebui_ui.png "https://docs.openwebui.com/assets/images/new-chat-placeholder-be568eb047e004bf0757ff35e34b4289.png" - 核验:
file显示PNG image data, 3000 x 2000, 8-bit/color RGB,体积 148,827 字节(>20KB)。
图 09-2 Open WebUI 知识库(Knowledge)管理界面(官方文档截图)

- 来源 URL:https://docs.openwebui.com/assets/images/knowledge-list-011c5b77c36082462e8e714d02d3e53b.png
- 下载方式:
curl -L -o 09_openwebui_knowledge.png "https://docs.openwebui.com/assets/images/knowledge-list-011c5b77c36082462e8e714d02d3e53b.png" - 核验:
file显示PNG image data, 3000 x 2000, 8-bit/color RGB,体积 128,307 字节(>20KB)。
09.3 环境要求
说明:Open WebUI 是界面与应用层,本地大模型推理的显存/内存需求取决于你外接的 Ollama / llama.cpp 模型,而不是 Open WebUI 本身。下表需求仅针对 Open WebUI 应用本体。
| 项目 | 要求 / 说明 | 官方依据 |
|---|---|---|
| 操作系统 | ① Docker 方式:Windows 10/11 上通过 Docker Desktop + WSL2 backend 运行(官方 WSL 指南支持该路径);也支持 Linux、macOS。② pip 方式:Python 3.11 或 3.12;Python 3.13 暂不支持(部分依赖尚未提供 3.13 兼容包)。 | https://docs.openwebui.com/getting-started/quick-start/ (Python version compatibility 一节);https://pypi.org/project/open-webui/ (requires_python) |
| GPU 与显存 | 应用本体不强制要求 NVIDIA GPU。:cuda 镜像为 Open WebUI 自带的本地 Whisper、嵌入与重排序模型启用 NVIDIA CUDA 加速(USE_CUDA_DOCKER 环境变量说明);Ollama 模型是否使用 GPU 由 Ollama 自身决定,与 WebUI 镜像无关。无 NVIDIA GPU 时本地模型自动回退 CPU 运行。 |
https://docs.openwebui.com/getting-started/quick-start/ (GPU support (Nvidia) 镜像标签表);https://docs.openwebui.com/reference/env-configuration (USE_CUDA_DOCKER、本地模型运行设备说明) |
| 内存(应用本体) | 官方 2026-10-16 在 Docker Desktop(Linux/arm64)上实测:slim 镜像空闲内存中位数约 292.2 MiB(区间 291.8–292.6 MiB)。官方明确说明:该数值是空闲实测值,不是最低内存要求,也不是容器内存上限;浏览器、Docker VM、模型服务与外部服务需另算内存。 | https://docs.openwebui.com/getting-started/quick-start/ (RAM usage 一节,含实测方法与镜像摘要哈希) |
| 磁盘空间 | 标准 :main 镜像下载约 1.62 GB;:slim 镜像约 197 MB(Linux/amd64,比标准镜像小 88%)。对话记录、上传文件、向量库、缓存均落在数据卷/数据目录中,需预留增长空间。 |
https://docs.openwebui.com/getting-started/quick-start/ (镜像标签与体积说明) |
| 依赖(Docker 方式) | Docker Engine 或 Docker Desktop(启用 WSL2 backend);GPU 加速需 NVIDIA Container Toolkit(Linux/WSL 侧,官方 README 链接指向 NVIDIA 文档)。 | https://docs.openwebui.com/getting-started/quick-start/ ;https://github.com/open-webui/open-webui (README Quick Start) |
| 依赖(pip 方式) | Python 3.11/3.12、pip(或 uv);无 NVIDIA GPU 的 Linux x86_64 机器需先安装 CPU 版 PyTorch,否则 PyPI 默认 torch 会一并拉取 CUDA 运行库。 | https://docs.openwebui.com/getting-started/quick-start/ (No NVIDIA GPU? 一节) |
| 数据库 / 存储 | 默认 SQLite(可加密),可切换 PostgreSQL;文件默认本地磁盘,可配置 S3 / Google Cloud Storage / Azure Blob。向量库默认 ChromaDB(内置),另有 PGVector、Qdrant、Milvus、Elasticsearch、OpenSearch、Pinecone、S3Vector、Oracle 23ai 等可选。 | https://docs.openwebui.com/features/ ;https://docs.openwebui.com/reference/env-configuration |
09.4 最详细部署步骤(Windows 与 WSL2 两种视角,精确命令)
09.4.1 方式 A:Docker 一键部署(官方推荐路径)
A-1 依赖安装(Windows 视角)
- 安装 Docker Desktop for Windows,安装过程中勾选 "Use WSL 2 instead of Hyper-V"(WSL2 backend)。安装包来源:https://www.docker.com/products/docker-desktop/ (官方 Quick Start 的 WSL 指南引用)。
- 打开 Docker Desktop → Settings → Resources → WSL Integration,勾选 "Enable integration with my default WSL distro";若使用非默认发行版,在列表中勾选对应 Ubuntu 24.04。保存后重启 Docker Desktop。
- (可选,使用
:cuda镜像时)WSL2 内安装 NVIDIA Container Toolkit 并安装显卡驱动;仅对接外部 Ollama / OpenAI 接口时不需要。
官方 WSL 指南硬性提示:始终从 WSL 终端(Ubuntu 24.04)执行
docker命令,不要在 PowerShell 或 CMD 里执行;使用-v挂载卷时,路径必须对 WSL 发行版可达。 依据:https://docs.openwebui.com/getting-started/quick-start/ (Using Docker with WSL → Step 1–4、Important Notes)
A-2 拉取镜像并启动(WSL2 视角,Ubuntu 24.04 终端内执行)
官方默认命令(Ollama 安装在本机 Windows/WSL 上的场景,已按官方文档带 --add-host 与 WEBUI_SECRET_KEY):
docker run -d -p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
-e WEBUI_SECRET_KEY=your-secret-key \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
命令参数对照(均来自官方 Quick Start 文档):
| 参数 | 作用(官方说明) |
|---|---|
-p 3000:8080 |
本机 3000 端口映射到容器内 8080 端口;左侧 3000 被占用时可改成其他端口。 |
--add-host=host.docker.internal:host-gateway |
让容器能访问宿主机上的服务(如宿主机 Ollama host.docker.internal:11434)。 |
-v open-webui:/app/backend/data |
必须挂载的数据卷:聊天记录、用户、设置、上传文件全部在此卷中;漏挂会在容器重建后丢数据(README 有 WARNING 强调)。 |
-e WEBUI_SECRET_KEY=your-secret-key |
会话签名密钥,设置一次后保持不变;不固定密钥,容器重建后所有用户都会被登出。可先用 openssl rand -hex 32 生成随机值替换 your-secret-key。 |
--restart always |
系统重启后容器自动拉起。 |
ghcr.io/open-webui/open-webui:main |
标准镜像(官方推荐),内置本地语音识别与嵌入模型。 |
常用镜像标签(官方 Quick Start "Tag / Use case" 表):
| 标签 | 用途 |
|---|---|
:main |
标准镜像(推荐),应用 + 内置 STT/嵌入模型。 |
:slim / :main-slim |
约 197MB(标准镜像约 1.62GB);仅适用托管 API / 独立 Ollama 等外接场景,不含本地 PDF 解析、本地 Whisper、本地嵌入引擎等组件。 |
:cuda |
NVIDIA GPU 加速,CUDA 12.8,需配合 --gpus all;:cuda126 为 CUDA 12.6 构建。 |
:ollama |
容器内捆绑 Ollama 的一体化镜像。 |
:dev |
开发分支每日构建,含未稳定功能,生产勿用。 |
GPU 加速变体(官方文档命令,NVIDIA 机型可选):
docker run -d -p 3000:8080 --gpus all \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
-e WEBUI_SECRET_KEY=your-secret-key \
--name open-webui --restart always \
ghcr.io/open-webui/open-webui:cuda
仅使用 OpenAI 等云端 API(本机不跑 Ollama):
docker run -d -p 3000:8080 \
-e OPENAI_API_KEY=your_secret_key \
-v open-webui:/app/backend/data \
--name open-webui --restart always \
ghcr.io/open-webui/open-webui:main
捆绑 Ollama 的一体化镜像(GPU 版):
docker run -d -p 3000:8080 --gpus=all \
-v ollama:/root/.ollama \
-v open-webui:/app/backend/data \
--name open-webui --restart always \
ghcr.io/open-webui/open-webui:ollama
CPU-only 版本去掉 --gpus=all 即可(官方文档命令一致)。
A-3 模型 / 依赖下载
- Ollama 模型:先在本机安装 Ollama(https://ollama.com/ )并拉取模型,例如
ollama pull qwen2.5:7b;Open WebUI 启动后可在模型选择框直接输入模型名触发拉取,也可在Settings → Admin → Connections → Manage Ollama API Connections → Manage面板中下载/管理模型(官方 Ollama 指南)。 - 本地嵌入模型(RAG 用):默认
sentence-transformers/all-MiniLM-L6-v2,首次启动知识库上传流程时自动从 Hugging Face 下载;无网络/离线环境可设置HF_HUB_OFFLINE=1禁止联网下载(README Offline Mode 一节)。
A-4 国内网络加速(可验证的通用思路,非官方指定镜像)
- 嵌入模型等 Hugging Face 资源下载慢 / SSL 报错:官方排障文档给出的示例做法是在
docker run中增加HF_ENDPOINT环境变量指向镜像站:
bash
docker run -d -p 3000:8080 \
-e HF_ENDPOINT=https://hf-mirror.com/ \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui --restart always \
ghcr.io/open-webui/open-webui:main
依据:https://docs.openwebui.com/troubleshooting/connection-error (SSL Connection Issue with Hugging Face 一节,原文示例命令即 HF_ENDPOINT=https://hf-mirror.com/)。
- ghcr.io 镜像拉取慢:官方文档说明同一组镜像也镜像到 Docker Hub 仓库 openwebui/open-webui(仅部分标签:latest、latest-<variant>、裸 <variant> 如 slim/cuda/ollama,以及 X.Y.Z / X.Y 版本号标签;:main、:dev、:vX.Y.Z、:git-<sha> 仅存在于 ghcr.io)。可改用 Docker Hub 仓库拉取,例如:
bash
# Docker Hub 官方镜像备选(标签集合见上)
docker pull openwebui/open-webui:latest
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data --name open-webui --restart always \
openwebui/open-webui:latest
依据:https://docs.openwebui.com/getting-started/quick-start/ (Docker Hub 镜像说明一节);仓库页面 https://hub.docker.com/r/openwebui/open-webui (HTTP 200 已核验,当前含 0.12.4、0.12.4-cuda 等标签)。
- 其余通用可验证思路(非官方指定镜像):① 在 Docker Desktop → Settings → Docker Engine 的 registry-mirrors 中配置本机网络可达的 Docker Registry 镜像(Docker 官方通用能力,文档:https://docs.docker.com/desktop/settings/windows/ ),重启 Docker Desktop 后重试;② 网络条件允许时改用下文 pip 方式安装,规避容器镜像;③ 换用 :slim 标签减小下载体积。以上为通用部署建议,不代表 Open WebUI 官方背书某个第三方镜像站。
A-5 验证启动
docker logs -f open-webui # 等待日志出现 "Application startup complete"(官方 Quick Start 就绪判据)
浏览器访问 http://localhost:3000 ,首次进入出现 "Get started with Open WebUI" 欢迎页并提供 "Create Admin Account" 入口即部署成功(首个注册账号自动成为管理员)。若页面长时间不加载,按 09.6 第 1、6 条排查连接与端口。
09.4.2 方式 B:pip 轻量部署(WSL2 Ubuntu 24.04 或 Windows 本机 Python 环境)
B-1 依赖安装(WSL2 Ubuntu 24.04 视角)
- 安装 Python 3.11 或 3.12(不要用 3.13,官方明确暂不支持);建议使用虚拟环境隔离:
sudo apt update
sudo apt install -y python3 python3-venv python3-pip
python3 -m venv ~/open-webui-venv
source ~/open-webui-venv/bin/activate
- 无 NVIDIA GPU 的机器先装 CPU 版 PyTorch(官方文档要求,避免拉入 CUDA 运行库):
pip install torch --index-url https://download.pytorch.org/whl/cpu
B-2 项目安装
pip install open-webui
open-webui serve
- 官方 README 同样给出该命令组合;文档补充:可先
pip install open-webui,再执行open-webui serve。 - 升级命令:
pip install -U open-webui。 - 卸载:
pip uninstall open-webui;数据目录默认site-packages/open_webui/data,卸载不会自动删除,需手动清理。
Windows 本机 Python 视角:命令相同(
pip install open-webui→open-webui serve);官方文档提示命令找不到时,先激活安装该包的虚拟环境——open-webui可执行文件位于环境的bin(Windows 为Scripts)目录。Windows 本机建议 Python 3.12。
B-3 关键启动参数与环境变量
# 指定数据目录(避免数据落在 site-packages 内)
DATA_DIR=~/.open-webui open-webui serve
# 自定义监听地址与端口(默认 http://localhost:8080)
open-webui serve --host 0.0.0.0 --port 3000
B-4 验证启动
浏览器访问 http://localhost:8080(--port 3000 时访问 http://localhost:3000 )。
09.4.3 关键配置项总表(Docker / pip 通用环境变量,来源:官方 Env Configuration 文档)
| 配置项 | 默认值 | 说明 |
|---|---|---|
OLLAMA_BASE_URL |
本机 pip:http://localhost:11434;Docker:http://host.docker.internal:11434 |
Ollama 后端地址(旧变量名 OLLAMA_API_BASE_URL 已弃用)。多实例用 OLLAMA_BASE_URLS 分号分隔。 |
OPENAI_API_BASE_URL |
https://api.openai.com/v1 |
OpenAI 兼容后端 Base URL;多实例 OPENAI_API_BASE_URLS 分号分隔。 |
OPENAI_API_KEY |
空 | OpenAI 兼容接口密钥;多密钥 OPENAI_API_KEYS 分号分隔。 |
RAG_EMBEDDING_ENGINE |
空(默认 SentenceTransformers 本地引擎) | 可选:ollama、openai、azure_openai。 |
RAG_EMBEDDING_MODEL |
sentence-transformers/all-MiniLM-L6-v2 |
RAG 嵌入模型名;本地为 Sentence-Transformer 模型。 |
DATA_DIR |
./data |
上传文件、缓存、向量库等数据根目录(pip 方式)。 |
WEBUI_SECRET_KEY |
启动目录下自动生成 .webui_secret_key |
会话签名密钥;建议显式固定,防止重建容器/目录后全员登出。 |
ENABLE_RAG_HYBRID_SEARCH |
False |
开启 BM25 关键词检索 + 向量检索混合,配合重排序模型提升命中率。 |
RAG_TOP_K |
3 |
每次查询从每个挂载知识库/文件取回的默认分片数;混合检索开启时为重排序候选数。 |
RAG_TOP_K_RERANKER |
3 |
混合检索下重排序后真正送入模型的分片数。 |
RAG_RELEVANCE_THRESHOLD |
0.0 |
配合重排序使用的相关度阈值。 |
HF_ENDPOINT |
空 | Hugging Face 端点替换地址(国内镜像用法见 09.4.1 A-4)。 |
HF_HUB_OFFLINE |
空 | 设为 1 后禁止启动时联网下载模型(离线环境)。 |
| 容器内端口 | 8080 |
Docker 发布端口由 -p 左侧决定(默认示例映射 3000:8080)。 |
| 数据卷(Docker) | /app/backend/data |
必须挂载,否则容器重建后聊天记录/用户/设置全部丢失。 |
09.5 使用方法
09.5.1 启动方式速查
| 部署方式 | 启动命令 | 访问地址 |
|---|---|---|
| Docker(标准) | docker start open-webui(首次 docker run 见 09.4.1 A-2) |
http://localhost:3000 |
Docker(--network=host 排障变体) |
docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main |
http://localhost:8080 (host 网络模式下端口为容器内 8080) |
| pip | open-webui serve(可带 --host / --port,先激活 venv) |
http://localhost:8080 |
09.5.2 界面操作步骤
- 注册管理员:浏览器打开实例地址,首屏 "Create Admin Account" 创建账号;首个账号自动成为管理员(拥有用户管理与全部实例级设置权限),创建后注册自动关闭。后续如需开放注册:头像 →
Settings → Admin → Authentication打开New Sign Ups;新账号默认Pending待管理员审批。 - 依据:https://docs.openwebui.com/getting-started/quick-start/ (Create the admin account);https://docs.openwebui.com/features/authentication-access/rbac/roles/ (Initial Setup:首个账号自动分配 Admin 角色)。 - 连接 Ollama:
- 本机 Ollama 在 Docker 模式下默认探测
http://host.docker.internal:11434;pip 模式默认探测http://localhost:11434。 - 手动管理:头像 →Settings → Admin → Connections,在Manage Ollama API Connections中查看/新增/编辑地址;在该面板的Manage对话框内可拉取、更新、删除模型,也可基于已有模型Create Model。 - 多实例负载均衡:在OLLAMA_BASE_URLS中配置多个 URL,随机分配;各实例模型 ID 需完全一致才能合并显示。 - 连接 OpenAI 兼容接口 / llama.cpp / vLLM / LM Studio 等:
-
Settings → Admin → Connections → Manage OpenAI API Connections → + Add Connection。 - 填入 URL 与 API Key 后保存;模型列表自动获取。部分服务商不提供/models端点,需在连接设置的Model IDs白名单中手动填写模型 ID 后保存。 - llama.cpp 示例:llama-server --model /path/model.gguf --port 10000 --ctx-size 1024 --n-gpu-layers 40启动后,容器内 WebUI 连接地址填http://host.docker.internal:10000/v1(注意末尾/v1);本机 pip 模式填http://127.0.0.1:10000/v1;无密钥服务器 Auth 选None;高级选项 Provider 下拉选llama.cpp可解锁模型加载指示与卸载按钮。 - 依据:https://docs.openwebui.com/getting-started/quick-start/connect-a-provider/starting-with-llama-cpp ;https://docs.openwebui.com/getting-started/quick-start/connect-a-provider/starting-with-openai-compatible 。 - 建立知识库(博客文章私有 RAG):
- 左侧
Workspace → Knowledge→ 右上角Create,填写知识库名称与描述。 - 上传 PDF / TXT / Markdown / Word / Excel / PowerPoint / CSV / JSON / HTML / SVG 等文件,等待处理完成。
- 在聊天框输入
#引用知识库;也可在Workspace → Models → Edit中把知识库绑定到某个模型,使该模型只能检索挂载内容。 - 检索模式:Focused Retrieval(默认 RAG) 按查询语义取回相关分片;Full Context 把整篇文档全文注入每条消息,适合短篇参考文档。 - 依据:https://docs.openwebui.com/features/workspace/knowledge (含上传流程、两种检索模式、原生工具调用说明)。
- 发送首条消息:
New Chat→ 在输入框右下角模型选择器中选模型 → 输入问题 → 回车;可在对话中通过附件按钮挂载单个文件,就该文件单独提问(支持格式见知识库文档)。
09.5.3 常用参数说明表
| 位置 | 参数 / 选项 | 说明 |
|---|---|---|
| 连接配置 | Prefix ID |
多个后端提供同名模型时加前缀(如 remote/)区分;实例间前缀需一致才能合并模型。 |
| 连接配置 | Model IDs (Filter) |
模型白名单,留空显示全部;填入后仅列出指定模型。 |
| 连接配置 | AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST |
模型列表获取超时秒数,默认 10 秒;跨网络慢可调大(如 30)。 |
| 知识库 | 检索模式 Focused / Full Context | 语义检索 vs 全文注入,见 09.5.2 第 4 步。 |
| 知识库 | ENABLE_RAG_HYBRID_SEARCH |
混合检索(BM25 关键词 + 向量检索);配置了重排序模型时附带重排序,默认关闭。 |
| 知识库 | RAG_TOP_K / RAG_TOP_K_RERANKER |
候选分片数 / 混合检索下重排序后送入模型的分片数(后者仅混合检索生效)。 |
| 模型高级参数 | Function Calling | Native(默认,模型原生调用工具)或 Legacy(兼容不支持原生工具调用的模型)。 |
| 实例设置 | Task Model / TASK_MODEL_EXTERNAL |
后台任务独立小模型:会话标题、Web 搜索查询生成等;Ollama 后端用 TASK_MODEL,OpenAI 兼容端点用 TASK_MODEL_EXTERNAL,避免占用主模型上下文。 |
| 实例设置 | WEBUI_AUTH=False |
单用户免登录模式(官方 Quick Start 提供该 Docker 变体命令)。 |
09.5.4 端到端示例:把博客 Markdown 文章做成私有问答知识库
前置条件:Docker 实例已运行,本机 Ollama 已
ollama pull qwen2.5:7b(示例模型,可替换为 3070 8GB 可流畅运行的模型)。
- 浏览器打开 http://localhost:3000 ,完成管理员注册。
Settings → Admin → Connections确认 Ollama 连接地址为http://host.docker.internal:11434(Docker)或http://localhost:11434(pip);模型选择框中能看到qwen2.5:7b。Workspace → Knowledge → Create,命名Blog-KB,把博客导出的若干.md/.pdf文章拖入上传,等待处理完成。- 新建对话,模型选择
qwen2.5:7b,在输入框输入#Blog-KB引用知识库。 - 提问示例:"根据我上传的博客文章,总结一下 WSL2 下部署本地大模型的常见步骤,并引用对应文章原文段落。"
- 对照原文核验回答与引用来源;若模型检索不到内容,按 09.6 排障:检查嵌入引擎、切换 Hybrid Search、或在模型编辑中确认知识库已挂载。
09.6 常见坑(现象 + 原因 + 解决)
-
现象:Docker 中的 Open WebUI 报
Server Connection Error,模型列表为空,连不上本机 Ollama。 - 原因:容器内127.0.0.1指向容器自身而非宿主机;且 Ollama 默认只监听127.0.0.1:11434。 - 解决:① 连接地址使用http://host.docker.internal:11434(官方 README 与 Ollama 指南均要求--add-host=host.docker.internal:host-gateway);② 让 Ollama 监听全部网卡:设置OLLAMA_HOST=0.0.0.0后重启 Ollama 服务;③ 兜底方案:docker run --network=host,环境变量OLLAMA_BASE_URL=http://127.0.0.1:11434,此时 WebUI 访问地址变为 http://localhost:8080。 - 依据:https://github.com/open-webui/open-webui (README Troubleshooting);https://docs.openwebui.com/troubleshooting/connection-error (Connection to Ollama Server、Docker Connection Error)。 -
现象:容器重启 / 升级后,聊天记录、用户账号、上传文件全部丢失。 - 原因:
docker run命令遗漏-v open-webui:/app/backend/data数据卷挂载。 - 解决:README 明确 WARNING——必须包含该卷;重建容器时保持同名卷与WEBUI_SECRET_KEY不变;更新前先备份数据卷。 -
现象:模型列表间歇性清空、聊天偶发报 "Model not found",日志出现
ClientConnectorDNSError;在部分 Windows 主机上启动后所有外部模型请求直接失败。 - 原因:旧版本使用 c-ares 解析器,在部分 Windows 主机上找不到可用 DNS 服务器,Docker 内也可能间歇性无法解析容器名(官方排障文档给出该机理说明)。 - 解决:升级到最新镜像版本;升级后名称解析默认走操作系统解析器,host.docker.internal、Composeextra_hosts、K8shostAliases行为恢复正常。 - 依据:https://docs.openwebui.com/troubleshooting/connection-error (Intermittent Name Lookup Failures 一节)。 -
现象:pip 安装体积异常庞大,或非 NVIDIA 机器上启动报 CUDA 相关错误。 - 原因:PyPI 默认 torch 包携带 NVIDIA CUDA 运行库;无 NVIDIA GPU 环境不应直接安装默认 torch。 - 解决:虚拟环境内先执行
pip install torch --index-url https://download.pytorch.org/whl/cpu,再pip install open-webui;AMD GPU 改装 ROCm 版 PyTorch(官方文档指引至 PyTorch 安装页)。 - 依据:https://docs.openwebui.com/getting-started/quick-start/ (No NVIDIA GPU? 一节)。 -
现象:首次上传文档时报 Hugging Face SSL 错误 / 嵌入模型下载超时,知识库处理失败。 - 原因:本地默认嵌入模型
sentence-transformers/all-MiniLM-L6-v2需从 Hugging Face 下载,网络不通或 SSL 中断。 - 解决:按 09.4.1 A-4 设置HF_ENDPOINT=https://hf-mirror.com/;离线环境设HF_HUB_OFFLINE=1并提前预置模型;RAG 引擎也可切换为ollama/openai/azure_openai(环境变量RAG_EMBEDDING_ENGINE),把嵌入计算移到已有服务上。 - 依据:https://docs.openwebui.com/troubleshooting/connection-error ;https://docs.openwebui.com/reference/env-configuration (RAG_EMBEDDING_ENGINE、RAG_EMBEDDING_MODEL)。 -
现象:
docker run后浏览器打不开,日志报port is already allocated;或 pip 启动端口冲突。 - 原因:默认 3000(Docker 发布端口)/ 8080(pip、容器内端口)被其他程序占用。 - 解决:Docker 改左侧端口,如-p 3002:8080;pip 模式open-webui serve --port 9999。 - 依据:https://docs.openwebui.com/getting-started/quick-start/ (Port already taken 说明)。
09.7 本节来源清单
| # | URL | 用途 | 验证方式 |
|---|---|---|---|
| 1 | https://github.com/open-webui/open-webui | 仓库主页、README(功能、Docker/pip 安装命令、数据卷 WARNING、License 说明) | curl -I HTTP 200(2026-10-25 实测) |
| 2 | https://raw.githubusercontent.com/open-webui/open-webui/main/README.md | README 原始文本(安装命令、镜像标签、离线模式、排障命令) | curl -sL 下载成功(18,318 字节),本地通读 |
| 3 | https://raw.githubusercontent.com/open-webui/open-webui/main/LICENSE | 许可原文(Open WebUI License、品牌保留条款) | curl -sL 下载成功,本地通读全文 |
| 4 | https://openwebui.com/ | 官方官网 | curl -I HTTP 200 |
| 5 | https://docs.openwebui.com/ | 官方文档站首页 | curl -I HTTP 200 |
| 6 | https://docs.openwebui.com/getting-started/quick-start/ | Docker/pip 安装、镜像标签、内存实测、WSL 步骤、首管理员创建、端口与排障说明 | curl -sL 下载 HTML 并抽取正文通读(HTTP 200) |
| 7 | https://docs.openwebui.com/reference/env-configuration | 环境变量默认值与选项(OLLAMA_BASE_URL、OPENAI_API_BASE_URL、RAG_EMBEDDING_*、RAG_TOP_K 等) |
curl -sL 下载 HTML 并抽取正文通读(HTTP 200) |
| 8 | https://docs.openwebui.com/features/workspace/knowledge | 知识库创建、上传、# 引用、Focused/Full Context 模式、混合检索 |
curl -sL 下载 HTML 并抽取正文通读(HTTP 200) |
| 9 | https://docs.openwebui.com/getting-started/quick-start/connect-a-provider/starting-with-ollama | Ollama 连接地址、管理面板、模型拉取/删除/创建、超时配置 | curl -sL 下载 HTML 并抽取正文通读(HTTP 200) |
| 10 | https://docs.openwebui.com/getting-started/quick-start/connect-a-provider/starting-with-llama-cpp | llama.cpp llama-server 参数、/v1 连接地址、Provider 选择 |
curl -sL 下载 HTML 并抽取正文通读(HTTP 200) |
| 11 | https://docs.openwebui.com/getting-started/quick-start/connect-a-provider/starting-with-openai-compatible | OpenAI 兼容连接配置、/models 缺失时手动添加 Model IDs、后端地址说明 |
curl -sL 下载 HTML 并抽取正文通读(HTTP 200) |
| 12 | https://docs.openwebui.com/troubleshooting/connection-error | Ollama 连接失败、--network=host、DNS 解析故障、HF_ENDPOINT 镜像、CORS 等排障 |
curl -sL 下载 HTML 并抽取正文通读(HTTP 200) |
| 13 | https://docs.openwebui.com/features/authentication-access/rbac/roles/ | 首个账号自动成为 Admin、DEFAULT_USER_ROLE、无头创建管理员环境变量 |
web.fetch 实际打开通读(HTTP 200) |
| 14 | https://pypi.org/project/open-webui/ | PyPI 最新版本 0.12.4、requires_python |
PyPI JSON 接口 curl 解析(version=0.12.4,requires_python <3.13.0a1,>=3.11);页面 HTTP 200 |
| 15 | https://github.com/open-webui/open-webui/releases/tag/v0.12.4 | 最新 release 版本号与发布时间(2026-10-25 08:07 UTC) | curl -sL 解析页面 datetime;页面 HTTP 200 |
| 16 | https://hub.docker.com/r/openwebui/open-webui | Open WebUI 官方 Docker Hub 镜像仓库(ghcr.io 备选源,标签集合见 09.4.1 A-4) | curl -I HTTP 200;Docker Hub API 拉取标签列表确认含 0.12.4、0.12.4-cuda 等 |
| 17 | https://docs.docker.com/desktop/settings/windows/ | Docker Desktop Registry 镜像配置入口(通用 Docker 能力,非 Open WebUI 官方指定方案) | 仅作为 09.4.1 A-4 通用思路引用;本章未把任何第三方加速器标注为官方推荐 |
| 18 | https://docs.openwebui.com/assets/images/new-chat-placeholder-be568eb047e004bf0757ff35e34b4289.png | 图 09-1 官方界面截图原始文件 | curl -sL 下载(148,827 字节),file 核验 PNG 3000×2000;源 URL HTTP 200 |
| 19 | https://docs.openwebui.com/assets/images/knowledge-list-011c5b77c36082462e8e714d02d3e53b.png | 图 09-2 官方知识库界面截图原始文件 | curl -sL 下载(128,307 字节),file 核验 PNG 3000×2000;源 URL HTTP 200 |
| 20 | https://docs.openwebui.com/features/ | 功能总览导航页(数据库 / 文件存储 / 向量库分类) | curl -I HTTP 200 |
| 21 | https://download.pytorch.org/whl/cpu | PyTorch CPU 版官方安装索引(09.4.2 B-1、09.6 第 4 条命令来源) | curl -I HTTP 200 |
| 22 | https://ollama.com/ | Ollama 官方下载站(09.4.1 A-3 模型拉取前置安装) | curl -I HTTP 200 |
| 23 | https://www.docker.com/products/docker-desktop/ | Docker Desktop 官方下载页(09.4.1 A-1 依赖安装) | curl -I HTTP 200 |
待验证 / 未写死项说明: - 官方文档未给出 Open WebUI 应用本体的硬性最低内存与磁盘数值;09.3 中内存为官方实测空闲值(已注明非最低要求),磁盘为官方镜像体积实测值。 - ghcr.io 第三方加速器地址不在任何 Open WebUI 官方文档中,本章未编造具体镜像域名,仅给出 Docker 通用
registry-mirrors配置思路。
10. AnythingLLM —— 本地私有知识库 RAG 应用(All-in-One)
适配场景:Windows 10/11 + WSL2(Ubuntu 24.04)本地部署;RTX 3070 8GB / RTX 4090 24GB 均可使用。AnythingLLM 把 LLM 接入、文档解析、向量检索、工作区、Agent 工具与多用户管理打包在一个应用内,桌面版开箱即用,Docker 版支持多用户与嵌入网页聊天组件。
10.1 项目定位与基本信息
- 一句话定位:Mintplex Labs 出品的 All-in-One 本地优先 AI 应用(官方 README 原文:"The all-in-one AI app you were looking for. Chat with your docs, use AI Agents, hyper-configurable, multi-user, & no frustrating setup required.";另一句:"runs locally by default with zero setup friction"),支持商用与开源 LLM、向量数据库与嵌入模型,可在本机或服务器上自托管,提供私有知识库 RAG、工作区对话、Agent 技能与第三方数据连接器。
- 开源许可:MIT License。
- 出处 1:官方仓库
LICENSE文件(https://raw.githubusercontent.com/Mintplex-Labs/anything-llm/master/LICENSE ,已下载核验,"The MIT License, Copyright (c) Mintplex Labs Inc.")。 - 出处 2:官方 README 徽章 "license: MIT"(https://github.com/Mintplex-Labs/anything-llm )与 README 末尾 "This project is MIT licensed" 一节。
- 官方 GitHub 仓库:https://github.com/Mintplex-Labs/anything-llm
- 官方官网:https://anythingllm.com/ (产品介绍与下载入口,HTTP 200 已核验)。
- 官方文档站:https://docs.anythingllm.com/ (安装、provider、向量库、Agent、排障等全部官方说明;本站对
curl有 Cloudflare 拦截,本章文档内容均通过web.fetch实际打开核验)。 - 官方下载页:https://anythingllm.com/download (桌面版一键下载入口,当前页标注版本 v1.18.0,HTTP 200 已核验)。
- 版本说明:截至 2026-10-25,官方最新 release 为 v1.18.0(发布时间 2026-10-13 16:15 UTC,来源:https://github.com/Mintplex-Labs/anything-llm/releases/tag/v1.18.0 );Docker Hub 官方镜像
mintplexlabs/anythingllm:latest于 2026-10-23 更新(来源:https://hub.docker.com/r/mintplexlabs/anythingllm )。
10.2 官方图片
两张图均来自官方渠道:Logo 取自官方 GitHub 仓库
images/wordmark.png;界面图取自官方 README 内嵌演示 GIF(release v1.11.2 资源)第 8 秒帧,用ffmpeg转为 PNG。未使用 AI 生成图或非官方截图;已用file命令核验为 PNG 且体积大于 20KB。界面图对应 v1.11.2 版本,与当前 v1.18.0 界面细节可能存在差异。
图 10-1 AnythingLLM 官方品牌标识(wordmark)

- 来源 URL:https://raw.githubusercontent.com/Mintplex-Labs/anything-llm/master/images/wordmark.png
- 下载方式:
curl -L -o 10_anythingllm_logo.png "https://raw.githubusercontent.com/Mintplex-Labs/anything-llm/master/images/wordmark.png" - 核验:
file显示PNG image data, 800 x 200, 8-bit/color RGBA,体积 21,380 字节(>20KB)。
图 10-2 AnythingLLM 桌面端主界面(官方 README 演示 GIF 截帧)

- 来源 URL:https://github.com/Mintplex-Labs/anything-llm/releases/download/v1.11.2/AnythingLLM720p.gif (官方 README 第 45 行内嵌演示 GIF,31,147,746 字节,GIF 1240×720,HTTP 200 已核验)
- 下载与转码方式:
bash curl -L -o anythingllm_demo.gif "https://github.com/Mintplex-Labs/anything-llm/releases/download/v1.11.2/AnythingLLM720p.gif" ffmpeg -y -ss 8 -i anythingllm_demo.gif -frames:v 1 10_anythingllm_ui.png - 核验:
file显示PNG image data, 1240 x 720, 8-bit/color RGBA,体积 118,709 字节(>20KB)。
10.3 环境要求
说明:AnythingLLM 应用本体很轻量(官方裸机 / Docker 指南最低 2GB RAM、建议 10GB 磁盘);内存、显存与磁盘需求主要由你选择的本地 LLM、嵌入模型与文档规模决定。下表区分"应用本体最低要求"与"本地跑模型的推荐配置"。
10.4 最详细部署步骤(Windows 与 WSL2 两种视角,精确命令)
三条路径任选:A. 桌面版(Windows 本机,最省事,单用户);B. Docker(WSL2 / Linux 服务器,支持多用户与网页组件);C. 源码(Node 18 + Yarn,供二次开发,官方不提供支持)。
10.4.1 路径 A:Windows 桌面版(推荐个人自用)
A-1 下载安装包
- 打开官方下载页 https://anythingllm.com/download ,选择 Download for Windows (x64) 或 Download for Windows (ARM);页面当前版本为 v1.18.0。
- 也可直接从 GitHub Releases 下载对应安装包(已核验 HTTP 200): - x64:https://github.com/Mintplex-Labs/anything-llm/releases/download/v1.18.0/AnythingLLMDesktop.exe - ARM64:https://github.com/Mintplex-Labs/anything-llm/releases/download/v1.18.0/AnythingLLMDesktop-Arm64.exe
A-2 安装要点(官方 Windows 文档)
- 仅为当前用户安装:官方不推荐 "All users" 安装,会导致应用异常且不受支持;安装时选择 Current User only。
- 安装目录:
%LOCALAPPDATA%\Programs\AnythingLLM;用户数据目录:%APPDATA%\anythingllm-desktop(工作区、文档、向量库、聊天记录、下载的模型均在此目录)。 - 首次启动可能需要 1–2 分钟(内置引擎与 GPU 依赖初始化),后续启动接近秒开。
- 内置本地 LLM 由 Lemonade + llama.cpp 驱动;NVIDIA / AMD / NPU 的 GPU 依赖在安装过程中自动下载。
- 静默安装(v1.16.1+,脚本化部署用):
powershell
# 静默安装,跳过约 2GB 的会议助手模型下载
.\AnythingLLMDesktop.exe /S
# 静默安装并下载会议助手转写模型
.\AnythingLLMDesktop.exe /S /DOWNLOAD_MODEL=yes
静默卸载(保留数据):"$env:LOCALAPPDATA\Programs\AnythingLLM\Uninstall AnythingLLM.exe" /S;加 /DELETE_DATA=yes 会删除整个 %APPDATA%\anythingllm-desktop 目录且不可恢复。
依据:https://docs.anythingllm.com/installation-desktop/windows (Silent / headless installation 一节)。
A-3 启动与验证
双击桌面 "AnythingLLM" 图标启动;桌面版为原生应用,没有独立 Web 后台(后端仅监听 127.0.0.1,浏览器直接访问该端口不会得到完整界面)。无需注册账号、无需邮箱验证、无需 API Key 即可进入单用户界面。
10.4.2 路径 B:Docker 部署(WSL2 Ubuntu 24.04 / Linux 云服务器)
B-1 依赖安装(Windows 视角)
- 安装 Docker Desktop for Windows,勾选 WSL2 backend;
Settings → Resources → WSL Integration勾选默认 Ubuntu 24.04 发行版并保存重启。 - 建议全程在 WSL2 Ubuntu 终端执行
docker命令,避免在 PowerShell / CMD 中操作,减少挂载卷路径不一致导致的问题(Docker Desktop + WSL2 通用实践)。
B-2 拉取镜像并启动(官方命令)
说明:官方
HOW_TO_USE_DOCKER.md原命令带--rm(容器退出即删除);本章去掉--rm并显式--name anythingllm,便于后续docker start / stop管理,功能等价。
Linux / macOS / WSL2(bash):
export STORAGE_LOCATION=$HOME/anythingllm && \
mkdir -p $STORAGE_LOCATION && \
touch "$STORAGE_LOCATION/.env" && \
docker run -d -p 3001:3001 \
--cap-add SYS_ADMIN \
--name anythingllm \
-v ${STORAGE_LOCATION}:/app/server/storage \
-v ${STORAGE_LOCATION}/.env:/app/server/.env \
-e STORAGE_DIR="/app/server/storage" \
mintplexlabs/anythingllm:latest
Windows PowerShell(官方 HOW_TO_USE_DOCKER.md Windows 块;本章同样去掉 --rm、加 --name anythingllm,功能等价):
$env:STORAGE_LOCATION="$HOME\Documents\anythingllm"
If(!(Test-Path $env:STORAGE_LOCATION)) { New-Item $env:STORAGE_LOCATION -ItemType Directory }
If(!(Test-Path "$env:STORAGE_LOCATION\.env")) { New-Item "$env:STORAGE_LOCATION\.env" -ItemType File }
docker run -d -p 3001:3001 `
--cap-add SYS_ADMIN `
--name anythingllm `
-v "$env:STORAGE_LOCATION`:/app/server/storage" `
-v "$env:STORAGE_LOCATION\.env:/app/server/.env" `
-e STORAGE_DIR="/app/server/storage" `
mintplexlabs/anythingllm
命令参数对照(官方文档与 server/.env.example):
| 参数 | 作用(官方说明) |
|---|---|
-p 3001:3001 |
本机 3001 端口映射到容器内 3001(SERVER_PORT=3001,见 .env.example 第 1 行)。 |
--cap-add SYS_ADMIN |
给内置 Chromium 页面抓取能力所需的 Linux capability;若不做网页抓取,也可改用环境变量 ANYTHINGLLM_CHROMIUM_ARGS="--no-sandbox,--disable-setuid-sandbox" 替代(.env.example 第 537 行注释)。 |
-v ${STORAGE_LOCATION}:/app/server/storage |
必须挂载的数据目录:数据库、文档、向量库、模型缓存全部在此;官方 WARNING:不挂载该卷,容器重启后数据全部丢失。 |
-v ${STORAGE_LOCATION}/.env:/app/server/.env |
把宿主机 .env 挂进容器,便于在宿主机上持久化修改配置。 |
-e STORAGE_DIR="/app/server/storage" |
容器内存储绝对路径(无尾部斜杠)。 |
mintplexlabs/anythingllm:latest |
默认 SQLite 应用数据库;PostgreSQL 变体使用官方 mintplexlabs/anythingllm:pg 镜像(Docker Hub 标签列表已核验存在 pg 标签),通过 DATABASE_URL 连接外部 PostgreSQL。官方 Quickstart 要求该 PostgreSQL 库预先安装 PGVector 扩展(见下方变体命令说明)。 |
关于 Docker 内置 LLM(口径说明):官方 Docker / 桌面功能矩阵中 "Built-in LLM provider" 为 桌面版 ✅、Docker ❌;仓库 docker/HOW_TO_USE_DOCKER.md 另记载可选环境变量 ENABLE_BUILT_IN_LLM=true(引擎 Lemonade + llama.cpp;NVIDIA 走 CUDA,AMD / Intel 走 Vulkan 且仅 Linux,无 GPU 回退 CPU)。两份官方材料口径随版本可能变化,Docker 场景建议直接对接外部 Ollama 实例或云端 LLM 接口,不依赖内置 LLM。
PostgreSQL 变体(官方 Quickstart pg 镜像命令):按官方 Quickstart 要求,先启动一个运行中的 PostgreSQL 数据库并在该库中安装 PGVector 扩展,再使用 :pg 镜像启动;下面为示例命令,连接串中的主机、账号、密码、库名按实际实例替换(172.17.0.1 为 Linux Docker 访问宿主机的示例地址;完整命令块以官方 Quickstart 页面为准):
export STORAGE_LOCATION=$HOME/anythingllm && \
mkdir -p $STORAGE_LOCATION && \
touch "$STORAGE_LOCATION/.env" && \
docker run -d -p 3001:3001 \
--cap-add SYS_ADMIN \
-v ${STORAGE_LOCATION}:/app/server/storage \
-v ${STORAGE_LOCATION}/.env:/app/server/.env \
-e STORAGE_DIR="/app/server/storage" \
-e DATABASE_URL="postgresql://dbuser:dbpassword@172.17.0.1:5432/dbname" \
mintplexlabs/anythingllm:pg
B-3 模型 / 依赖下载
- 本地 LLM(推荐对接本机 Ollama):先在宿主机安装 Ollama 并
ollama pull qwen2.5:7b(示例模型,按显存选择);AnythingLLM 首次启动会自动探测官方列出的 Ollama 地址(见 10.5.2)。 - 默认嵌入模型:内置 native 引擎使用
Xenova/all-MiniLM-L6-v2的 ONNX 量化版(源自 Hugging Face,CPU 本地向量化,输出 384 维向量);首次使用时下载到存储目录下的models/Xenova子目录并缓存(官方排障文档说明),模型说明见server/storage/models/README.md。 - 国内网络说明:官方 README 说明即使关闭遥测,应用仍会访问
cdn.anythingllm.com从官方镜像 CDN 拉取模型(该 CDN 不做遥测统计,对 VPN 受限地区反而有用);嵌入模型来源为 Hugging Face 体系,若下载失败可改用 Ollama 嵌入引擎(EMBEDDING_ENGINE='ollama'+nomic-embed-text)规避,配置见 10.4.2 B-4 配置表。官方文档未提供第三方镜像站地址,本章不编造。
B-4 关键配置项总表(来源:官方 server/.env.example 与文档站)
| 配置项 | 默认值 | 说明 |
|---|---|---|
SERVER_PORT |
3001 |
服务监听端口(容器内)。 |
JWT_SECRET |
示例默认 my-random-string-for-seeding |
会话签名密钥,生产环境替换为至少 12 位随机串。 |
SIG_KEY |
示例默认 passphrase |
文档签名密钥,至少 32 位随机串。 |
SIG_SALT |
示例默认 salt |
文档签名盐值,至少 32 位随机串。 |
STORAGE_DIR |
—(生产必填,绝对路径无尾部斜杠) | 数据目录,Docker 内固定为 /app/server/storage。 |
LLM_PROVIDER |
空(界面选择持久化后写入) | LLM 供应商;可选 ollama、openai、anthropic、lmstudio、generic-openai、gemini、deepseek 等数十种(清单见 .env.example 第 10–203 行)。 |
OLLAMA_BASE_PATH |
示例 http://host.docker.internal:11434 |
Ollama 服务地址(Docker Windows/Mac);Linux 用 http://172.17.0.1:11434。 |
OLLAMA_MODEL_PREF |
示例 llama2 |
Ollama 默认模型名。 |
OLLAMA_MODEL_TOKEN_LIMIT |
4096 |
模型上下文令牌上限。 |
OLLAMA_AUTH_TOKEN |
空 | Ollama 挂在认证代理后时填写 Bearer Token(可选)。 |
OLLAMA_RESPONSE_TIMEOUT |
注释:默认 5 分钟;注释示例值 7200000(毫秒) |
Ollama 响应最长等待毫秒数,超时中断。 |
EMBEDDING_ENGINE |
native |
嵌入引擎;可选 ollama、openai、azure、cohere、voyageai、generic-openai、lmstudio、localai、litellm、gemini、openrouter、lemonade 等。 |
EMBEDDING_MODEL_PREF |
Xenova/all-MiniLM-L6-v2 |
嵌入模型名;Ollama 嵌入示例 nomic-embed-text:latest。 |
EMBEDDING_MODEL_MAX_CHUNK_LENGTH |
视引擎而定(示例 1000 / 8192 字符) | 单段送入嵌入模型的最大字符数。 |
VECTOR_DB |
lancedb |
向量库;可选 chroma、chromacloud、pinecone、astra、pgvector、weaviate、qdrant、milvus、zilliz。 |
WHISPER_PROVIDER |
local |
语音转写;可选 openai、generic-openai。 |
TTS_PROVIDER |
native |
语音合成;可选 openai、elevenlabs、generic-openai、kokoro。 |
STT_PROVIDER |
native |
服务端语音识别;可选 openai、lemonade、deepgram、generic-openai、groq。 |
COLLECTOR_PORT |
8888 |
文档解析采集器(collector)监听端口;进程分离部署时须与服务端配置一致。 |
ENABLE_BUILT_IN_LLM |
未设置 | 仓库 Docker 指南记载的可选开关;官方功能矩阵标注内置 LLM 为桌面版能力,Docker 场景建议对接外部 Ollama / 云端 API(口径见 10.3 GPU 行与 10.4.2 B-2 说明)。 |
DISABLE_TELEMETRY |
未设置(开启收集匿名使用信息) | 置 "true" 关闭遥测;也可在应用侧边栏 Privacy 中关闭(README Telemetry & Privacy 一节)。 |
AGENT_MAX_TOOL_CALLS |
10(.env.example 注释示例值) |
单轮响应中 Agent 最多链式调用工具次数,防止低端模型无限递归。 |
AGENT_SKILL_RERANKER_ENABLED |
默认开启(Intelligent Tool Selection,官方文档说明) | 工具重排序(按提示词只保留最相关工具),每轮对话最高节省约 80% token,代价是每轮额外 100–500ms 重排序开销;AGENT_SKILL_RERANKER_TOP_N 默认保留 15 个;可在 Settings → Agent Skills 面板关闭。 |
AGENT_AUTO_APPROVED_SKILLS |
空 | 逗号分隔、无需交互确认即可自动调用的技能,如 create-pdf-file,create-word-file。 |
| 数据卷(Docker) | /app/server/storage + /app/server/.env |
必须挂载,否则容器重建后数据库、文档、向量库、配置全部丢失。 |
B-5 启动与验证
docker logs -f anythingllm # 观察启动日志,无报错后访问页面
浏览器访问 http://localhost:3001 即进入应用。
10.4.3 路径 C:源码部署(Node 18 + Yarn,二次开发用)
官方警告:该方式不受核心团队支持,部署安全与数据由使用者自负;以下步骤全部来自官方
BARE_METAL.md。
C-1 依赖安装(WSL2 Ubuntu 24.04)
官方 BARE_METAL.md 硬性要求 NodeJS v18 与 Yarn(未给出具体安装命令;Ubuntu 24.04 仓库默认 Node 版本并非 v18,需自行通过 nvm / NodeSource 等方式安装 v18,再安装 Yarn):
# 前置:本机已具备 NodeJS v18(node --version 应为 v18.x)与 Yarn
yarn --version
说明:以下源码步骤全部来自官方
BARE_METAL.md;官方同时声明裸机 / 非容器化部署不受核心团队支持。
C-2 拉取源码与初始化
git clone git@github.com:Mintplex-Labs/anything-llm.git
cd anything-llm
yarn setup # 安装生产与调试全部依赖
cp server/.env.example server/.env # 生成基础配置文件
编辑 server/.env,至少设置:
STORAGE_DIR="/your/absolute/path/to/server/storage"
编辑 frontend/.env,把 VITE_API_BASE 设为 /api(非 localhost 地址 / Docker / 源码生产模式使用):
VITE_API_BASE='/api'
C-3 构建前端、迁移数据库、启动进程
# 1. 构建前端
cd frontend && yarn build
# 2. 把构建产物交给 server 提供静态服务
cp -R frontend/dist server/public
# 3. 生成 Prisma 客户端并迁移数据库
cd server
npx prisma generate --schema=./prisma/schema.prisma
npx prisma migrate deploy --schema=./prisma/schema.prisma
# 4. 分别启动 server 与 collector 两个生产进程
cd server && NODE_ENV=production node index.js &
cd collector && NODE_ENV=production node index.js &
C-4 验证
浏览器访问 http://localhost:3001。更新流程:git pull origin master → 重复 C-3 构建、迁移、重启步骤;重启前先 pkill node,避免多进程冲突(官方 BARE_METAL.md 更新说明)。
10.5 使用方法
10.5.1 启动方式速查
| 部署方式 | 启动 / 访问 | 账号模式 |
|---|---|---|
| Windows 桌面版 | 双击桌面图标,原生窗口运行;无独立 Web 后台 | 单用户,无需注册 |
| Docker(SQLite) | docker start anythingllm,浏览器 http://localhost:3001 |
默认单用户;可在设置中开启多用户并创建首个管理员 |
| Docker(pg) | 同上,mintplexlabs/anythingllm:pg 变体通过 DATABASE_URL 连接外部 PostgreSQL;官方 Quickstart 要求该库预装 PGVector 扩展 |
同上 |
| 源码 | server 与 collector 双进程,http://localhost:3001 |
同上 |
10.5.2 界面操作步骤
- 进入实例 - 桌面版:直接进入,无登录页。 - Docker 单用户模式:可在设置中打开 "Password Protect Instance" 设置实例密码;知道密码即可使用全部功能、查看所有会话。 - Docker 多用户模式:在设置中打开 "Enable multi-user mode",填写用户名密码创建首个管理员账号(Admin,拥有全系统权限);此后登出并以该账号登录。注意:一旦切换到多用户模式,无法回退到单用户模式。角色分三级:Admin(全量权限)、Manager(可查看所有工作区并管理属性,但不能改 LLM / 嵌入器 / 向量库设置)、Default(只能被加入指定工作区聊天)。 - 依据:https://docs.anythingllm.com/features/security-and-access 。
- 连接 LLM 供应商
- 点击左下角 Settings(齿轮)→ AI Providers → LLM。
- 本地 Ollama:桌面版与 Docker 版都会自动探测以下地址,探测不到时在界面手动填写:
http://127.0.0.1:11434(桌面版 / 本机进程)http://host.docker.internal:11434(Docker on Windows / macOS)http://172.17.0.1:11434(Docker on Linux)- 也可选择 OpenAI、Anthropic、Gemini、DeepSeek、Generic OpenAI、LM Studio、Lemonade、Foundry Local 等供应商,填写 Base URL / API Key / 模型名后保存;系统默认模型之外,单个工作区可在工作区设置里另选模型。
- 验证 Ollama 是否在跑:浏览器先打开
http://127.0.0.1:11434,应看到 "Ollama is running";ollama run <模型名>不会启动 API 服务,需保证ollama serve在运行。 - 依据:https://docs.anythingllm.com/ollama-connection-troubleshooting ;https://docs.anythingllm.com/features/language-models 。
- 配置嵌入器与向量库
-
Settings → AI Providers → Embedder:默认 Built-in(native)Xenova/all-MiniLM-L6-v2,CPU 本地向量化;文档量大时可切换 Ollama / OpenAI / Cohere 等外部嵌入器。 -Settings → AI Providers → Vector Database:默认 LanceDB(本地文件);可切换 Chroma、pgvector、Qdrant、Milvus 等。 - 依据:https://docs.anythingllm.com/features/embedding-models ;https://docs.anythingllm.com/features/vector-databases ;.env.example第 206–351 行。 - 创建工作区与上传文档
- 左侧工作区栏点击 + New Workspace,命名(如
Blog-KB)并创建。 - 附加文档(Attach,全文注入):把文件拖进聊天窗口,或点输入框旁+;文档作用域为当前工作区 + 当前线程,其他线程不可见;默认把全文插入上下文,上下文窗口不足时会弹出三选一:Cancel(移除文档)/ Continue Anyway(继续全文,超出部分会被自动裁剪,回答易失真,官方不推荐)/ Embed(转入 RAG 嵌入工作区)。 - 嵌入文档(Embed / RAG,推荐建知识库):上传后在文档管理中点 "Move into workspace";文档被切分为分片 → 嵌入模型向量化 → 存入向量库;嵌入后对工作区所有线程可用,多用户模式下对工作区内所有用户可用。 - 支持多种文档类型(README 原文:PDF、TXT、DOCX 等Multiple document type support);内置网页 URL 抓取能力;各格式实际解析能力以采集器(collector)实现为准。 - 依据:https://docs.anythingllm.com/chatting-with-documents/introduction ;https://docs.anythingllm.com/chatting-with-documents/rag-in-anythingllm 。 - 调优 RAG 参数(工作区齿轮图标) - Search Preference (Reranking):仅 LanceDB 可用;默认搜索最相关分片;"Accuracy Optimized" 先取回更多分片再重排序,效果更好但慢约 100–500ms;重排序模型首次使用时下载一次。 - Max Context Snippets:送入 LLM 的相关分片数量;多数模型建议保持 4–6,大上下文模型可调高,过多噪声会误导回答。 - Document similarity threshold:过滤低相关分片;默认最低分数 20%;选项 No Restriction / Low(≥0.25)/ Medium(≥0.50)/ High(≥0.75)。出现幻觉或答非所问时先调到 No Restriction 排查。 - Document Pinning:已嵌入文档可固定为全文注入上下文,适合必须全文理解的关键文档;固定文档不参与 RAG 检索,避免重复注入。 - 依据:https://docs.anythingllm.com/chatting-with-documents/introduction (RAG settings 一节)。
- Agent 模式与工具
- 在输入框输入
@agent切换到 Agent 模式,输入exit退出;新版工作区默认聊天模式为 Agent(v1.11.1 起),另有 Chat(普通对话)与 Query(单次问答)模式可切换。 - 内置能力(官方 ai-agents 文档描述):检索工作区知识库、抓取网站与联网浏览、列出与总结指定文档、生成图表、把结果文件保存到本地桌面,以及工作区长期记忆;各项能力在下方 Agent Skills 面板中逐项开关。 -Settings → Agent Skills面板可逐项开关(官方下载页与文档截图中的内置技能):RAG & long-term memory、View & summarize documents、Scrape websites、File System Access、Document Creation、Generate charts、Web Search、SQL Connector;App Integrations 子项:Apple Notes、Gmail、Google Calendar、Outlook。面板中另有Generate & save files to browser等内置动作;支持 NodeJS 自定义 Skill 与 MCP 服务器接入(@agent会话可自动使用已配置的技能、工具与 MCP)。 - 依据:https://anythingllm.com/download (官方下载页 Agent Skills 面板截图);https://docs.anythingllm.com/agent/custom/introduction ;https://docs.anythingllm.com/features/ai-agents ;https://docs.anythingllm.com/features/chat-modes ;https://docs.anythingllm.com/agent/intelligent-tool-selection ;https://docs.anythingllm.com/mcp-compatibility/overview (MCP 服务器接入)。
10.5.3 常用参数说明表
| 位置 | 参数 / 选项 | 说明 |
|---|---|---|
| Workspace 设置 | System Prompt | 工作区系统提示词,全局默认提示词之外的补充。 |
| Workspace 设置 | Chat Mode | Agent / Chat / Query 三种模式。 |
| Workspace 设置 | Search Preference | 默认(直接检索最相关分片)/ Accuracy Optimized(先取回更多分片再重排序,仅 LanceDB)。 |
| Workspace 设置 | Max Context Snippets | 送入模型的分片数,建议 4–6。 |
| Workspace 设置 | Similarity Threshold | 分片相关度下限,默认 20%。 |
| Workspace 设置 | Document Pinning | 关键文档全文固定注入上下文。 |
| Settings → AI Providers → LLM | Provider / Base URL / API Key / Model / Token Limit | 系统级默认模型配置;工作区可覆盖。 |
| Settings → AI Providers → Embedder | Engine / Model / Max Chunk Length | 嵌入模型与分片字符上限。 |
| Agent Skills | 工具逐项开关 | 控制 Agent 可调用的内置能力范围。 |
| Agent | @agent / exit |
进入 / 退出 Agent 模式。 |
| 环境变量 | AGENT_MAX_TOOL_CALLS |
单轮最大工具链式调用次数。 |
| 环境变量 | AGENT_AUTO_APPROVED_SKILLS |
免确认自动执行的技能白名单。 |
| 环境变量 | MEMORY_EXTRACTION_INTERVAL / MEMORY_IDLE_THRESHOLD_MS |
记忆抽取后台任务周期与空闲阈值;工作区记忆上限 20 条,全局记忆上限 5 条。 |
10.5.4 端到端示例:把博客 Markdown / PDF 文章做成私有问答知识库
前置条件:Docker 实例运行于 http://localhost:3001 ;本机 Ollama 已
ollama pull qwen2.5:7b(按 3070 8GB 显存选合适量化版本;4090 24GB 可换更大模型)。
- 浏览器打开 http://localhost:3001 ;若开启多用户,用管理员账号登录。
Settings → AI Providers → LLM选 Ollama,地址http://host.docker.internal:11434(Windows Docker)或http://172.17.0.1:11434(Linux Docker),模型选qwen2.5:7b,保存。- 新建工作区
Blog-KB;点上传入口,把博客导出的.md/.pdf文章拖入;在文档列表中逐个 Move into workspace 完成嵌入(等待分片向量化完成)。 - 回到工作区对话,确认聊天模式为 Agent 或 Chat;先问一句 "请总结本工作区文档的主题分布" 验证知识库已挂载。
- 提问示例:"根据已上传的博客文章,列出 WSL2 下部署本地大模型的步骤要点,并注明引用了哪几篇文档。"
- 核验回答下方 Sources 引用片段;若模型答不到文档内容:先把 Similarity Threshold 调到 No Restriction 复测,再检查嵌入器是否为 Built-in 或 Ollama、文档是否已成功嵌入工作区、分片数是否被限制过低。
10.6 常见坑(现象 + 原因 + 解决)
-
现象:Docker 版 AnythingLLM 选 Ollama 后模型列表为空,对话报连接失败 / ECONNREFUSED。 - 原因:容器内
localhost/127.0.0.1/0.0.0.0指向容器自身,不是宿主机;这是 100% 出现率的 Docker 连接错误。 - 解决:Windows / macOS Docker 改用http://host.docker.internal:11434;Linux Docker 改用http://172.17.0.1:11434;远程 Ollama 直接填对方机器可达 IP 并放开防火墙。先在宿主机浏览器访问http://127.0.0.1:11434确认 Ollama 服务在运行。 - 依据:https://docs.anythingllm.com/ollama-connection-troubleshooting ;https://docs.anythingllm.com/installation-docker/localhost 。 -
现象:容器重启 / 升级后,工作区、文档、模型配置全部消失。 - 原因:
docker run遗漏-v ${STORAGE_LOCATION}:/app/server/storage数据卷挂载。 - 解决:严格使用 10.4.2 B-2 官方命令的两条-v(存储目录 +.env);官方文档明确 WARNING:不挂载该卷,数据在容器重启时即丢失。 - 依据:https://docs.anythingllm.com/installation-docker/local-docker (Pull / Run 一节 WARNING)。 -
现象:容器启动后立即退出,日志结尾
Error: SQLite database error unable to open database file: ../storage/anythingllm.db。 - 原因:存储目录对容器内非特权用户(UID/GID1000)不可写;常见于把STORAGE_LOCATION放在/mnt、/data、/srv、/opt等 root 拥有的顶层目录下。 - 解决:启动前把目录属主交给 1000:sudo chown -R 1000:1000 ${STORAGE_LOCATION},删除死亡容器后重新执行官方启动命令。不要用chmod -R 777——旧 issue 里该做法会让数据库、文档与含 API Key 的.env对本机所有用户可读可写;源码自建镜像且改过UID/GID时,以.env中的实际数值为准。 - 依据:https://docs.anythingllm.com/installation-docker/local-docker (unable to open database file 一节)。 -
现象:容器启动或首次聊天时退出,日志结尾
/usr/local/bin/docker-entrypoint.sh: line 7: 115 Illegal instruction (core dumped) node /app/server/index.js。 - 原因:CPU 不支持 AVX2 指令集;默认向量库 LanceDB 基于 Intel Haswell(2013)基线编译,加载时直接杀进程。官方说明常见于老硬件、部分云实例族,以及 Proxmox / QEMU-KVM 等虚拟机中 hypervisor 把 AVX2 对客户机隐藏。 - 解决:① 在宿主 / 虚拟机内确认 CPU 是否暴露 AVX2(通用排查方式:lscpu或cat /proc/cpuinfo | grep flags | grep avx2;虚拟机需在 hypervisor 层把 CPU 直通为宿主类型后重启复测,具体选项随虚拟化平台不同);② 物理 CPU 确实不支持 AVX2 时,按官方建议改用其他受支持的向量数据库(在.env中将VECTOR_DB切到 Chroma / pgvector / Qdrant 等,LanceDB 不被选中即不会被加载);或换用支持 AVX2 的主机。 - 依据:https://docs.anythingllm.com/installation-docker/local-docker (Container exits with Illegal instruction 一节);https://docs.anythingllm.com/installation-docker/system-requirements (CPU instruction set requirements 一节);https://docs.anythingllm.com/fetch-failed-on-upload (Your CPU is not supported 一节)。 -
现象:
docker run后浏览器打不开页面,日志报port is already allocated/ 3001 被占用。 - 原因:本机 3001 端口已被其他程序(如其他容器、本地服务)占用(Docker 通用排障,非 AnythingLLM 专有问题)。 - 解决:修改发布端口左侧数字,如-p 3002:3001,浏览器访问 http://localhost:3002;容器内SERVER_PORT保持 3001 不变。 -
现象:Windows 安装时报 "AnythingLLM cannot be closed",无法继续安装。 - 原因:① 旧版本仍在后台托盘运行(v1.11.0 起关闭窗口最小化到系统托盘);② 历史上曾按 "All users" 安装,残留需要管理员权限卸载的程序。 - 解决:托盘图标右键 "Quit AnythingLLM" 后点 Retry;第二种情况:右键桌面图标 → Open File Location → 运行
Uninstall AnythingLLM.exe(必要时以管理员身份运行),卸载后仅按 Current User 重装;上述操作不会删除数据与设置。 - 依据:https://docs.anythingllm.com/installation-desktop/windows (Troubleshooting 一节)。 -
现象:桌面版安装 / 升级时 "Failed to install/extract GPU support from CDN",内置模型只能跑 CPU。 - 原因:旧内置 Ollama 引擎从官方 CDN 拉取 GPU 支持文件时被网络 / 防火墙拦截;新版桌面内置引擎已切换为 Lemonade + llama.cpp,该旧问题仅针对遗留 Ollama 引擎。 - 解决:检查网络与防火墙后重启安装器;官方不建议手工修复该引擎(升级易破坏);推荐做法是单独安装 Ollama,再由 AnythingLLM 自动探测并对接外部 Ollama 实例,版本间更稳定。 - 依据:https://docs.anythingllm.com/installation-desktop/windows (Failed to install/extract GPU support from CDN 一节)。
-
补充说明(上传文件大小):官方
server/.env.example未提供独立的单文件上传大小限制环境变量;采集器(collector)源码collector/index.js中FILE_LIMIT = "3GB"为请求体上限(bodyParser.text/json/urlencoded均按此值限制)。实际可用的单文件上限还受模型上下文窗口、分片策略与浏览器上传链路约束;超大文档建议先在本地拆分或转成纯文本再上传。 - 依据:https://raw.githubusercontent.com/Mintplex-Labs/anything-llm/master/server/.env.example ;https://raw.githubusercontent.com/Mintplex-Labs/anything-llm/master/collector/index.js (第 21、37–40 行)。
10.7 本节来源清单
| # | URL | 用途 | 验证方式 |
|---|---|---|---|
| 1 | https://github.com/Mintplex-Labs/anything-llm | 仓库主页、README(功能清单、MIT 徽章、遥测说明、提供商清单) | curl -I HTTP 200(2026-10-25 实测) |
| 2 | https://raw.githubusercontent.com/Mintplex-Labs/anything-llm/master/README.md | README 原始文本(定位、功能、提供商、向量库、许可声明) | curl -sL 下载成功,本地通读 |
| 3 | https://raw.githubusercontent.com/Mintplex-Labs/anything-llm/master/LICENSE | MIT 许可原文(Copyright Mintplex Labs Inc.) | curl -sL 下载成功,本地通读 |
| 4 | https://anythingllm.com/ | 官方官网 | curl -I HTTP 200 |
| 5 | https://anythingllm.com/download | 桌面版下载页(v1.18.0,Windows x64 / ARM 入口) | curl -I HTTP 200;web.fetch 实际打开核验版本号与按钮文案 |
| 6 | https://docs.anythingllm.com/ | 官方文档站首页 | web.fetch 打开成功(Cloudflare 拦截 curl,故文档类页面均以 web.fetch 为准) |
| 7 | https://docs.anythingllm.com/installation-desktop/overview | 桌面版定位、后端仅监听 127.0.0.1、功能矩阵(桌面 vs Docker) | web.fetch 实际打开通读 |
| 8 | https://docs.anythingllm.com/installation-desktop/system-requirements | 桌面推荐配置:16GB RAM、8 核 CPU、Windows GPU 8–12GB+ VRAM、存储随模型而定 | web.fetch 实际打开通读 |
| 9 | https://docs.anythingllm.com/installation-desktop/windows | Windows 10+ x64/ARM64、仅当前用户安装、数据 / 安装目录、内置 Lemonade+llama.cpp、静默安装参数、托盘退出、CDN GPU 故障排障 | web.fetch 实际打开通读 |
| 10 | https://docs.anythingllm.com/installation-docker/overview | Docker 定位、桌面版 / Docker 功能差异矩阵 | web.fetch 实际打开通读 |
| 11 | https://docs.anythingllm.com/installation-docker/local-docker | Docker 拉取与启动命令、数据卷 WARNING、UID/GID 1000、AVX2 崩溃与数据库文件无法打开排障 | web.fetch 实际打开通读 |
| 12 | https://docs.anythingllm.com/installation-docker/quickstart | pg 镜像启动命令说明(官方要求先准备运行中的 PostgreSQL 并安装 PGVector 扩展)、UID/GID 1000 默认值说明 |
web.fetch 实际打开通读 |
| 13 | https://docs.anythingllm.com/installation-docker/system-requirements | 最低 2GB RAM / 2 核 / 5GB、CPU 指令集(AVX2)硬性要求一节、默认嵌入器 CPU 本地向量化 | web.fetch 实际打开通读 |
| 14 | https://docs.anythingllm.com/installation-docker/localhost | Docker 内 localhost/127.0.0.1/0.0.0.0 不可用;Win/Mac 用 host.docker.internal、Linux 用 172.17.0.1;PostgreSQL / Ollama / Chroma / LM Studio 示例 |
web.fetch 实际打开通读 |
| 15 | https://docs.anythingllm.com/ollama-connection-troubleshooting | Ollama 自动探测地址清单、127.0.0.1:11434 存活检查、Docker 地址替换规则、远程 Ollama 说明 |
web.fetch 实际打开通读 |
| 16 | https://docs.anythingllm.com/features/language-models | 本地 / 云端 LLM 供应商清单(Built-in、Ollama、LM Studio、OpenAI、Anthropic、DeepSeek、Generic OpenAI 等) | web.fetch 实际打开通读 |
| 17 | https://docs.anythingllm.com/features/embedding-models | 本地 / 云端嵌入器供应商清单,默认 Built-in | web.fetch 实际打开通读 |
| 18 | https://docs.anythingllm.com/features/vector-databases | 向量数据库支持矩阵与默认 LanceDB 说明 | web.fetch 实际打开通读 |
| 19 | https://docs.anythingllm.com/features/ai-agents | @agent 进入 / exit 退出、Agent 工具能力描述(抓取网站、列出与总结文档、联网搜索、生成图表、保存文件到桌面、工作区记忆) |
web.fetch 实际打开通读 |
| 20 | https://docs.anythingllm.com/features/security-and-access | 单用户 / 多用户模式、首个管理员创建、Admin/Manager/Default 角色、多用户不可回退、实例密码保护(Docker 限定) | web.fetch 实际打开通读 |
| 21 | https://docs.anythingllm.com/features/chat-modes | Agent / Chat / Query 聊天模式说明 | web.fetch 实际打开通读 |
| 22 | https://docs.anythingllm.com/features/memories | 工作区记忆 20 条 / 全局记忆 5 条、记忆注入规则、MEMORY_EXTRACTION_INTERVAL / MEMORY_IDLE_THRESHOLD_MS |
web.fetch 实际打开通读 |
| 23 | https://docs.anythingllm.com/chatting-with-documents/introduction | 附加 vs 嵌入、上下文溢出三选一、RAG 设置(重排序、Max Context Snippets、Similarity Threshold 默认 20%、Document Pinning) | web.fetch 实际打开通读(页面标注适用 1.8.5+) |
| 24 | https://docs.anythingllm.com/chatting-with-documents/rag-in-anythingllm | RAG 工作流:上传→移入工作区→分片→嵌入→向量库→检索 4–6 分片→注入 System message(页面标注为 legacy 说明) | web.fetch 实际打开通读 |
| 25 | https://docs.anythingllm.com/agent/custom/introduction | 自定义 Agent Skill(NodeJS)、Agent Skills 设置面板与内置能力开关清单 | web.fetch 实际打开通读 |
| 26 | https://raw.githubusercontent.com/Mintplex-Labs/anything-llm/master/docker/HOW_TO_USE_DOCKER.md | 官方 Docker 部署指南:最低 2GB RAM / 10GB 磁盘、Windows PowerShell 启动命令、compose 示例、UID/GID、内置 LLM 引擎(Lemonade + llama.cpp)与 GPU 后端矩阵(NVIDIA CUDA / AMD-Intel Vulkan Linux) | curl -sL 下载成功,本地通读 |
| 27 | https://raw.githubusercontent.com/Mintplex-Labs/anything-llm/master/BARE_METAL.md | 源码部署:NodeJS v18、Yarn、yarn setup、前端构建、Prisma 迁移、server + collector 双进程;官方不支持裸机部署声明 |
curl -sL 下载成功,本地通读全文 |
| 28 | https://raw.githubusercontent.com/Mintplex-Labs/anything-llm/master/server/.env.example | 环境变量默认值与选项(SERVER_PORT、VECTOR_DB=lancedb、EMBEDDING_ENGINE=native、嵌入模型、Ollama 配置、Whisper/TTS/STT、collector 端口、Agent 开关等) |
curl -sL 下载成功(598 行),本地通读 |
| 29 | https://raw.githubusercontent.com/Mintplex-Labs/anything-llm/master/collector/index.js | 采集器 FILE_LIMIT="3GB" 请求体上限源码依据 |
curl -sL 下载成功,定位第 21、37–40 行 |
| 30 | https://github.com/Mintplex-Labs/anything-llm/releases/tag/v1.18.0 | 最新 release 版本号与发布时间(2026-10-13 16:15 UTC) | curl -sL 解析页面 datetime;页面 HTTP 200 |
| 31 | https://github.com/Mintplex-Labs/anything-llm/releases/download/v1.18.0/AnythingLLMDesktop.exe | Windows x64 安装包直链 | curl -I HTTP 200 |
| 32 | https://github.com/Mintplex-Labs/anything-llm/releases/download/v1.18.0/AnythingLLMDesktop-Arm64.exe | Windows ARM64 安装包直链 | curl -I HTTP 200 |
| 33 | https://hub.docker.com/r/mintplexlabs/anythingllm | 官方 Docker Hub 镜像仓库 | curl -I HTTP 200;Hub API 核验 latest 标签更新于 2026-10-23 |
| 34 | https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2 | 默认嵌入模型对应的 sentence-transformers 原始模型(RAG 文档引用链接) | curl -I HTTP 200 |
| 35 | https://raw.githubusercontent.com/Mintplex-Labs/anything-llm/master/images/wordmark.png | 图 10-1 官方 Logo 原始文件 | curl -sL 下载(21,380 字节),file 核验 PNG 800×200;源 URL HTTP 200 |
| 36 | https://github.com/Mintplex-Labs/anything-llm/releases/download/v1.11.2/AnythingLLM720p.gif | 图 10-2 官方 README 演示 GIF 原始资源(31,147,746 字节,1240×720) | curl -sL 下载成功(HTTP 200);ffmpeg 取第 8 秒帧转为 PNG,file 核验 118,709 字节 PNG 1240×720 |
| 37 | https://raw.githubusercontent.com/Mintplex-Labs/anything-llm/master/server/storage/models/README.md | 内置 native 嵌入器 Xenova/all-MiniLM-L6-v2(ONNX 量化版、384 维向量)、内置模型存储目录说明 |
curl -sL 下载成功,本地通读 |
| 38 | https://docs.anythingllm.com/agent/intelligent-tool-selection | Intelligent Tool Selection(默认开启、最高节省约 80% token、每轮 100–500ms 重排序开销、AGENT_SKILL_RERANKER_TOP_N 取前 N 个工具) |
web.fetch 实际打开通读 |
| 39 | https://docs.anythingllm.com/fetch-failed-on-upload | 嵌入失败排障:默认嵌入模型需联网下载、CPU 不支持 AVX2 时改用其他向量库、Windows VC++ 运行库 | web.fetch 实际打开通读 |
| 40 | https://docs.anythingllm.com/mcp-compatibility/overview | MCP 服务器接入:anythingllm_mcp_servers.json 配置、StdIO / SSE / Streamable 传输、MCP 管理 UI |
web.fetch 实际打开通读 |
待验证 / 未写死项说明: - 官方文档未给出容器内单文件上传的独立大小限制环境变量;10.6 第 8 条已明确标注该事实与源码请求体上限 3GB 的区别。 - 桌面版默认内置模型清单、版本随发布迭代;本章仅引用官方文档确认的引擎组合(Lemonade + llama.cpp),未罗列具体模型版本号。 -
https://docs.anythingllm.com对命令行curl返回 Cloudflare 403,文档类条目均通过web.fetch实际打开核验;GitHub 与官网类条目通过curl状态码与原文下载核验。