Files

3.3 KiB
Raw Permalink Blame History

企业微信 → Win11 本地 TTS 播报服务

通过企业微信长连接(WebSocket)接收智能机器人消息,调用 Windows 11 本地 .NET System.Speech 语音引擎朗读出来。

你发什么,它就说什么。


工作原理

你在企业微信给机器人发消息
    → 企微服务器通过 WebSocket 推送消息给本服务
        → 调用 Windows 11 .NET System.Speech 语音引擎朗读
            → 扬声器发声
                → 回复"已播报"到企微

全程无需公网 IP、域名、回调 URL,通过长连接主动连接企微,内网直接用。


项目结构

wework_xiaoai_bot/
├── app/services/
│   ├── ws_client.py     # WebSocket 客户端(核心)
│   └── tts.py           # Windows 11 本地 TTS 服务
├── config.py            # 配置加载(从 .env 读取)
├── run.py               # 程序入口
├── requirements.txt     # Python 依赖
├── tests/               # 测试
├── .env.example         # 环境变量模板
└── README.md

前置条件

1. 企业微信智能机器人

在企业微信管理后台创建智能机器人,开启「API 模式」→「长连接」:

  1. 登录 企业微信管理后台
  2. 进入「应用管理」→「智能机器人」
  3. 创建机器人,开启 API 模式,选择「长连接」
  4. 获取 Bot IDSecret

2. Windows 11 系统

使用 Windows 11 自带的 .NET System.Speech 语音引擎,无需额外安装语音包。

如需更好的中文语音,可在 Win11 设置 → 时间和语言 → 语音 → 添加语音包中安装「Microsoft Xiaoxiao」等自然语音。


快速开始

1. 配置

copy .env.example .env

编辑 .env,填入你的企微 Bot ID 和 Secret

WECOM_BOT_ID=你的BotID
WECOM_BOT_SECRET=你的Secret

2. 安装依赖

pip install -r requirements.txt

3. 启动

python run.py

配置说明

环境变量 说明 必填
WECOM_BOT_ID 企微智能机器人 Bot ID
WECOM_BOT_SECRET 企微智能机器人 Secret
TTS_VOICE_NAME 指定语音名称,留空自动选中文语音
TTS_RATE 语速 -10(最慢)到 10(最快),默认 0
TTS_ENABLED 是否启用 TTS,默认 true
TTS_MAX_TEXT_LENGTH 最大播报长度,默认 500

日志示例

正常运行:

[INFO] Connecting to wss://openws.work.weixin.qq.com ...
[INFO] WebSocket connected
[INFO] Subscribed successfully
[INFO] Received: 你好世界
[INFO] TTS success

故障时自动重连:

[ERROR] Connection lost, reconnecting in 5s...
[INFO] WebSocket connected
[INFO] Subscribed successfully

技术要点

  • 长连接WebSocket wss://openws.work.weixin.qq.com,无需公网 IP
  • 消息加解密:长连接模式免加解密,ws 协议层自带加密
  • 心跳保活WebSocket 层 + 应用层双重心跳,每 30 秒
  • 断线重连:自动检测断线,5 秒后重连
  • 本地 TTS:调用 .NET System.Speech 直接驱动声卡,不生成临时文件

依赖

aiohttp>=3.9.0
python-dotenv>=1.0.0
websockets>=13.0
pytest>=8.0.0
pytest-asyncio>=0.23.0

License

MIT