# continew-admin-asr **Repository Path**: smartoa/continew-admin-asr ## Basic Information - **Project Name**: continew-admin-asr - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-12 - **Last Updated**: 2026-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ContiNew Admin — 录音转写 Pipeline 独立的录音转写服务,包含 **上传 → MinIO → MQ → FunASR 转写** 完整流水线,不依赖 ContiNew Admin 后端/前端。 ## 项目结构 ``` continew-admin-asr/ ├── api/ # FastAPI 录音上传 + 状态查询 │ ├── app.py │ ├── Dockerfile │ └── requirements.txt ├── worker/ # RabbitMQ 消费者:转写执行 (MinIO → FunASR → 写库) │ ├── worker.py │ ├── Dockerfile │ └── requirements.txt ├── funasr/ # FunASR 模型推理服务 │ ├── server.py │ ├── Dockerfile │ └── requirements.txt ├── nginx/ # Nginx 反向代理 FunASR(大文件传输缓冲) │ └── nginx.conf ├── scripts/ # 辅助脚本 │ ├── asr-load-test.py # 压测脚本 │ └── init-minio-event.sh # MinIO 事件通知初始化 ├── db/ │ └── asr_table.sql # MySQL 建表 DDL ├── .env.example # 环境变量模板 ├── docker-compose.yml # Docker Compose 编排 └── README.md ``` ## 架构 ``` 客户端上传 ──→ asr-api ──→ MinIO ──→ MinIO 事件通知 ──→ RabbitMQ ──→ asr-worker ──→ FunASR ──→ MySQL (存储音频) (消息队列) (转写) (推理) (写结果) ``` - **asr-api**: 接收录音文件上传,存 MinIO,写任务到 MySQL,通过 RabbitMQ 触发转写 - **asr-worker**: 消费 MQ 消息,从 MinIO 拉取音频,调 FunASR 转写,写结果到 MySQL - **funasr-service**: FunASR 模型推理(SenseVoiceSmall + VAD + 标点 + 说话人分离) - **nginx**: 反向代理 FunASR(应对大文件传输场景) ## 快速启动 ### 1. 环境依赖 - Docker & Docker Compose - MySQL(外部,存储任务和设备信息) - MinIO(外部,存储音频文件) - RabbitMQ(外部,消息队列) ### 2. 配置 ```bash cp .env.example .env # 编辑 .env 填入你的 MySQL/MinIO/RabbitMQ 连接信息 ``` ### 3. 初始化 MinIO 事件通知 ```bash # 注意:需先安装 mc(MinIO Client)并配置好连接 chmod +x scripts/init-minio-event.sh ./scripts/init-minio-event.sh ``` ### 4. 启动 ```bash docker compose up -d ``` 查看日志: ```bash docker compose logs -f ``` ## API 接口 | 接口 | 方法 | 说明 | |------|------|------| | `/api/v1/audio/upload` | POST | 上传录音文件并创建转写任务 | | `/api/v1/audio/tasks/{task_no}` | GET | 查询任务状态(需 X-Internal-Token) | | `/api/v1/audio/tasks/{task_no}/download` | GET | 获取录音预签名下载地址(需 X-Internal-Token) | | `/api/v1/audio/tasks/{task_no}/retry` | POST | 重试转写任务(需 X-Internal-Token) | | `/healthz` | GET | 健康检查 | **内部接口**(标注需 `X-Internal-Token` 的接口)用于 ContiNew Admin 后端调用,不对外暴露。 ### 上传接口示例 ```bash curl -X POST http://localhost:10081/api/v1/audio/upload \ -F "deviceCode=DEV-001" \ -F "recordStartTime=2026-08-10T08:00:00" \ -F "recordEndTime=2026-08-10T08:10:00" \ -F "longitude=120.152586" \ -F "latitude=30.267390" \ -F "file=@test.wav" ```