|
|
@@ -0,0 +1,103 @@
|
|
|
+# ASR Agent 部署步骤
|
|
|
+
|
|
|
+## SSH 连接
|
|
|
+```bash
|
|
|
+sshpass -p '123456' ssh -o StrictHostKeyChecking=no ubuntu@200.200.18.11
|
|
|
+```
|
|
|
+
|
|
|
+## 构建 & 部署
|
|
|
+
|
|
|
+```bash
|
|
|
+# 1. 本地编译校验
|
|
|
+python3 -m py_compile asr_agent/worker.py
|
|
|
+python3 -m py_compile asr_agent/dispatcher.py
|
|
|
+
|
|
|
+# 2. 上传文件到服务器
|
|
|
+sshpass -p '123456' scp asr_agent/worker.py ubuntu@200.200.18.11:/tmp/asr_build/worker.py
|
|
|
+sshpass -p '123456' scp asr_agent/dispatcher.py ubuntu@200.200.18.11:/tmp/asr_build/dispatcher.py
|
|
|
+sshpass -p '123456' scp -r asr_agent/whisper_asr ubuntu@200.200.18.11:/tmp/asr_build/
|
|
|
+
|
|
|
+# 3. 服务器构建镜像
|
|
|
+sshpass -p '123456' ssh ubuntu@200.200.18.11 '
|
|
|
+cd /tmp/asr_build
|
|
|
+docker build -t asr-dispatcher:v1 .
|
|
|
+'
|
|
|
+
|
|
|
+# 4. 重启容器
|
|
|
+sshpass -p '123456' ssh ubuntu@200.200.18.11 '
|
|
|
+docker stop asr-dispatcher 2>/dev/null
|
|
|
+docker rm asr-dispatcher 2>/dev/null
|
|
|
+docker run -d --name asr-dispatcher --network host --restart unless-stopped \
|
|
|
+ -e ASR_MODEL_PATH=/data/models/Qwen3-ASR \
|
|
|
+ -e MIMO_KEY=tp-cilplawdowf6ljqlb5lrldr0c39pe55ip1riir6zqvc3z9te \
|
|
|
+ -e LIVEKIT_URL=ws://localhost:7880 \
|
|
|
+ -e PUBLIC_LIVEKIT_URL=ws://36.152.142.37:10003 \
|
|
|
+ -e LLM_PROVIDER=mimo \
|
|
|
+ -e ASR_PROVIDER=mimo \
|
|
|
+ -v /data/models:/data/models:ro \
|
|
|
+ asr-dispatcher:v1
|
|
|
+'
|
|
|
+
|
|
|
+# 5. 查看日志
|
|
|
+sshpass -p '123456' ssh ubuntu@200.200.18.11 'docker logs --tail 30 asr-dispatcher'
|
|
|
+
|
|
|
+# 6. 测试 API
|
|
|
+sshpass -p '123456' ssh ubuntu@200.200.18.11 '
|
|
|
+curl -s http://localhost:9100/health
|
|
|
+curl -s -X POST http://localhost:10005/connect -H "Content-Type: application/json" -d "{\"identity\":\"test\"}"
|
|
|
+'
|
|
|
+```
|
|
|
+
|
|
|
+## 环境变量
|
|
|
+
|
|
|
+| 变量 | 默认值 | 说明 |
|
|
|
+|------|--------|------|
|
|
|
+| `LIVEKIT_URL` | `ws://localhost:7880` | Worker 连接 LiveKit 地址 |
|
|
|
+| `PUBLIC_LIVEKIT_URL` | 同 LIVEKIT_URL | 返回给 App 的外网地址 |
|
|
|
+| `LLM_PROVIDER` | `vllm` | `vllm` / `mimo` |
|
|
|
+| `ASR_PROVIDER` | `qwen` | `qwen` / `mimo` |
|
|
|
+| `LLM_MODEL` | `qwen3.6-35b-awq` | vLLM 模式下的模型名 |
|
|
|
+| `MIMO_KEY` | — | Mimo API Key |
|
|
|
+| `MIMO_API_BASE` | `https://token-plan-cn.xiaomimimo.com/v1` | Mimo API 地址 |
|
|
|
+| `VAD_MODEL_PATH` | `whisper_asr/silero_vad.onnx` | Silero VAD 模型路径 |
|
|
|
+
|
|
|
+## 端口
|
|
|
+
|
|
|
+| 端口 | 用途 |
|
|
|
+|------|------|
|
|
|
+| 7880 | LiveKit 核心服务(内网) |
|
|
|
+| 9100 | Dispatcher HTTP(内网) |
|
|
|
+| 10003 | LiveKit nginx 代理(外网 `36.152.142.37`) |
|
|
|
+| 10005 | Dispatcher nginx 代理(外网) |
|
|
|
+
|
|
|
+## App 调用流程
|
|
|
+
|
|
|
+```
|
|
|
+1. App → POST http://36.152.142.37:10005/connect → {room, url, token}
|
|
|
+2. App → WebSocket ws://36.152.142.37:10003 (LiveKit) with token
|
|
|
+3. Dispatcher 自动启动 Worker 加入同一房间
|
|
|
+4. App 说话 → VAD → ASR → LLM → TTS 播放
|
|
|
+5. App 断开 → Worker 退出 → 房间释放
|
|
|
+```
|
|
|
+
|
|
|
+## Flutter App 编译
|
|
|
+
|
|
|
+```bash
|
|
|
+cd flutter_asr_client
|
|
|
+flutter build apk --debug
|
|
|
+# 产物: build/app/outputs/flutter-apk/app-debug.apk
|
|
|
+```
|
|
|
+
|
|
|
+## nginx 配置
|
|
|
+
|
|
|
+Dispatcher 代理配置(端口 10005):
|
|
|
+```
|
|
|
+# /data/nginx/config/http/dispatcher-proxy.conf
|
|
|
+server {
|
|
|
+ listen 10005;
|
|
|
+ location / {
|
|
|
+ proxy_pass http://127.0.0.1:9100;
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+重载: `docker exec nginx nginx -s reload`
|