logo
0
0
WeChat Login

Diva Lesson Backend

项目简介

Diva Lesson Backend 是一个基于 FastAPI 的后端开发项目,专注于音乐课程教学系统的核心功能实现。该项目提供了完整的后端服务,支持语音交互、智能对话、课程管理、评分系统等核心功能。

核心功能

  • 语音识别(ASR):集成阿里云 DashScope 语音识别服务,支持实时语音转文字
  • 语音合成(TTS):提供文本转语音功能,支持多种音色和语言
  • 智能体对话:基于大语言模型的智能对话系统,支持课程辅导和问答
  • 课程管理:完整的课程创建、编辑、发布和管理功能
  • 文件上传:支持大文件分片上传,集成阿里云 OSS 存储
  • 评分系统:基于深度学习的音乐评分系统,支持人声质量评估
  • 用户认证:基于 JWT 的用户认证和授权系统
  • 邮件服务:支持邮箱验证码发送和用户注册

技术栈

后端框架

  • FastAPI:现代化、高性能的 Web 框架
  • Uvicorn:ASGI 服务器
  • Pydantic:数据验证和设置管理

数据库

  • PostgreSQL:关系型数据库
  • Redis:缓存和会话管理
  • SQLAlchemy:ORM 框架
  • Alembic:数据库迁移工具

机器学习

  • PyTorch:深度学习框架(CPU 版本)
  • Librosa:音频处理库
  • NumPy:数值计算库
  • Pandas:数据分析库

云服务

  • 阿里云 OSS:对象存储服务
  • 阿里云 DashScope:大模型服务(ASR、TTS、LLM)
  • Fluentd:日志收集服务

开发工具

  • uv:快速的 Python 包管理器
  • pytest:测试框架
  • black:代码格式化
  • flake8:代码检查
  • isort:导入排序

项目结构

Diva-Lesson-Backend/ ├── src/ # 源代码目录 │ ├── common/ # 公共模块 │ │ ├── cache/ # Redis 缓存管理 │ │ ├── db/ # 数据库连接和 ORM │ │ ├── oss/ # OSS 文件存储 │ │ └── config.py # 配置管理 │ ├── gateway/ # API 网关层 │ │ ├── controllers/ # 控制器 │ │ ├── docs/ # API 文档 │ │ ├── middlewares/ # 中间件 │ │ ├── models/ # 请求/响应模型 │ │ └── routes/ # 路由定义 │ ├── services/ # 业务逻辑层 │ │ ├── agent/ # 智能体服务 │ │ ├── asr/ # 语音识别服务 │ │ ├── tts/ # 语音合成服务 │ │ ├── fileupload/ # 文件上传服务 │ │ ├── login/ # 登录认证服务 │ │ └── scoring/ # 评分服务 │ ├── utils/ # 工具函数 │ ├── logs/ # 日志模块 │ └── scripts/ # 脚本工具 ├── tests/ # 测试目录 │ ├── benchmark/ # 性能测试 │ └── performance/ # 性能分析 ├── docs/ # 文档目录 ├── alembic/ # 数据库迁移 ├── MODEL_WEIGHT/ # 模型权重文件 ├── main.py # 应用入口 ├── pyproject.toml # 项目配置 ├── .env.example # 环境变量示例 └── README.md # 项目说明文档

环境要求

系统要求

  • 操作系统:Windows 10/11, macOS, Linux
  • Python 版本:>= 3.10(推荐 3.14.2)
  • 内存:建议 4GB 以上
  • 磁盘空间:建议 10GB 以上

软件要求

  • uv:Python 包管理器
  • PostgreSQL:>= 13.0
  • Redis:>= 6.0
  • Git:版本控制(可选)

安装与配置

1. 克隆项目

git clone <repository-url> cd Diva-Lesson-Backend

2. 安装 uv

如果尚未安装 uv,请运行:

# Windows (PowerShell) powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh

3. 创建虚拟环境并安装依赖

# 创建虚拟环境 uv venv # 激活虚拟环境 # Windows .venv\Scripts\activate # macOS/Linux source .venv/bin/activate # 安装依赖 uv sync

4. 配置环境变量

复制环境变量示例文件并根据实际情况修改:

cp .env.example .env

编辑 .env 文件,配置以下关键参数:

# 主配置 HOST=0.0.0.0 PORT=8000 RELOAD=True # Redis 配置 REDIS_HOST=localhost REDIS_PORT=6379 REDIS_DB=0 REDIS_PASSWORD= # PostgreSQL 配置 POSTGRES_HOST=localhost POSTGRES_PORT=5432 POSTGRES_DB=diva_ai_lesson POSTGRES_USER=postgres POSTGRES_PASSWORD=your_password # JWT 配置 JWT_SECRET_KEY=your_secret_key JWT_EXPIRE_TIMEOUT=7200 JWT_ALGORITHM=HS256 # OSS 配置 OSS_ACCESS_KEY_ID=your_access_key_id OSS_ACCESS_KEY_SECRET=your_access_key_secret OSS_ENDPOINT=your_oss_endpoint OSS_BUCKET_NAME=your_bucket_name OSS_DOMAIN=your_oss_domain # DashScope 配置 DASHSCOPE_API_KEY=your_api_key DASHSCOPE_ASR_MODEL=paraformer-realtime-v2 DASHSCOPE_LLM_MODEL=qwen-plus DASHSCOPE_TTS_MODEL=sambert-zhichu-v1

5. 初始化数据库

# 运行数据库迁移 alembic upgrade head # 初始化默认账户(仅限开发环境) python src/scripts/init_default_accounts.py

6. 配置 OSS CORS(可选)

如果需要配置 OSS 跨域访问:

python src/scripts/setup_oss_cors.py

运行项目

开发模式

# 启动开发服务器(支持热重载) uv run python main.py

或使用 uvicorn 直接启动:

uvicorn main:app --host 0.0.0.0 --port 8000 --reload

生产模式

修改 .env 文件中的 RELOAD=False,然后运行:

uv run python main.py

访问 API 文档

启动服务后,访问以下地址查看 API 文档:

测试

运行测试套件:

# 运行所有测试 pytest # 运行特定测试文件 pytest tests/test_example.py # 运行测试并生成覆盖率报告 pytest --cov=src --cov-report=html

代码规范

# 代码格式化 black src/ tests/ # 代码检查 flake8 src/ tests/ # 导入排序 isort src/ tests/

常见问题

1. PyTorch CPU 版本安装失败

项目已配置为使用 CPU 版本的 PyTorch,如果遇到问题,请确保:

# 手动安装 CPU 版本 uv pip install torch --index-url https://download.pytorch.org/whl/cpu

2. 数据库连接失败

检查 PostgreSQL 服务是否运行,以及 .env 中的数据库配置是否正确。

3. Redis 连接失败

检查 Redis 服务是否运行,以及 .env 中的 Redis 配置是否正确。

项目说明

本项目为内部项目,用于内部服务器部署,不对外开源。

联系方式

About

No description, topics, or website provided.
Language
Python90%
HTML9.5%
Dockerfile0.3%
Shell0.1%
Others0.1%