基于 FastAPI 的媒体文件语音识别服务,支持视频分享链接转视频链接并调用 ASR 接口进行语音识别和内容分析。
- 🎥 视频转写 - 支持单个和批量视频语音转文字
- 🌐 多语言识别 - 支持多种语言的语音识别
- 📊 内容分析 - 对转写结果进行智能分析和结构化
- 📝 文本重构 - 对表格数据进行重新结构化
- 🔄 任务管理 - 实时任务状态追踪和进度监控
- 🏢 多租户支持 - 支持多租户数据隔离
- 🔐 认证授权 - Bearer Token 认证机制
- ⚡ 异步处理 - 高性能异步任务处理
- Python 3.11+
- FFmpeg
- PostgreSQL 或其他支持的数据库
- 克隆项目
git clone https://github.com/yourusername/media-asr-server.git
cd media-asr-server- 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate- 安装依赖
pip install -r requirements.txt
# 或使用 uv
uv pip install -r requirements.txt- 配置环境变量
复制
.env.example到.env并配置以下变量:
# ASR服务配置
ASR_API_KEY=your_asr_api_key
ASR_API_URL=your_asr_api_url
# 数据库配置
DATABASE_URL=postgresql://user:password@localhost/dbname
# API配置
API_PREFIX=/api/v1
API_TITLE=Media ASR Server
API_VERSION=1.0.0
ENV=development
# CORS配置
CORS_ORIGINS=["http://localhost:3000"]
CORS_HEADERS=["*"]
# 服务器配置
HOST=0.0.0.0
PORT=8000- 初始化数据库
python src/scripts/create_tables.py- 运行服务
uvicorn src.main:app --reload访问 http://localhost:8000/api/v1/docs 查看 API 文档。
POST /api/v1/share-to-text- 单个视频转写POST /api/v1/multi-share-to-text- 批量视频转写GET /api/v1/task/{task_id}/status- 查询任务状态GET /api/v1/task/{task_id}/result- 获取转写结果
POST /api/v1/analysis/text- 文本内容分析POST /api/v1/analysis/video- 视频内容分析GET /api/v1/analysis/records- 查询分析记录
POST /api/v1/analyze-table- 表格数据分析重构GET /api/v1/records- 查询文本分析记录
详细的 API 文档请访问部署后的 /api/v1/docs 端点。
media-asr-server/
├── src/
│ ├── main.py # FastAPI应用入口
│ ├── settings.py # 配置管理
│ ├── auth.py # 认证授权
│ ├── logger.py # 日志配置
│ ├── exceptions.py # 异常处理
│ ├── models/ # 数据模型
│ │ ├── asr.py # ASR相关模型
│ │ ├── auth.py # 认证模型
│ │ ├── content_analysis.py # 内容分析模型
│ │ ├── db_models.py # 数据库模型
│ │ ├── task.py # 任务模型
│ │ ├── text_analysis.py # 文本分析模型
│ │ └── video.py # 视频模型
│ ├── routers/ # API路由
│ │ ├── share.py # 视频转写路由
│ │ └── analysis.py # 内容分析路由
│ ├── services/ # 业务服务
│ │ ├── asr_service.py # ASR服务
│ │ ├── content_analysis_service.py # 内容分析服务
│ │ ├── database.py # 数据库服务
│ │ ├── llm_service.py # LLM服务
│ │ └── share_parser.py # 链接解析服务
│ └── scripts/ # 脚本工具
│ └── create_tables.py # 数据库初始化
├── tests/ # 测试文件
├── docs/ # 文档
├── requirements.txt # 依赖列表
├── .env.example # 环境变量示例
└── README.md # 项目说明
# 安装开发依赖
pip install -r requirements-dev.txt
# 运行测试
pytest
# 代码格式化
black src/
ruff check src/
# 类型检查
mypy src/- 遵循 PEP 8 代码风格
- 使用 PEP 257 文档字符串规范
- 使用 Pydantic 进行数据验证
- 异步处理所有 I/O 操作
- 函数长度限制在 40 行以内
- 单文件长度限制在 400 行以内
# 构建镜像
docker build -t media-asr-server .
# 运行容器
docker run -d \
--name media-asr-server \
-p 8000:8000 \
--env-file .env \
media-asr-server# 运行所有测试
pytest
# 运行特定测试
pytest tests/test_database.py
# 生成测试覆盖率报告
pytest --cov=src --cov-report=html项目使用关系型数据库存储任务和结果数据。主要表结构包括:
- user_tasks - 用户任务表
- user_task_statuses - 任务状态表
- video_tasks - 视频任务表
- video_task_results - 视频结果表
- asr_tasks - ASR任务表
- text_analysis - 文本分析记录表
- content_analysis - 内容分析记录表
详细的数据库设计请参考 database.md。
欢迎贡献代码!请遵循以下步骤:
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
- FastAPI - 现代化的 Python Web 框架
- SQLAlchemy - Python SQL 工具包
- Pydantic - 数据验证库