更新 README 为 Win11 本地 TTS 说明,清理多余文件
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
# 企业微信 → 小爱同学 TTS 桥接服务
|
# 企业微信 → Win11 本地 TTS 播报服务
|
||||||
|
|
||||||
通过企业微信长连接(WebSocket)接收智能机器人消息,调用小爱音箱 TTS 朗读出来。
|
通过企业微信长连接(WebSocket)接收智能机器人消息,调用 Windows 11 本地 .NET System.Speech 语音引擎朗读出来。
|
||||||
|
|
||||||
**你发什么,小爱就说什么。**
|
**你发什么,它就说什么。**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -11,12 +11,12 @@
|
|||||||
```
|
```
|
||||||
你在企业微信给机器人发消息
|
你在企业微信给机器人发消息
|
||||||
→ 企微服务器通过 WebSocket 推送消息给本服务
|
→ 企微服务器通过 WebSocket 推送消息给本服务
|
||||||
→ 调用小爱音箱 TTS API 朗读
|
→ 调用 Windows 11 .NET System.Speech 语音引擎朗读
|
||||||
→ 小爱音箱发声
|
→ 扬声器发声
|
||||||
→ 回复"已播报"到企微
|
→ 回复"已播报"到企微
|
||||||
```
|
```
|
||||||
|
|
||||||
全程**无需公网 IP、域名、回调 URL**,通过长连接主动连接企微,内网直接可用。
|
全程**无需公网 IP、域名、回调 URL**,通过长连接主动连接企微,内网直接用。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -26,13 +26,9 @@
|
|||||||
wework_xiaoai_bot/
|
wework_xiaoai_bot/
|
||||||
├── app/services/
|
├── app/services/
|
||||||
│ ├── ws_client.py # WebSocket 客户端(核心)
|
│ ├── ws_client.py # WebSocket 客户端(核心)
|
||||||
│ └── tts.py # 小爱 TTS 服务
|
│ └── tts.py # Windows 11 本地 TTS 服务
|
||||||
├── config.py # 配置加载(从 .env 读取)
|
├── config.py # 配置加载(从 .env 读取)
|
||||||
├── run.py # 程序入口
|
├── run.py # 程序入口
|
||||||
├── save_token.py # 小米 Token 续期工具
|
|
||||||
├── Dockerfile # Docker 镜像
|
|
||||||
├── docker-compose.yml # Docker 编排
|
|
||||||
├── deploy.sh # NAS 一键部署脚本
|
|
||||||
├── requirements.txt # Python 依赖
|
├── requirements.txt # Python 依赖
|
||||||
├── tests/ # 测试
|
├── tests/ # 测试
|
||||||
├── .env.example # 环境变量模板
|
├── .env.example # 环境变量模板
|
||||||
@@ -45,25 +41,27 @@ wework_xiaoai_bot/
|
|||||||
|
|
||||||
### 1. 企业微信智能机器人
|
### 1. 企业微信智能机器人
|
||||||
|
|
||||||
在企微管理后台创建智能机器人,开启「API 模式」→「长连接」:
|
在企业微信管理后台创建智能机器人,开启「API 模式」→「长连接」:
|
||||||
|
|
||||||
1. 登录 [企业微信管理后台](https://work.weixin.qq.com)
|
1. 登录 [企业微信管理后台](https://work.weixin.qq.com)
|
||||||
2. 进入「应用管理」→「智能机器人」
|
2. 进入「应用管理」→「智能机器人」
|
||||||
3. 创建机器人,开启 API 模式,选择「长连接」
|
3. 创建机器人,开启 API 模式,选择「长连接」
|
||||||
4. 获取 **Bot ID** 和 **Secret**
|
4. 获取 **Bot ID** 和 **Secret**
|
||||||
|
|
||||||
### 2. 小爱音箱
|
### 2. Windows 11 系统
|
||||||
|
|
||||||
需要一个已配网的小爱音箱,且已登录小米账号。
|
使用 Windows 11 自带的 .NET System.Speech 语音引擎,无需额外安装语音包。
|
||||||
|
|
||||||
|
> 如需更好的中文语音,可在 Win11 设置 → 时间和语言 → 语音 → 添加语音包中安装「Microsoft Xiaoxiao」等自然语音。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 快速开始(本地/Docker)
|
## 快速开始
|
||||||
|
|
||||||
### 1. 配置
|
### 1. 配置
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp .env.example .env
|
copy .env.example .env
|
||||||
```
|
```
|
||||||
|
|
||||||
编辑 `.env`,填入你的企微 Bot ID 和 Secret:
|
编辑 `.env`,填入你的企微 Bot ID 和 Secret:
|
||||||
@@ -73,97 +71,36 @@ WECOM_BOT_ID=你的BotID
|
|||||||
WECOM_BOT_SECRET=你的Secret
|
WECOM_BOT_SECRET=你的Secret
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. 生成小米 Token
|
### 2. 安装依赖
|
||||||
|
|
||||||
**在 Windows/Mac(有图形界面的机器)上运行一次:**
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
python save_token.py
|
|
||||||
```
|
```
|
||||||
|
|
||||||
按提示输入小米密码,脚本自动生成 `.mi.token` 文件。
|
|
||||||
> Token 有效期通常 **1-3 个月**。过期后重新运行此脚本即可。
|
|
||||||
|
|
||||||
### 3. 启动
|
### 3. 启动
|
||||||
|
|
||||||
#### Docker(推荐)
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
管理命令:
|
|
||||||
```bash
|
|
||||||
docker compose logs -f # 查看实时日志
|
|
||||||
docker compose restart # 重启
|
|
||||||
docker compose down # 停止
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 直接运行
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pip install -r requirements.txt
|
|
||||||
python run.py
|
python run.py
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## NAS 部署(Docker)
|
|
||||||
|
|
||||||
### 1. 准备工作
|
|
||||||
在 Windows 上完成「快速开始」的第 1、2 步,确保 `.env` 和 `.mi.token` 都在项目目录下。
|
|
||||||
|
|
||||||
### 2. 传到 NAS
|
|
||||||
|
|
||||||
```bash
|
|
||||||
scp -r wework_xiaoai_bot/ user@nas-ip:/opt/wework_xiaoai_bot/
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. 在 NAS 上启动
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ssh user@nas-ip
|
|
||||||
cd /opt/wework_xiaoai_bot
|
|
||||||
docker compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
也可以用 `deploy.sh` 一键部署:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
chmod +x deploy.sh
|
|
||||||
./deploy.sh <nas-ip> <用户名>
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Token 续期
|
|
||||||
|
|
||||||
当 Token 过期(小爱播报失败,日志出现 `Login failed`):
|
|
||||||
|
|
||||||
1. 在 Windows 上运行 `python save_token.py`
|
|
||||||
2. 将生成的 `.mi.token` 传到 NAS 项目目录
|
|
||||||
3. `docker compose restart`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 配置说明
|
## 配置说明
|
||||||
|
|
||||||
| 环境变量 | 说明 | 必填 |
|
| 环境变量 | 说明 | 必填 |
|
||||||
|---------|------|------|
|
|---------|------|------|
|
||||||
| `WECOM_BOT_ID` | 企微智能机器人 Bot ID | 是 |
|
| `WECOM_BOT_ID` | 企微智能机器人 Bot ID | 是 |
|
||||||
| `WECOM_BOT_SECRET` | 企微智能机器人 Secret | 是 |
|
| `WECOM_BOT_SECRET` | 企微智能机器人 Secret | 是 |
|
||||||
| `XIAOMI_USER_ID` | 小米账号 ID | 否 |
|
| `TTS_VOICE_NAME` | 指定语音名称,留空自动选中文语音 | 否 |
|
||||||
| `XIAOMI_TOKEN_PATH` | 小米 Token 文件路径 | 否(默认 `.mi.token`) |
|
| `TTS_RATE` | 语速 -10(最慢)到 10(最快),默认 0 | 否 |
|
||||||
| `XIAOMI_SPEAKER_DID` | 小爱音箱设备 ID | 否 |
|
| `TTS_ENABLED` | 是否启用 TTS,默认 true | 否 |
|
||||||
| `TTS_ENABLED` | 是否启用 TTS | 否(默认 true) |
|
| `TTS_MAX_TEXT_LENGTH` | 最大播报长度,默认 500 | 否 |
|
||||||
| `TTS_MAX_TEXT_LENGTH` | 最大播报长度 | 否(默认 500) |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 日志示例
|
## 日志示例
|
||||||
|
|
||||||
正常运行时:
|
正常运行:
|
||||||
|
|
||||||
```
|
```
|
||||||
[INFO] Connecting to wss://openws.work.weixin.qq.com ...
|
[INFO] Connecting to wss://openws.work.weixin.qq.com ...
|
||||||
@@ -189,7 +126,7 @@ chmod +x deploy.sh
|
|||||||
- **消息加解密**:长连接模式免加解密,ws 协议层自带加密
|
- **消息加解密**:长连接模式免加解密,ws 协议层自带加密
|
||||||
- **心跳保活**:WebSocket 层 + 应用层双重心跳,每 30 秒
|
- **心跳保活**:WebSocket 层 + 应用层双重心跳,每 30 秒
|
||||||
- **断线重连**:自动检测断线,5 秒后重连
|
- **断线重连**:自动检测断线,5 秒后重连
|
||||||
- **Token 保护**:passToken 自动备份,防止 serviceToken 过期时丢失
|
- **本地 TTS**:调用 .NET System.Speech 直接驱动声卡,不生成临时文件
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -198,7 +135,9 @@ chmod +x deploy.sh
|
|||||||
```
|
```
|
||||||
aiohttp>=3.9.0
|
aiohttp>=3.9.0
|
||||||
python-dotenv>=1.0.0
|
python-dotenv>=1.0.0
|
||||||
miservice_fork>=2.9.0
|
websockets>=13.0
|
||||||
|
pytest>=8.0.0
|
||||||
|
pytest-asyncio>=0.23.0
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
Reference in New Issue
Block a user