4.5 KiB
4.5 KiB
多进程音频录音系统
基于进程隔离的音频处理架构,实现零延迟的录音和播放切换。
🚀 系统特点
核心优势
- 多进程架构: 输入输出进程完全隔离,无需设备重置
- 零切换延迟: 彻底解决传统单进程的音频切换问题
- 实时响应: 并行处理录音和播放,真正的实时体验
- 智能检测: 基于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. 安装依赖
pip install pyaudio numpy requests websockets
3. 设置API密钥
export ARK_API_KEY='your_api_key_here'
4. 基本运行
# 使用默认角色 (李白)
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文件:
{
"name": "角色名称",
"description": "角色描述",
"system_prompt": "系统提示词",
"voice": "zh_female_wanqudashu_moon_bigtts",
"max_tokens": 50
}
🔧 故障排除
常见问题
-
音频设备问题
# 检查音频设备 python multiprocess_recorder.py --check-env -
依赖缺失
# 重新安装依赖 pip install --upgrade pyaudio numpy requests websockets -
网络连接问题
- 检查网络连接
- 确认API密钥正确
- 检查防火墙设置
-
权限问题
# Linux系统可能需要音频权限 sudo usermod -a -G audio $USER
调试模式
# 启用详细输出
python multiprocess_recorder.py -v
📊 性能对比
| 指标 | 原始单进程 | 多进程架构 | 改善 |
|---|---|---|---|
| 切换延迟 | 1-2秒 | 0秒 | 100% |
| CPU利用率 | 单核 | 多核 | 提升 |
| 响应速度 | 较慢 | 实时 | 显著改善 |
| 稳定性 | 一般 | 优秀 | 大幅提升 |
🔄 与原版本对比
原版本 (recorder.py)
- 单进程处理
- 需要频繁重置音频设备
- 录音和播放不能同时进行
- 切换延迟明显
新版本 (multiprocess_recorder.py)
- 多进程架构
- 输入输出完全隔离
- 零切换延迟
- 真正的并行处理
- 更好的稳定性和扩展性
📝 开发说明
架构设计
- 输入进程: 专注录音和语音检测
- 输出进程: 专注音频播放
- 主控制进程: 协调整个系统和AI处理
进程间通信
- 使用
multiprocessing.Queue进行安全通信 - 支持命令控制和事件通知
- 线程安全的音频数据传输
状态管理
- 清晰的状态机设计
- 完善的错误处理机制
- 优雅的进程退出流程
📄 许可证
本项目仅供学习和研究使用。
🤝 贡献
欢迎提交Issue和Pull Request来改进这个项目。