A locally executed AI voice phone interaction project
“给苏格拉底打电话” 是一个基于AI的项目,旨在通过模拟苏格拉底式的启发式追问来探讨哲学问题。用户可以通过语音与AI苏格拉底对话,苏格拉底将根据用户的提问进行哲学式的反问与讨论。 该项目使用两个硬件组件:LattePanda 和 行空板,它们通过物联网的方式连接。项目的AI部分运行在电脑上,而行空板负责物理交互与UI界面。
在开始使用本项目之前,请确保你的环境符合以下要求:
- 请根据 requirements.txt 文件安装所需的Python依赖库。
- 支持Python 3.8+。
- 推荐使用
uv管理虚拟环境和依赖。
- LattePanda(可以用你的电脑代替)
- 电源线
- 行空板
- 麦克风
- 音响
- LED灯
电脑上的主程序
- 克隆本仓库到你的本地计算机:
git clone https://github.com/DFRobot-AIGC/calling2Socrates.git
- 使用
uv自动部署电脑端主程序:
bash scripts/deploy_uv.sh这个脚本会自动完成以下操作:
- 创建
.venv虚拟环境 - 使用
uv安装requirements.txt中的依赖 - 如果
.env不存在,则从.env.example自动生成 - 如果本机已安装
ollama,自动拉取.env中配置的模型,默认是qwen3.5:2b
- 配置环境变量(可选):
将
.env.example文件复制为.env并根据需要修改其中的配置项:
cp .env.example .env
然后编辑 .env 文件,设置你的API密钥和其他配置项。
- 激活虚拟环境并运行主程序 chat.py:
source .venv/bin/activate
python chat.py如果你不想使用自动部署脚本,也可以手动执行:
uv venv .venv --python 3.12
uv pip install --python .venv/bin/python -r requirements.txt
cp .env.example .env
source .venv/bin/activate
python chat.py- 将 main.py 上传到行空板并运行。
接打电话的过程
- 启动:运行电脑上的主程序 chat.py 和行空板上的 main.py。
- 拨打电话:在行空板的UI界面中点击“拨打电话”按钮,苏格拉底将开始与用户对话。
- 继续对话:点击“继续对话”按钮,用户可以继续与苏格拉底对话。
- 通话结束:当用户完成对话后,系统会自动结束通话。
在运行项目后,用户可以体验与AI苏格拉底的对话。项目通过物联网技术将用户的语音转化为文本,苏格拉底AI将会基于用户的提问给出反问或回答,并通过音响播放生成的语音。
项目中包含多个wav文件,这些文件用于不同的状态提示和音频播放:
- 5s.wav:通话结束的背景音乐。
- idel.wav:系统闲置状态时的背景音乐。
- waitingforcalling.wav:用户开始拨打电话时的等待提示音。
- start.wav:用户成功拨通电话时的提示音。
- music.wav:苏格拉底来电时播放的音乐。
本项目使用 CC0 1.0 Universal 许可证,这意味着你可以自由使用、修改和分发本项目,无需获得原作者的许可。
项目新增了集中式配置管理系统,主要包括:
- 环境变量配置:通过
.env文件管理敏感信息和可变配置 - config.py:集中管理所有配置项,包括:
- MQTT连接参数
- API密钥
- 音频设置
- 文件路径
- AI模型参数
使用配置系统的好处:
- 便于维护和修改配置
- 提高代码安全性,避免硬编码敏感信息
- 支持不同环境下的灵活配置
- 将功能分离为独立模块,提高代码可维护性
- 使用函数封装重复逻辑,减少代码冗余
- 增强了异常捕获和处理
- 添加了详细的日志记录,便于调试和问题追踪
- API密钥通过环境变量管理,避免硬编码
- 增加了输入验证和安全检查
项目集成了Python标准日志库,提供以下功能:
- 不同级别的日志记录(INFO, WARNING, ERROR)
- 时间戳和模块信息
- 便于调试和问题追踪的详细输出
使用示例:
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
logger.info("操作成功")
logger.error("发生错误")- LattePanda 官网: https://www.lattepanda.com/
- 行空板 官网: https://www.unihiker.com.cn/
- Python dotenv: https://github.com/theskumar/python-dotenv
- Edge TTS: https://github.com/rany2/edge-tts