目录

BeWater 水声信号分析系统

数据库课程(大三下)大项目:面向水声 WAV 音频的自动分割、多算法并行识别与集成投票分析平台, 附浏览器端海洋动物声谱分析模块。平台定位为可扩展的水声分析底座,欢迎在其上继续添加模块。

任务背景

水声信号目标识别是海洋监测领域的重要方向。现有系统大多针对单一算法优化,缺乏多算法集成与统一管理能力。 本项目构建一套集数据管理、算法调度、结果可视化于一体的水声信号目标分析系统:对上传的 WAV 音频做波形 预览与定长/手动分割,交由多个异构算法服务并行推理,再通过集成投票融合结果并入库,前端提供客户端 (任务工作台/任务列表/历史数据)与管理端(数据总览/任务管理/算法监控/统计分析)两套视图。 识别目标为四类船舶:商船(cargo)、客船(passenger)、油轮(tanker)、拖船(tug)。 (以上背景提炼自本项目的开题报告《水声目标识别开题报告》。)

spectrum-analysis-web/(原模训交付「水声分析工具」)是并入本平台的独立子模块:纯浏览器单页应用, 对海洋生物声音 WAV 批量生成频段可定制的多频段语谱图,检测并标注亮线,分析谐波关系与多普勒频移趋势, 全部计算在浏览器本地完成。

内容结构

路径 说明
client.html 客户端单页应用(任务工作台、任务列表、历史数据)
admin.html 管理端单页应用(数据总览、任务管理、算法监控、统计分析)
audio-features.js 前端音频特征提取工具类(波形、梅尔频谱图可视化)
backend/ FastAPI 后端:路由 app/api/v1、ORM 模型、队列处理器、FFmpeg 音频分割
backend/app/services/queue_processor.py 处理队列:并行调用算法服务并做集成投票
backend/scripts/init_db.py 数据库初始化/重置脚本
backend/.env.example 环境变量模板(数据库连接、算法服务地址、JWT 密钥)
uatfsn_server/ 算法服务一(端口 8001):UAT-FSN 轻量级时频分离网络
mt_bca_cnn/ 算法服务二(端口 8002):MT-BCA-CNN 多任务平衡通道注意力网络
docs/ 数据库设计(ER 图 + DDL)、API 规格、模块开发指南、部署指南、用户手册
spectrum-analysis-web/ 并入的声谱分析模块(原模训交付水声分析工具,零构建纯浏览器应用)
spectrum-analysis-web/VoiceAnalysis.html 声谱分析入口:参数面板、主控脚本
spectrum-analysis-web/*.js 六个模块:波形播放、手写 FFT/STFT、语谱图渲染、峰值检测与轨迹、多普勒趋势、批处理导出
spectrum-analysis-web/made_voice/ 合成测试信号生成器(Python/NumPy)与样本参数清单
spectrum-analysis-web/docs/ 水声分析工具用户手册
start.bat / stop.bat Windows 一键启动/停止全部服务

运行方法

依赖:Python 3.10+、MySQL 8.0、FFmpeg(需加入系统 PATH)。模型权重(*.pth)与音频数据 (*.wav)体积较大,未纳入本仓库,首次推理前需自行训练或放置权重到各算法服务的 outputs/checkpoints/ 目录(目录已用 .gitkeep 占位)。

:: 1. 配置数据库连接(修改 DATABASE_URL 中的密码)
copy backend\.env.example backend\.env

:: 2. 安装依赖(后端 + 两个算法服务)
pip install -r backend\requirements.txt
pip install -r uatfsn_server\requirements.txt
pip install -r mt_bca_cnn\requirements.txt

:: 3. 一键启动(后端 8000 + UAT-FSN 8001 + MT-BCA-CNN 8002,并打开前端)
start.bat

后端启动时通过 SQLAlchemy create_all 自动建表并补种算法、目标类型等种子数据,无需手工执行 SQL; 完整建表 DDL 与查询示例见 docs/Database_Design.md。也可手动启动:

cd backend && python -m uvicorn app.main:app --host 0.0.0.0 --port 8000
cd uatfsn_server && python main.py
cd mt_bca_cnn && python main.py

浏览器打开 client.html(客户端)或 admin.html(管理端),API 文档见 http://localhost:8000/docs。

声谱分析模块(spectrum-analysis-web/)与主平台相互独立、无需服务端:浏览器直接打开 VoiceAnalysis.html 即可(批处理与产物直写依赖 File System Access API,建议 Chrome/Edge); 合成测试 WAV 用 python made_voice/code/generate.py --batch 生成,依赖 Python 3 与 NumPy。

来源声明

  • 课程框架:数据库课程大项目,系统需求、数据库设计与模块划分按课程大作业要求完成。
  • 算法参考:UAT-FSN、MT-BCA-CNN 两个识别网络依据公开论文思路复现实现,作为独立算法服务接入; 前期调研笔记与参考文献 PDF 未纳入本仓库。
  • 自研范围:FastAPI 后端(数据模型、处理队列、集成投票)、前端交互原型(client/admin 单页、 前端特征可视化)、数据库设计文档均为本人独立完成。
  • 数据:测试音频来自公开水声数据集(ShipsEar 类),WAV 文件与训练权重不入库。
  • spectrum-analysis-web/ 为模训交付的团队作品(原代号 Demand)并入:FFT、STFT、峰值检测与 轨迹追踪等算法为手写实现,以 Watkins 海洋哺乳动物声音数据库的 WAV 组织方式为预期输入参考; 模块保持零构建、可独立运行,后续同学的声谱类功能建议按此模块形态挂接扩展。
关于

数据库课程大项目:Vue3 + FastAPI + MySQL 的水声信号目标分析平台(音频分割、多算法并行、集成投票)

307.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号