Local-Voice/README_multiprocess.md
2025-09-20 23:29:47 +08:00

190 lines
4.5 KiB
Markdown
Raw Blame History

# 多进程音频录音系统
基于进程隔离的音频处理架构,实现零延迟的录音和播放切换。
## 🚀 系统特点
### 核心优势
- **多进程架构**: 输入输出进程完全隔离,无需设备重置
- **零切换延迟**: 彻底解决传统单进程的音频切换问题
- **实时响应**: 并行处理录音和播放,真正的实时体验
- **智能检测**: 基于ZCR(零交叉率)的精确语音识别
- **流式TTS**: 实时音频生成和播放,减少等待时间
- **角色扮演**: 支持多种AI角色和音色
### 技术架构
```
主控制进程 ──┐
├─ 输入进程 (录音 + 语音检测)
├─ 输出进程 (音频播放)
└─ 在线AI服务 (STT + LLM + TTS)
```
## 📦 文件结构
```
Local-Voice/
├── recorder.py # 原始实现 (保留作为参考)
├── multiprocess_recorder.py # 主程序
├── audio_processes.py # 音频进程模块
├── control_system.py # 控制系统模块
├── config.json # 配置文件
└── characters/ # 角色配置目录
├── libai.json # 李白角色
└── zhubajie.json # 猪八戒角色
```
## 🛠️ 安装和运行
### 1. 环境要求
- Python 3.7+
- 音频输入设备 (麦克风)
- 网络连接 (用于在线AI服务)
### 2. 安装依赖
```bash
pip install pyaudio numpy requests websockets
```
### 3. 设置API密钥
```bash
export ARK_API_KEY='your_api_key_here'
```
### 4. 基本运行
```bash
# 使用默认角色 (李白)
python multiprocess_recorder.py
# 指定角色
python multiprocess_recorder.py -c zhubajie
# 列出可用角色
python multiprocess_recorder.py -l
# 使用配置文件
python multiprocess_recorder.py --config config.json
# 创建示例配置文件
python multiprocess_recorder.py --create-config
```
## ⚙️ 配置说明
### 主要配置项
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| `recording.min_duration` | 最小录音时长(秒) | 2.0 |
| `recording.max_duration` | 最大录音时长(秒) | 30.0 |
| `recording.silence_threshold` | 静音检测阈值(秒) | 3.0 |
| `detection.zcr_min` | ZCR最小值 | 2400 |
| `detection.zcr_max` | ZCR最大值 | 12000 |
| `processing.max_tokens` | LLM最大token数 | 50 |
### 音频参数
- 采样率: 16kHz
- 声道数: 1 (单声道)
- 位深度: 16位
- 格式: PCM
## 🎭 角色系统
### 支持的角色
- **libai**: 李白 - 文雅诗人风格
- **zhubajie**: <20>豬八戒 - 幽默风趣风格
### 自定义角色
`characters/` 目录创建JSON文件:
```json
{
"name": "角色名称",
"description": "角色描述",
"system_prompt": "系统提示词",
"voice": "zh_female_wanqudashu_moon_bigtts",
"max_tokens": 50
}
```
## 🔧 故障排除
### 常见问题
1. **音频设备问题**
```bash
# 检查音频设备
python multiprocess_recorder.py --check-env
```
2. **依赖缺失**
```bash
# 重新安装依赖
pip install --upgrade pyaudio numpy requests websockets
```
3. **网络连接问题**
- 检查网络连接
- 确认API密钥正确
- 检查防火墙设置
4. **权限问题**
```bash
# Linux系统可能需要音频权限
sudo usermod -a -G audio $USER
```
### 调试模式
```bash
# 启用详细输出
python multiprocess_recorder.py -v
```
## 📊 性能对比
| 指标 | 原始单进程 | 多进程架构 | 改善 |
|------|-----------|------------|------|
| 切换延迟 | 1-2秒 | 0秒 | 100% |
| CPU利用率 | 单核 | 多核 | 提升 |
| 响应速度 | 较慢 | 实时 | 显著改善 |
| 稳定性 | 一般 | 优秀 | 大幅提升 |
## 🔄 与原版本对比
### 原版本 (recorder.py)
- 单进程处理
- 需要频繁重置音频设备
- 录音和播放不能同时进行
- 切换延迟明显
### 新版本 (multiprocess_recorder.py)
- 多进程架构
- 输入输出完全隔离
- 零切换延迟
- 真正的并行处理
- 更好的稳定性和扩展性
## 📝 开发说明
### 架构设计
- **输入进程**: 专注录音和语音检测
- **输出进程**: 专注音频播放
- **主控制进程**: 协调整个系统和AI处理
### 进程间通信
- 使用 `multiprocessing.Queue` 进行安全通信
- 支持命令控制和事件通知
- 线程安全的音频数据传输
### 状态管理
- 清晰的状态机设计
- 完善的错误处理机制
- 优雅的进程退出流程
## 📄 许可证
本项目仅供学习和研究使用。
## 🤝 贡献
欢迎提交Issue和Pull Request来改进这个项目。