基于 Ollama 本地大语言模型和 Edge-TTS 语音合成的数字人对话系统,支持多语言语音交互和工具调用。
- 本地大模型对话:集成 Ollama,支持 Qwen3、DeepSeek-R1 等本地模型
- 语音合成播报:使用 Microsoft Edge-TTS 进行多语言语音输出
- 语音识别输入:支持浏览器 Web Speech API 语音输入
- 智能工具调用:
- 获取当前时间
- 查询天气(支持国内主要城市)
- 查询 A 股股票价格(新浪财经API)
- 发送电子邮件(SMTP)
- 发送钉钉消息(Webhook)
- 多语言支持:支持普通话、粤语、台湾国语、英语、日语、韩语等14种语言
- 后端:Python Flask
- 前端:原生 HTML/CSS/JavaScript
- AI 模型:Ollama (Qwen3/DeepSeek-R1)
- AI 框架:LangChain
- 语音合成:Microsoft Edge-TTS
- 股票数据:新浪财经
- Python 3.8+
- Ollama 服务(本地运行)
- 支持 Web Speech API 的现代浏览器
pip install -r requirements.txt创建 .env 文件,配置以下内容:
# 邮件服务配置(如需发送邮件功能)
SMTP_SERVER=smtp.qq.com
SMTP_PORT=587
SMTP_USERNAME=your_email@qq.com
SMTP_PASSWORD=your_authorization_code
FROM_EMAIL=your_email@qq.com
FROM_NAME=AI Agent
# Ollama 服务地址
OLLAMA_URL=http://127.0.0.1:11434/api/chat
# Edge-TTS 语音参数
EDGE_TTS_RATE=+0%
EDGE_TTS_VOLUME=+0%
EDGE_TTS_PITCH=+0Hz
# 服务器配置
HOST=127.0.0.1
PORT=3000确保 Ollama 服务正在运行:
# 启动 Ollama 服务
ollama serve
# 下载模型(根据需要选择)
ollama pull qwen3:0.6b
ollama pull qwen3:8b
ollama pull deepseek-r1:7bpython app.py打开浏览器访问:http://127.0.0.1:3000
- 在文本框中输入想说的话
- 点击"发送"按钮或按 Enter 键提交
- 数字人会自动回答并进行语音播报
- 查询时间:"现在几点了?"
- 查询天气:"北京天气怎么样?"
- 查询股票:"000001 股票现在多少钱?"
- 发送邮件:"帮我发一封邮件,收件人 xxx@qq.com,主题是测试,内容是你好"
- 发送钉钉:"帮我发一条钉钉消息,内容是大家好"
- 模型选择:支持切换 qwen3:0.6b、qwen3:8b、deepseek-r1:7b
- 语言选择:支持14种语言的对话和语音输出
- 语音开关:可随时开启/关闭语音播报
- 语音输入:点击"语音输入"按钮进行语音输入
ai-agent/
├── app.py # Flask 后端主程序
├── tools.py # 工具函数(天气、股票、邮件、钉钉)
├── requirements.txt # Python 依赖
├── .env.example # 环境变量配置示例
├── .gitignore # Git 忽略文件
├── public/
│ ├── index.html # 前端页面
│ ├── app.js # 前端逻辑
│ └── styles.css # 样式文件
└── resources/
└── avatar.jpg # 数字人头像
| 接口 | 方法 | 说明 |
|---|---|---|
/api/chat |
POST | 对话接口 |
/api/tts |
POST | 语音合成接口 |
/api/tts-status |
GET | TTS 状态查询 |
- 首次使用需确保 Ollama 服务正常运行
- 邮件发送功能需要配置 SMTP 授权码
- 股票查询依赖新浪财经API,需确保网络通畅
- 语音输入需要浏览器支持 Web Speech API