SmartMeeting/speakr/docs/troubleshooting.md

175 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 故障排除
当 Speakr 出现问题时,本指南可帮助您快速识别和解决常见问题。大多数问题归为以下几类 — [安装问题](getting-started/installation.md)、转录失败、性能问题或特定功能异常。同时请参阅 [常见问题](faq.md) 了解常见疑问。了解从哪里着手以及需要检查什么可以节省大量排错时间。
## 安装与设置问题
### 容器无法启动
当 Docker 容器拒绝启动或立即退出时,问题通常出在配置上。首先检查您的 [环境配置文件](getting-started.md#step-3-configure-your-transcription-service) — API 密钥中的任何拼写错误或不匹配的引号都可能导致启动失败。查看 [安装指南](getting-started/installation.md) 了解正确的设置方式。运行 `docker-compose logs app` 查看实际的错误信息。常见原因包括端口冲突(其他服务占用了 8899 端口)、缺少卷挂载或数据目录文件权限不正确。
如果遇到数据库连接错误,请确保数据库文件具有正确的权限。容器以特定用户身份运行,需要对数据目录具有读写权限。在 Linux 系统上,您可能需要使用 `chown -R 1000:1000 ./uploads ./instance` 调整文件所有者。
### 无法访问 Web 界面
当 Speakr 成功启动但您无法访问 Web 界面时,通常是网络配置问题。首先使用 `docker ps` 验证容器是否实际在运行。检查端口 8899 是否正确映射 — docker-compose 文件的 ports 部分应显示 `"8899:8899"`
防火墙规则经常阻止访问尤其是在云服务器上。确保防火墙、安全组AWS或网络策略中已开放 8899 端口。如果从其他机器访问,请注意 `localhost` 无效 — 需要使用服务器的实际 IP 地址或主机名。
### 管理员登录失败
如果无法使用 [管理员凭据](getting-started.md#step-4-configure-admin-account) 登录,首先验证您使用的是环境配置文件中完全相同的用户名和密码。有关用户管理问题,请参阅 [管理员指南](admin-guide/user-management.md)。这些值区分大小写,必须完全匹配。检查 Docker 日志中的管理员用户创建消息 — 首次启动时应看到 "Admin user created successfully"。
有时如果密码不符合要求,管理员用户创建会静默失败。确保管理员密码至少为 8 个字符。如果管理员用户未创建,您可能需要删除数据库文件并重启容器以重新触发初始化。
## 转录问题
### 转录从未开始
当录音一直处于 "pending" 状态时,后台处理器可能已停止。检查日志中是否有关于 [转录服务](features.md#multi-engine-support) 的错误消息。在 [向量存储](admin-guide/vector-store.md) 管理面板中监控处理状态。API 密钥问题是最常见的原因 — 验证您的 OpenAI 或 OpenRouter API 密钥是否有效且具有可用额度。
网络连接问题也可能阻止转录。容器需要能够访问外部 API 端点。如果您在公司代理后面,需要在 Docker 环境中配置代理设置。
### 转录立即失败
快速失败通常表明 API 身份验证问题。仔细检查环境配置文件中的 API 密钥。请注意 OpenAI 和 OpenRouter 使用不同的密钥格式。OpenAI 密钥以 "sk-" 开头,而 OpenRouter 密钥格式不同。确保您为已配置的服务使用了正确的密钥。
API 速率限制或额度不足也会导致立即失败。登录您的 API 提供商仪表板检查使用情况和限制。某些 API 计划的速率限制较为严格Speakr 处理大文件时可能超出限制。
### ASR 端点返回 405 或 404 错误
如果使用 Whisper ASR webservice 时遇到 "405 Method Not Allowed" 或 "404 Not Found" 错误,请检查您的 ASR_BASE_URL 配置。URL 不应包含尾部注释或描述 — 删除环境配置文件中 # 符号之后的任何内容。对于 Whisper ASR webservice仅使用基础 URL`http://whisper-asr:9000`,不要在末尾添加 `/asr`
使用 Docker Compose 时,始终使用容器名称而非 IP 地址进行服务通信。不要使用 `http://192.168.1.132:9000`,而应使用 `http://whisper-asr-webservice:9000`,其中 `whisper-asr-webservice` 是您的容器名称。
### 转录质量不佳
转录准确率高度依赖于音频质量。背景噪音、多个重叠说话人或麦克风摆放位置不当都会降低结果质量。AI 模型在清晰的单人音频或分离良好的多人音频上效果最佳。
语言不匹配也会导致结果不佳。如果您在设置中指定了特定的转录语言,但上传了不同语言的音频,准确率会受到影响。请设置正确的语言或留空以启用自动检测。
对于多人录音,使用 [带说话人分离功能的 ASR 端点](features.md#speaker-diarization) 可显著提高可用性。了解如何在转录后 [识别说话人](user-guide/transcripts.md#speaker-identification),即使原始转录准确率相似。
### 中文转录问题
对于 [中文语言转录](features.md#language-support),模型选择至关重要。有关更多详细信息,请参阅 [关于语言支持的常见问题](faq.md#can-speakr-transcribe-languages-other-than-english)。
**重要提示**Distil 模型(如 distil-large-v3不支持正确的中文转录。即使您将语言设置为 "zh",这些模型也可能将中文音频识别为英文并产生错误输出。对于中文内容,请始终使用完整版的 large-v3 模型或类似的非蒸馏模型。如果您的中文音频被转录为英文,或输出为拼音而非中文字符,请从 distil 模型切换到 large-v3。
### 摘要语言与偏好不匹配
如果点击 "Reprocess Summary" 后 [摘要](features.md#automatic-summarization) 回退到英文,尽管已设置了 [语言偏好](user-guide/settings.md#language-preferences),这可能是模型限制。配置 [自定义提示词](admin-guide/prompts.md) 以强制执行语言要求。某些模型(如 Qwen3-30B不一定能正确遵循语言指令。尝试使用能更好地遵循语言指令的不同模型或确保您的自定义提示词明确指定了输出语言。
## 性能问题
### 转录处理缓慢
大音频文件自然需要更长时间处理,但过度延迟表明存在问题。检查您的 [服务器资源](getting-started.md#prerequisites) 并查看 [系统统计信息](admin-guide/statistics.md) 获取性能指标 — Speakr 需要足够的 CPU 和 RAM尤其是在同时处理多个录音时。`docker stats` 命令可显示当前资源使用情况。
网络速度影响转录时间,因为音频必须上传到 API 服务。慢速互联网连接会造成瓶颈,尤其是对于大文件。如果您经常处理长录音,请考虑分块设置。
转录模型的选择影响速度。Whisper Large 更准确但比 Whisper Base 慢。如果速度比完美准确率更重要,请考虑通过 API 设置使用较小的模型。
### 超过 25MB 的文件在 OpenAI 上失败
OpenAI 的 Whisper API 有 25MB 文件大小限制。对于更大的文件,请在环境配置中启用 [分块](features.md#audio-chunking)。了解 [分块策略](faq.md#whats-the-difference-between-chunking-by-size-vs-duration)
```
ENABLE_CHUNKING=true
CHUNK_LIMIT=20MB # or use duration: CHUNK_LIMIT=1400s
CHUNK_OVERLAP_SECONDS=3
```
您可以按文件大小MB或时长指定分块限制。对于有特定时长限制的模型如 Azure 的 1500 秒上限),请使用基于时长的分块。系统会自动拆分录音并重新组装转录。
### 长录音 ASR 超时
长录音(超过 30 分钟)在 ASR 处理期间可能超时。在管理设置 > 系统设置 > "ASR Timeout Seconds" 中增加超时时间。对于 2 小时的录音,请至少设置为 7200 秒2 小时)。非常长的录音(如 3 小时以上)可能需要更长的超时时间,具体取决于您用于转录的 GPU如果是本地转录
### Web 界面响应迟缓
浏览器在处理非常大的转录时性能会下降。超过 2 小时的录音可能生成大量文本,某些浏览器可能难以流畅显示。说话人标记转录的气泡视图尤其消耗资源。
如果界面随时间推移逐渐变慢请清除浏览器缓存。Speakr 会在本地缓存数据以提高性能,但此缓存可能会损坏。在 Chrome 或 Firefox 中,使用 Ctrl+Shift+R 硬刷新以重新加载最新资源。
## 特定功能问题
### 说话人识别不起作用
[说话人分离](features.md#speaker-diarization) 需要 [ASR 端点](getting-started.md#option-b-custom-asr-endpoint-configuration),而非标准 Whisper API。在 [系统设置](admin-guide/system-settings.md) 中配置说话人设置。验证您已在环境配置文件中正确配置 ASR 设置。ASR_BASE_URL 应指向支持说话人分离的有效 ASR 服务。
即使启用了 ASR您也必须在上传或重新处理录音时明确请求说话人分离。Speakr 默认应执行此操作,但用户设置可能会覆盖此行为。检查说话人数量设置 — 如果将最小和最大说话人数都设置为 1说话人分离实际上已禁用。对于大多数录音使用 2-6 个说话人的合理范围。
转录后说话人显示为通用标签SPEAKER_01 等)。您必须手动 [识别说话人](user-guide/transcripts.md#speaker-identification),方法是点击标签并分配名称。在账户设置中管理您的 [说话人库](user-guide/settings.md#speakers-management-tab)。
### WhisperX 显示 UNKNOWN_SPEAKER
如果 WhisperX 仅显示 "UNKNOWN_SPEAKER" 而不是编号说话人SPEAKER_00、SPEAKER_01 等),请检查以下常见问题:
1. **错误的 ASR_ENGINE**:您必须在 ASR 容器的 Docker 环境中使用 `ASR_ENGINE=whisperx``faster_whisper` 引擎不支持说话人分离,尽管它可以转录音频。
2. **缺少或无效的 HF_TOKEN**ASR 容器需要有效的 HuggingFace 令牌来下载说话人分离模型。确保您的 ASR 容器配置中设置了 `HF_TOKEN` 环境变量。
3. **未启用 ASR_DIARIZE**:虽然当 `USE_ASR_ENDPOINT=true` 时应自动启用,但如果未检测到说话人,请在 Speakr .env 文件中显式设置 `ASR_DIARIZE=true`
4. **Docker 网络问题**:如果在同一 docker-compose 中使用 Speakr 和 ASR webservice 容器,容器必须通过服务名称通信(如 `http://whisper-asr:9000`),而非 localhost 或外部 IP。
检查 ASR 容器日志中的 pyannote/VAD 消息,以确认说话人分离模型已正确加载。
### Mac 上的 ASR 服务显示 GPU 错误
如果在 macOS 上运行 ASR webservice 并遇到 GPU 相关错误或 "no matching manifest" 错误:
- **使用 CPU 镜像**:将 `onerahmet/openai-whisper-asr-webservice:latest-gpu` 替换为 `onerahmet/openai-whisper-asr-webservice:latest`
- **移除 GPU 配置**:从 docker-compose.yml 中删除包含 GPU 设备预留的整个 `deploy` 部分
- **预期处理速度较慢**:基于 CPU 的转录可以工作,但比 GPU 加速慢得多
这是 macOS 上 Docker 的限制 — GPU 直通不受支持,因为 Docker 运行在 Linux VM 中。请参阅 [常见问题](faq.md#can-i-use-the-asr-webservice-for-speaker-diarization-on-mac) 了解完整的 Mac 配置。
### 分享链接不起作用
[分享](user-guide/sharing.md) 功能要求您的 Speakr 实例可通过互联网使用 HTTPS 访问。请参阅 [分享要求](user-guide/sharing.md#requirements-for-sharing) 和 [安全注意事项](user-guide/sharing.md#security-and-privacy-considerations)。本地安装或非 SSL 设置无法生成有效的分享链接。分享按钮将禁用或显示错误,说明相关要求。
如果您的实例满足要求但分享仍然失败,请检查环境配置中配置的 URL 是否与实际情况匹配。URL 不匹配会导致分享链接指向错误位置。URL 必须与外部用户访问您实例时使用的地址完全一致。
### 询问模式无结果
[语义搜索](user-guide/inquire-mode.md) 需要正确安装和初始化嵌入模型。在管理设置中查看 [向量存储选项卡](admin-guide/vector-store.md),并查看 [向量存储故障排除](admin-guide/vector-store.md#troubleshooting-common-issues) — 应显示 "Available" 状态。如果不是sentence-transformers 库可能缺失或加载失败。
所有录音在可搜索之前都需要进行处理。向量存储选项卡显示已处理与待处理的录音数量。如果自动处理停滞,请使用处理按钮手动触发嵌入生成。
查询表述方式非常重要。[询问模式](user-guide/inquire-mode.md) 理解上下文和含义,而不仅仅是关键词。在用户指南中了解 [有效的搜索策略](user-guide/inquire-mode.md#asking-effective-questions)。提出完整的问题,而不是输入孤立的单词。"我们关于预算做了什么决定?" 比仅输入 "预算 决定" 效果更好。
## 其他注意事项
### 录音免责声明(法律合规)
在许多司法管辖区,您必须告知参与者他们正在被录音。在 [系统设置](admin-guide/system-settings.md#recording-disclaimer) 中启用录音免责声明。查看 [关于录音合规的常见问题](faq.md#do-i-need-to-inform-people-theyre-being-recorded)。设置在任何录音开始前显示的自定义文本,例如关于同意要求的法律通知。此功能在具有严格录音法律的地区(如澳大利亚或加利福尼亚州)尤为重要。
### 离线部署
Speakr 可以完全离线运行,因为所有依赖项都内置在 Docker 镜像中。对于离线部署,使用 Ollama 的本地模型进行 [文本生成](features.md#automatic-summarization),并确保您的 ASR 端点在本地托管。正确配置后,系统无需互联网访问即可工作。
### 非 Docker 安装
虽然 Docker 是唯一官方支持的安装方式,但您可以尝试使用 npm 和 Python 进行手动安装。您需要自行处理依赖项、环境设置和配置。此方式不推荐用于常规使用,您需要独立排查问题。
## 获取帮助
### 检查日志
Docker 日志包含宝贵的调试信息。使用 `docker-compose logs -f app` 查看实时日志。查找与问题发生时间对应的 ERROR 或 WARNING 消息。Python 追溯信息表明可能是代码级问题,可能需要寻求支持。
对于 ASR 问题,同时检查 ASR 容器日志:`docker-compose logs -f whisper-asr-webservice`
### 系统信息
请求帮助时,请提供账户设置中 About 选项卡的系统配置信息。包括 Speakr 版本、配置的 AI 模型、转录服务类型以及任何错误消息。这些上下文信息有助于他人了解您的具体设置。
### 社区支持
GitHub 仓库的 issue 追踪器是报告错误或请求功能的最佳资源。请先搜索现有 issue — 可能有人已经遇到并解决了您的问题。创建新 issue 时,请包含重现问题的具体步骤。
---
下一步:[常见问题](faq.md) →