Files
LangBot/docs/zh/deploy/langbot/manual.mdx
43c0ba7e44 feat(speech): implement TTS and STT model layer and pipeline stages (LANG-251) (#2839)
* feat(speech): implement TTS and STT model layer and pipeline stages (LANG-251)

Co-authored-by: multica-agent <[email protected]>

* fix(speech): fix invoke signatures and provider lookup in speech stages and model testing

Co-authored-by: multica-agent <[email protected]>

* feat(speech): rename STT to ASR, improve TTS voice parameter handling and failure recovery

Co-authored-by: multica-agent <[email protected]>

* fix(persistence, lint, web): fix migration revision id, legacy table check, ruff duplicates, and frontend types

Co-authored-by: multica-agent <[email protected]>

* fix(speech): restore migration and CI contracts

Co-authored-by: multica-agent <[email protected]>

* fix(pipeline,ui): fix select dropdown width gap, add speech to guided tour, and configure show_if for speech options

Co-authored-by: multica-agent <[email protected]>

* feat(speech,openclaw): support silk audio transcoding, graceful fallback, duration estimation, and multi-lang deploy docs

Co-authored-by: multica-agent <[email protected]>

* fix(audio): enhance ffmpeg executable detection via venv and imageio_ffmpeg

Co-authored-by: multica-agent <[email protected]>

* fix(provider): improve LiteLLM error classification and avoid falling back to Unknown error

Co-authored-by: multica-agent <[email protected]>

* fix(openclaw): serialize voice_item attributes and improve transcoding fallback logging

Co-authored-by: multica-agent <[email protected]>

* fix(audio,openclaw): handle transient TMPDIR deletion and add size attribute to voice_item

Co-authored-by: multica-agent <[email protected]>

* fix(openclaw): download and convert inbound voice messages and align voice sending protocol

Co-authored-by: multica-agent <[email protected]>

* fix(models): redesign add model popover tabs layout and include ASR/TTS models in provider counts and scanning

Co-authored-by: multica-agent <[email protected]>

* fix(audio): decrypt and transcode wecombot voice to mp3, align openclaw weixin voice delivery

Co-authored-by: multica-agent <[email protected]>

* fix(wecombot): transcode outbound voice to silk and support voice_delivery mode

Co-authored-by: multica-agent <[email protected]>

* fix(discord,web): map audio attachments to voice for ASR, prefer base64 voice in webui

Co-authored-by: multica-agent <[email protected]>

* fix(telegram): deliver voice replies in streaming and non-streaming modes with quote origin

Co-authored-by: multica-agent <[email protected]>

* feat(dingtalk): route voice messages through pipeline ASR and send TTS replies as voice

Inbound DingTalk audio now arrives as a Voice component with its duration,
so the pipeline speech recognition switch decides how it is transcribed.
DingTalk's own recognition text is used only when the audio cannot be
downloaded.

Outbound Voice components are transcoded to ogg/opus, uploaded as voice
media and sent as native sampleAudio messages in both the omni and legacy
adapters. Audio over 60 seconds, or audio that cannot be transcoded or is
rejected as a voice message, is sent as a file instead. Voice parts no longer
leak into the reply text as "[Voice]".

Also estimate ogg durations from the granule position and ignore non-audio
MIME hints when extracting voice bytes, so ffmpeg can probe the input.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-authored-by: multica-agent <[email protected]>

* fix(ci): include speech model counts in provider responses and fix lint/image build

- Copy every count returned by get_provider_model_counts into the provider
  payload instead of indexing asr_count/tts_count, and update the test fakes
  to return the speech model counts.
- Install libc6-dev in the runtime image so the pilk audio extra can compile.
- Apply ruff and prettier formatting required by the lint jobs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-authored-by: multica-agent <[email protected]>

* test(e2e): expect the speech step in the pipeline setup guide

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-authored-by: multica-agent <[email protected]>

---------

Co-authored-by: multica-agent <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-11-02 23:51:22 +08:00

78 lines
2.4 KiB
Plaintext
Raw Permalink 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.
---
title: "手动部署"
description: "从源码手动部署 LangBot:在 Linux、Windows、macOS 上搭建开源 AI 机器人平台的详细步骤。"
---
<Warning>
Unix-like 系统上请优先考虑使用 Docker 部署。
</Warning>
## 安装主程序
1. 前往[Release](https://github.com/langbot-app/LangBot/releases)页面下载最新版本的压缩包(推荐)`langbot-xxx-all.zip`(请勿下载 Source Code,因为其中不包含 WebUI)。解压,在解压目录打开命令行(终端)
![下载Release](/images/zh/deploy/langbot/manual/dl_release.png)
2. 安装依赖
我们使用 [uv](https://docs.astral.sh/uv/) 管理依赖。
```bash
pip install uv
uv sync
```
默认安装不包含可选的 SeekDB 支持。如果需要使用 SeekDB 向量数据库或内置嵌入模型,请改用:
```bash
uv sync --extra seekdb
```
SeekDB 嵌入式模式的平台支持取决于 `pylibseekdb` wheel;Apple Silicon 当前要求 macOS 15 或更高版本。其他功能仍可使用默认的 `uv sync` 安装。
### 可选的语音转码支持(SILK / 微信原生语音)
如果需要在微信等平台发送原生语音条(SILK 编码)或进行高级音频格式转码,需要系统安装 `ffmpeg` 并安装 `audio` 扩展依赖:
- **系统依赖**:`ffmpeg`(macOS 可用 `brew install ffmpeg`,Ubuntu/Debian 可用 `sudo apt-get install -y ffmpeg`,Windows 可用 `winget install Gyan.FFmpeg`)
- **Python 扩展**:
```bash
uv sync --extra audio
# 或同时启用 seekdb 与 audio
uv sync --extra seekdb --extra audio
```
若未安装转码依赖,系统在需要转码为微信原生语音条时会自动进行**优雅降级**,将语音以音频文件的形式发送,确保用户仍能正常点击播放。
或者使用清华源
```bash
pip install uv -i https://pypi.tuna.tsinghua.edu.cn/simple
uv sync
```
3. 运行一次主程序,生成配置文件
```bash
uv run main.py
```
提示如下信息
```
_ ___ _
| | __ _ _ _ __ _| _ ) ___| |_
| |__/ _` | ' \/ _` | _ \/ _ \ _|
|____\__,_|_||_\__, |___/\___/\__|
|___/
⭐️开源地址: https://github.com/langbot-app/LangBot
📖文档地址: https://langbot.app/docs
以下文件不存在,已自动生成,请按需修改配置文件后重启:
- data/config.yaml
...
```
接下来可以使用 Ctrl+C 退出程序,继续查看[配置机器人](/zh/usage/platforms/readme)页。