97 lines
2.2 KiB
Markdown
97 lines
2.2 KiB
Markdown
# 往事拾遗 (Life Echo)
|
||
|
||
一个基于实时 WebSocket 长连接的语音对话回忆录生成系统。
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
life-echo/
|
||
├── api/ # 后端服务(FastAPI)
|
||
│ ├── agents/ # LangChain Agent
|
||
│ ├── database/ # 数据库模型和连接
|
||
│ ├── routers/ # API 路由
|
||
│ ├── services/ # 业务服务(ASR、TTS、PDF)
|
||
│ └── main.py # FastAPI 应用入口
|
||
├── app-android/ # Android 应用
|
||
│ └── app/
|
||
│ └── src/main/java/com/huaga/life_echo/
|
||
│ ├── data/ # 数据层(Room、Repository)
|
||
│ ├── network/ # 网络层(WebSocket、REST API)
|
||
│ ├── ui/ # UI 层(Compose)
|
||
│ └── feature/ # 功能模块
|
||
└── doc/ # 文档
|
||
├── 开发计划.md
|
||
└── 数据库设计.md
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
### 后端设置
|
||
|
||
1. 安装依赖:
|
||
```bash
|
||
cd api
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
2. 配置环境变量:
|
||
```bash
|
||
cp .env.example .env
|
||
# 编辑 .env 文件,填入 OPENAI_API_KEY
|
||
```
|
||
|
||
3. 初始化数据库:
|
||
```python
|
||
from api.database import init_db
|
||
init_db()
|
||
```
|
||
|
||
4. 启动服务:
|
||
```bash
|
||
uvicorn api.main:app --reload --host 0.0.0.0 --port 8000
|
||
```
|
||
|
||
### Android 设置
|
||
|
||
1. 使用 Android Studio 打开 `app-android` 目录
|
||
|
||
2. 同步 Gradle 依赖
|
||
|
||
3. 配置 API 地址(如需要):
|
||
- 编辑 `app-android/app/src/main/java/com/huaga/life_echo/config/AppConfig.kt`
|
||
- 修改 `BASE_URL` 和 `WS_BASE_URL`
|
||
|
||
4. 运行应用
|
||
|
||
## 功能特性
|
||
|
||
- ✅ 实时 WebSocket 长连接对话
|
||
- ✅ 基于访谈问题的智能对话引导
|
||
- ✅ 自动将口语整理为书面语章节
|
||
- ✅ 基于传记结构的章节组织
|
||
- ✅ PDF 导出功能
|
||
- ✅ Android 本地数据存储
|
||
|
||
## 技术栈
|
||
|
||
**后端:**
|
||
- FastAPI + WebSocket
|
||
- LangChain(对话 Agent + 整理 Agent)
|
||
- SQLAlchemy + SQLite
|
||
- OpenAI API(ASR、TTS、LLM)
|
||
|
||
**Android:**
|
||
- Kotlin + Jetpack Compose
|
||
- Ktor WebSocket Client
|
||
- Room Database
|
||
- Coroutines + Flow
|
||
|
||
## 开发计划
|
||
|
||
详细开发计划请查看 [doc/开发计划.md](docs/开发计划.md)
|
||
|
||
## 许可证
|
||
|
||
MIT License
|
||
|