工具定位
做一个可在线使用的「音频静音段检测与自动切分」工具:用户上传单个音频文件(WAV/MP3/M4A/FLAC/OGG 等)或包含多轨文件的 ZIP(可选),工具自动识别静音区间,并按可配置规则切分成多个片段,支持一键打包下载与结果报告导出。
适用场景
播客剪辑、会议录音整理、课程录音分段、采访素材粗剪、客服录音抽取有效片段;目标是把“手动找静音+切片+命名导出”变成一次上传后的自动化流程。
交付物要求(硬约束)
必须输出:完整可运行项目源码(前端+后端)、清晰文件树、开发与生产运行命令、Docker 部署说明、测试用例或 QA Checklist、以及一份结果报告格式说明(JSON/CSV/Markdown 任一)。
核心功能清单
- 静音检测:可选 RMS/能量阈值(dBFS)+ 最小静音时长(ms)+ 静音合并窗口(ms)。
- 切分规则:在静音处切、最大片段时长、最短片段过滤、片段重命名模板(含序号/时间戳)。
- 预览与校验:展示波形/能量曲线(可简化为抽样峰值图)、可播放片段、可手工微调切点(可选)。
- 导出:单片段下载、全量 ZIP 打包下载、报告导出(包含每段起止时间、时长、是否被过滤、检测参数)。
实现建议(不生成任何图片/渲染图)
- 后端:Node.js + Fastify/Express 或 Python FastAPI;使用 ffmpeg/ffprobe 做解码与切分(仅处理现有音频)。
- 静音检测:ffmpeg silencedetect 或自行实现短时能量计算(解释两者差异与取舍)。
- 任务队列:本地内存队列或 BullMQ(可选);需要进度条与可恢复的任务状态。
- 安全:限制文件大小、限制并发、临时文件清理、zip-slip 防护、MIME/后缀双校验。
Prompt(复制到 AI 直接生成项目)
你是资深全栈工程师,请生成一个“在线音频静音段检测与自动切分工具”的完整可运行项目。
【目标】
- 用户上传音频(WAV/MP3/M4A/FLAC/OGG)。后端分析静音区间并给出切分建议;用户确认后导出切分后的多个音频片段(ZIP 下载)与检测报告。
- 禁止任何“生成图片/出图/配图/渲染图/海报/插画”相关能力;只允许对现有音频做检测、切分、转码与报告。
【必须交付物】
1) 完整项目源码(前端+后端),并给出文件树(tree 形式)。
2) 本地开发运行命令(含依赖安装、启动端口)。
3) 生产构建与运行命令。
4) Dockerfile + docker-compose.yml(可一键启动)。
5) API 文档(OpenAPI 或 Markdown),包含请求/响应示例。
6) 自动化测试或 QA Checklist(二选一至少一个;更好是二者都有)。
7) 结果报告格式说明(JSON/CSV/Markdown 任一),并给出示例。
【功能与参数】
- 静音检测参数:thresholdDb(默认 -35dB)、minSilenceMs(默认 600ms)、mergeGapMs(默认 200ms)。
- 切分参数:minClipMs(默认 1500ms)、maxClipMs(默认 10min)、keepLeadingTrailing(是否保留首尾静音)。
- 片段命名:{index}_{startMs}-{endMs}_{durationMs}.ext(可配置)。
【实现约束】
- 后端必须使用 ffprobe 获取时长与音频信息;切分用 ffmpeg(stream copy 优先,必要时转码)。
- 静音检测可用 ffmpeg silencedetect 或自行实现能量计算;无论选择哪种,都要解释算法与边界情况(背景噪声、音乐、压缩失真、讲话间隙等)。
- 必须实现:进度查询、任务取消、失败重试(可选但推荐)。
- 必须实现:文件大小限制、并发限制、临时文件清理策略、zip-slip 防护(如果支持 ZIP 上传)。
【前端】
- 提供上传区域、参数设置表单、开始分析按钮、进度条、结果表格(片段列表:起止时间/时长/下载按钮)、“一键打包下载”按钮、报告下载按钮。
- 允许用户试听每个片段(HTML5 audio)。
【输出格式】
- 先输出整体架构与关键模块说明。
- 再输出文件树。
- 再逐文件输出完整代码(每个文件用清晰标题分隔)。
- 最后输出运行/部署/测试说明与 QA Checklist。
验收清单
- 上传后能在 1-2 分钟内产出片段列表(视音频长度而定),并显示任务进度。
- 导出 ZIP 内包含所有片段与 report.json(或 report.csv)。
- Docker 一键启动可用;README 能独立让新人跑起来。
- QA 覆盖:不同格式、不同噪声环境、超大文件、取消任务、重复请求、异常输入。