Skip to content

Commit c8dee43

Browse files
authored
Merge branch 'huangjunsen0406:main' into main
2 parents 3287af1 + 56c8966 commit c8dee43

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+3688
-7134
lines changed

README.en.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@ We welcome issue reports and code contributions. Please ensure you follow these
284284
[Rain120](https://github.com/Rain120)
285285
[kejily](https://github.com/kejily)
286286
[Radio bilibili Jun](https://space.bilibili.com/119751)
287+
[Cyber Intelligence](https://shop115087494.m.taobao.com/?refer=https%3A%2F%2Fm.tb.cn%2F&ut_sk=1.WMelxbgDQWkDAJ1Rq9Pn7DCD_21380790_1757337352472.Copy.shop&suid=0E25E948-651D-46E0-8E89-5C8CB03B4F56&shop_navi=shopindex&sourceType=shop&shareUniqueId=33038752403&un=d22c5ceda82844ab8bd7bab98ffeb263&share_crt_v=1&un_site=0&spm=a2159r.13376460.0.0&sp_tk=dkRKUjRKUWo2ZHY%3D&bc_fl_src=share-1041250486811064-2-1&cpp=1&shareurl=true&short_name=h.SaBKVHytsCKIPNS&bxsign=scdGtSe264e_qkFQBh0rXCkF-Mrb_s6t35EnpVBBU5dsrd-J24c-_rn_PhJiXRk0hg2hjGoAm0L7j2UQg27OIH_6gZkbhKDyLziD2cy4pDf8sC3KmqrF55TXP3USZaPTw_-&app=weixin)
287288

288289
### Sponsorship Support
289290

README.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,14 @@ py-xiaozhi 是一个使用 Python 实现的小智语音客户端,旨在通过
4040
## 功能特点
4141

4242
### 🎯 核心AI功能
43+
4344
- **AI语音交互**:支持语音输入与识别,实现智能人机交互,提供自然流畅的对话体验
4445
- **视觉多模态**:支持图像识别和处理,提供多模态交互能力,理解图像内容
4546
- **智能唤醒**:支持多种唤醒词激活交互,免去手动操作的烦恼(可配置开启)
4647
- **自动对话模式**:实现连续对话体验,提升用户交互流畅度
4748

4849
### 🔧 MCP工具生态系统
50+
4951
- **系统控制工具**:系统状态监控、应用程序管理、音量控制、设备管理等
5052
- **日程管理工具**:全功能日程管理,支持创建、查询、更新、删除事件,智能分类和提醒
5153
- **定时任务工具**:倒计时器功能,支持延时执行MCP工具,多任务并行管理
@@ -58,12 +60,14 @@ py-xiaozhi 是一个使用 Python 实现的小智语音客户端,旨在通过
5860
- **摄像头工具**:图像捕获和AI分析,支持拍照识别和智能问答
5961

6062
### 🏠 IoT设备集成
63+
6164
- **设备管理架构**:基于Thing模式的统一设备管理,支持属性和方法的异步调用
6265
- **智能家居控制**:支持灯光、音量、温度传感器等设备控制
6366
- **状态同步机制**:实时状态监控,支持增量更新和并发状态获取
6467
- **可扩展设计**:模块化设备驱动,易于添加新设备类型
6568

6669
### 🎵 高级音频处理
70+
6771
- **多级音频处理**:支持Opus编解码、实时重采样
6872
- **语音活动检测**:VAD检测器实现智能打断,支持语音活动实时监控
6973
- **唤醒词检测**:基于Sherpa-ONNX的离线语音识别,支持多唤醒词和拼音匹配
@@ -72,24 +76,28 @@ py-xiaozhi 是一个使用 Python 实现的小智语音客户端,旨在通过
7276
- **系统音频录制**:支持系统音频录制,实现音频环回处理
7377

7478
### 🖥️ 用户界面
79+
7580
- **图形化界面**:基于PyQt5的现代GUI,支持小智表情与文本显示,增强视觉体验
7681
- **命令行模式**:支持CLI运行,适用于嵌入式设备或无GUI环境
7782
- **系统托盘**:后台运行支持,集成系统托盘功能
7883
- **全局快捷键**:支持全局快捷键操作,提升使用便捷性
7984
- **设置界面**:完整的设置管理界面,支持配置自定义
8085

8186
### 🔒 安全与稳定
87+
8288
- **加密音频传输**:支持WSS协议,保障音频数据的安全性,防止信息泄露
8389
- **设备激活系统**:支持v1/v2双协议激活,自动处理验证码和设备指纹
8490
- **错误恢复**:完整的错误处理和恢复机制,支持断线重连
8591

8692
### 🌐 跨平台支持
93+
8794
- **系统兼容**:兼容Windows 10+、macOS 10.15+和Linux系统
8895
- **协议支持**:支持WebSocket和MQTT双协议通信
8996
- **多环境部署**:支持GUI和CLI双模式,适应不同部署环境
9097
- **平台优化**:针对不同平台的音频和系统控制优化
9198

9299
### 🔧 开发友好
100+
93101
- **模块化架构**:清晰的代码结构和职责分离,便于二次开发
94102
- **异步优先**:基于asyncio的事件驱动架构,高性能并发处理
95103
- **配置管理**:分层配置系统,支持点记法访问和动态更新
@@ -99,18 +107,21 @@ py-xiaozhi 是一个使用 Python 实现的小智语音客户端,旨在通过
99107
## 系统要求
100108

101109
### 基础要求
110+
102111
- **Python版本**:3.9 - 3.12
103112
- **操作系统**:Windows 10+、macOS 10.15+、Linux
104113
- **音频设备**:麦克风和扬声器设备
105114
- **网络连接**:稳定的互联网连接(用于AI服务和在线功能)
106115

107116
### 推荐配置
117+
108118
- **内存**:至少4GB RAM(推荐8GB+)
109119
- **处理器**:支持AVX指令集的现代CPU
110120
- **存储**:至少2GB可用磁盘空间(用于模型文件和缓存)
111121
- **音频**:支持16kHz采样率的音频设备
112122

113123
### 可选功能要求
124+
114125
- **语音唤醒**:需要下载Sherpa-ONNX语音识别模型
115126
- **摄像头功能**:需要摄像头设备和OpenCV支持
116127

@@ -121,28 +132,31 @@ py-xiaozhi 是一个使用 Python 实现的小智语音客户端,旨在通过
121132

122133
[从零开始使用小智客户端(视频教程)](https://www.bilibili.com/video/BV1dWQhYEEmq/?vd_source=2065ec11f7577e7107a55bbdc3d12fce)
123134

124-
125135
## 技术架构
126136

127137
### 核心架构设计
138+
128139
- **事件驱动架构**: 基于asyncio的异步事件循环,支持高并发处理
129140
- **分层设计**: 清晰的应用层、协议层、设备层、UI层分离
130141
- **单例模式**: 核心组件采用单例模式,确保资源统一管理
131142
- **插件化**: MCP工具系统和IoT设备支持插件化扩展
132143

133144
### 关键技术组件
145+
134146
- **音频处理**: Opus编解码、WebRTC回声消除、实时重采样、系统音频录制
135147
- **语音识别**: Sherpa-ONNX离线模型、语音活动检测、唤醒词识别
136148
- **协议通信**: WebSocket/MQTT双协议支持、加密传输、自动重连
137149
- **配置系统**: 分层配置、点记法访问、动态更新、JSON/YAML支持
138150

139151
### 性能优化
152+
140153
- **异步优先**: 全系统异步架构,避免阻塞操作
141154
- **内存管理**: 智能缓存、垃圾回收
142155
- **音频优化**: 5ms低延迟处理、队列管理、流式传输
143156
- **并发控制**: 任务池管理、信号量控制、线程安全
144157

145158
### 安全机制
159+
146160
- **加密通信**: WSS/TLS加密、证书验证
147161
- **设备认证**: 双协议激活、设备指纹识别
148162
- **权限控制**: 工具权限管理、API访问控制
@@ -151,6 +165,7 @@ py-xiaozhi 是一个使用 Python 实现的小智语音客户端,旨在通过
151165
## 开发指南
152166

153167
### 项目结构
168+
154169
```
155170
py-xiaozhi/
156171
├── main.py # 应用程序主入口(CLI参数处理)
@@ -190,6 +205,7 @@ py-xiaozhi/
190205
```
191206

192207
### 开发环境设置
208+
193209
```bash
194210
# 克隆项目
195211
git clone https://github.com/huangjunsen0406/py-xiaozhi.git
@@ -213,18 +229,21 @@ python main.py --protocol mqtt # MQTT协议
213229
```
214230

215231
### 核心开发模式
232+
216233
- **异步优先**: 使用`async/await`语法,避免阻塞操作
217234
- **错误处理**: 完整的异常处理和日志记录
218235
- **配置管理**: 使用`ConfigManager`统一配置访问
219236
- **测试驱动**: 编写单元测试,确保代码质量
220237

221238
### 扩展开发
239+
222240
- **添加MCP工具**: 在`src/mcp/tools/`目录创建新工具模块
223241
- **添加IoT设备**: 继承`Thing`基类实现新设备
224242
- **添加协议**: 实现`Protocol`抽象基类
225243
- **添加界面**: 扩展`BaseDisplay`实现新的UI组件
226244

227245
### 状态流转图
246+
228247
```
229248
+----------------+
230249
| |
@@ -263,6 +282,7 @@ python main.py --protocol mqtt # MQTT协议
263282
[Rain120](https://github.com/Rain120)
264283
[kejily](https://github.com/kejily)
265284
[电波bilibili君](https://space.bilibili.com/119751)
285+
[赛搏智能](https://shop115087494.m.taobao.com/?refer=https%3A%2F%2Fm.tb.cn%2F&ut_sk=1.WMelxbgDQWkDAJ1Rq9Pn7DCD_21380790_1757337352472.Copy.shop&suid=0E25E948-651D-46E0-8E89-5C8CB03B4F56&shop_navi=shopindex&sourceType=shop&shareUniqueId=33038752403&un=d22c5ceda82844ab8bd7bab98ffeb263&share_crt_v=1&un_site=0&spm=a2159r.13376460.0.0&sp_tk=dkRKUjRKUWo2ZHY%3D&bc_fl_src=share-1041250486811064-2-1&cpp=1&shareurl=true&short_name=h.SaBKVHytsCKIPNS&bxsign=scdGtSe264e_qkFQBh0rXCkF-Mrb_s6t35EnpVBBU5dsrd-J24c-_rn_PhJiXRk0hg2hjGoAm0L7j2UQg27OIH_6gZkbhKDyLziD2cy4pDf8sC3KmqrF55TXP3USZaPTw_-&app=weixin)
266286

267287
### 赞助支持
268288

documents/docs/guide/old_docs/使用文档.md

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ outline: deep
77
# py-xiaozhi使用文档(请认真阅读使用文档)
88

99
![Image](https://github.com/user-attachments/assets/df8bd5d2-a8e6-4203-8084-46789fc8e9ad)
10+
1011
## 使用介绍
12+
1113
- 语音模式分为两种长按对话和自动对话,右下角按钮显示的是当前模式
1214
- 长按对话:按住说话松手发送
1315
- 自动对话:点击开始对话即可,当界面显示聆听中就表示到你说话了,说完会自行发送
@@ -23,6 +25,7 @@ outline: deep
2325
### 项目基础配置
2426

2527
#### 配置文件说明
28+
2629
项目使用两种配置方式:初始配置模板和运行时配置文件。
2730

2831
1. **初始配置模板**
@@ -36,8 +39,10 @@ outline: deep
3639
- 使用场景:日常使用时修改此文件
3740

3841
#### 配置项说明
42+
3943
- 需要什么加什么配置通过config_manager去获取就行了,参考websocket或iot\things\temperature_sensor.py
4044
- 例如获取 "MQTT_INFO"的"endpoint" , 通过这样 `config.get_config("MQTT_INFO.endpoint")`就能拿到**endpoint**
45+
4146
```json
4247
{
4348
"CLIENT_ID": "自动生成的客户端ID",
@@ -74,7 +79,7 @@ outline: deep
7479
"frame_width": 640,
7580
"frame_height": 480,
7681
"fps": 30,
77-
"Loacl_VL_url": "https://open.bigmodel.cn/api/paas/v4/", // 智普的申请地址 https://open.bigmodel.cn/
82+
"Local_VL_url": "https://open.bigmodel.cn/api/paas/v4/", // 智普的申请地址 https://open.bigmodel.cn/
7883
"VLapi_key": "你的key"
7984
}
8085
// ...可以添加任意配置
@@ -91,27 +96,33 @@ outline: deep
9196
- 打开 `/config/config.json`
9297
- 修改 `NETWORK.WEBSOCKET_URL` 为新的服务器地址
9398
- 示例:
99+
94100
```json
95101
"NETWORK": {
96102
"WEBSOCKET_URL": "ws://你的服务器地址:端口号/"
97103
}
98104
```
99-
105+
100106
3. **启用语音唤醒**
101107
- 修改 `USE_WAKE_WORD` 为 `true`
102108
- 可在 `WAKE_WORDS` 数组中添加或修改唤醒词
103109

104110
#### 注意事项
111+
105112
- 修改配置文件后需要重启程序才能生效
106113
- WebSocket URL 必须以 `ws://` 或 `wss://` 开头
107114
- 首次运行时会自动生成 CLIENT_ID,建议不要手动修改
108115
- DEVICE_ID 默认使用设备MAC地址,可按需修改
109116
- 配置文件使用 UTF-8 编码,请使用支持 UTF-8 的编辑器修改
110117

111118
## 启动说明
119+
112120
### 系统依赖安装
121+
113122
#### Windows
123+
114124
1. **安装 FFmpeg**
125+
115126
```bash
116127
# 方法一:使用 Scoop 安装(推荐)
117128
scoop install ffmpeg
@@ -128,6 +139,7 @@ outline: deep
128139
- `C:\Windows\System32`
129140

130141
#### Linux (Debian/Ubuntu)
142+
131143
```bash
132144
# 安装系统依赖
133145
sudo apt-get update
@@ -148,6 +160,7 @@ sudo apt install build-essential python3-dev
148160
```
149161

150162
#### macOS
163+
151164
```bash
152165
# 使用 Homebrew 安装系统依赖
153166
brew install portaudio opus python-tk ffmpeg gfortran
@@ -157,6 +170,7 @@ brew upgrade tcl-tk
157170
### Python 依赖安装
158171

159172
#### 方式一:使用 venv(推荐)
173+
160174
```bash
161175
# 1. 创建虚拟环境
162176
python -m venv .venv
@@ -175,6 +189,7 @@ pip install -r requirements_mac.txt -i https://mirrors.aliyun.com/pypi/simple
175189
```
176190

177191
#### 方式二:使用 Conda
192+
178193
```bash
179194
# 1. 创建 Conda 环境
180195
conda create -n py-xiaozhi python=3.12
@@ -223,6 +238,7 @@ pip install -r requirements_mac.txt -i https://mirrors.aliyun.com/pypi/simple
223238
```
224239

225240
#### Iot 状态流转
241+
226242
```text
227243
+----------------+
228244
| 用户语音 |
@@ -312,6 +328,7 @@ pip install -r requirements_mac.txt -i https://mirrors.aliyun.com/pypi/simple
312328
```
313329

314330
#### IoT设备管理
331+
315332
- IoT模块采用灵活的多协议通信架构:
316333
- MQTT协议:用于与标准物联网设备通信,如智能灯、空调等
317334
- HTTP协议:用于与Web服务交互,如获取在线音乐、调用多模态AI模型等
@@ -327,11 +344,13 @@ pip install -r requirements_mac.txt -i https://mirrors.aliyun.com/pypi/simple
327344
- "识别画面"
328345

329346
#### 添加新的IoT设备
347+
330348
1.`src/iot/things`目录下创建新的设备类
331349
2. 继承`Thing`基类并实现必要方法
332350
3.`thing_manager.py`中注册新设备
333351

334352
### 注意事项
353+
335354
1. 确保相应的服务器配置正确且可访问:
336355
- MQTT服务器配置(用于物联网设备)
337356
- API接口地址(用于HTTP服务)
@@ -341,15 +360,19 @@ pip install -r requirements_mac.txt -i https://mirrors.aliyun.com/pypi/simple
341360
5. 在添加新设备时,建议先进行通信测试,确保连接稳定
342361

343362
#### 在线音乐配置
363+
344364
- 接入在线音源了,无需自行配置默认可用
365+
345366
### 运行模式说明
367+
346368
#### GUI 模式运行(默认)
369+
347370
```bash
348371
python main.py
349372
```
350373

351-
352374
#### CLI模式运行
375+
353376
```bash
354377
python main.py --mode cli
355378
```
@@ -370,6 +393,7 @@ python scripts/build.py
370393
```
371394

372395
### 注意事项
396+
373397
1. 建议使用 Python 3.9.13+ 版本,推荐 3.12
374398
2. Windows 用户无需手动安装 opus.dll,项目会自动处理
375399
3. 使用 Conda 环境时必须安装 ffmpeg 和 Opus
@@ -413,9 +437,10 @@ python scripts/build.py
413437
```
414438

415439
## 获取帮助
440+
416441
如果遇到问题:
417442

418443
1. 优先查看 docs/异常汇总.md 文档
419444
2. 通过 GitHub Issues 提交问题
420445
3. 通过 AI 助手寻求帮助
421-
4. 联系作者(主页有微信)(请自备 Todesk 链接并说明来意,作者工作日晚上处理)
446+
4. 联系作者(主页有微信)(请自备 Todesk 链接并说明来意,作者工作日晚上处理)

libs/webrtc_apm/linux/arm64/libwebrtc_apm.so

100644100755
-1.2 MB
Binary file not shown.

0 commit comments

Comments
 (0)