AI 音频生成流水线异步任务要有进度和取消一、音频生成不是一次 HTTP 请求AI 音频生成通常包含文本解析、风格选择、旋律生成、伴奏生成、混音、导出和审核。整个过程可能持续几十秒甚至几分钟。如果用一个同步 HTTP 请求硬扛用户体验和服务稳定性都会很差。更合理的方式是把音频生成设计成异步流水线。二、先拆任务阶段flowchart TD A[提交创作请求] -- B[生成任务] B -- C[文本与风格解析] C -- D[模型生成] D -- E[混音导出] E -- F[内容审核] F -- G[结果通知]每个阶段都要有状态、耗时、错误码和重试策略。用户不需要知道所有内部细节但需要知道任务是否还在处理。audio_job_states: - queued - generating - mixing - reviewing - completed - failed - cancelled状态越清楚前端展示和后端恢复越简单。三、任务要支持取消type AudioJob { id: string status: string progress: number cancelRequested: boolean }用户发现参数填错应该能取消任务。取消不是简单删记录而是要通知正在运行的 worker 停止后续阶段并清理临时文件。如果模型调用不能中断也至少要阻止后续混音、审核和通知避免继续消耗资源。四、进度要诚实进度条最怕假。前 90% 很快最后 10% 卡很久会让用户更焦虑。可以按阶段展示而不是伪装成精确百分比。progress_display: mode: stage_based show_estimated_time: true show_cancel_button: true估算时间要基于历史任务。不同音频长度、模型、队列水位都会影响耗时。固定写“预计 1 分钟”很容易失信。还要处理失败恢复。某些阶段失败可以重试比如临时导出失败某些失败需要用户改参数比如输入违规。错误反馈要能指导用户下一步。最后生成结果要有过期策略。音频文件可能很大不适合永久保存。任务完成后保留多久、用户下载后是否清理都要提前定义。任务队列还要做优先级。短音频预览、正式导出、批量生成、失败重试的优先级不同。预览任务应该更快返回批量任务可以排队。全部混在一个队列里用户会觉得系统忽快忽慢。audio_queue_policy: preview: priority: high max_wait_seconds: 10 batch_export: priority: low max_wait_minutes: 30还要记录中间产物。某些阶段失败时如果前一阶段结果可复用就不必从头生成。比如旋律已经生成混音失败后可以只重跑混音。这样既省成本也能减少用户等待。最后审核阶段要有明确策略。版权风险、敏感内容、低质量输出分别对应不同处理拒绝、人工复核或要求重新生成。不要把所有失败都显示成“生成失败”。流水线还要记录成本。每个阶段消耗了多少模型调用、GPU 时间、存储空间和人工审核时间都应该能统计。音频生成如果没有成本账本很容易出现用户很喜欢、平台越用越亏的情况。audio_cost_accounting: track_model_seconds: true track_storage_mb: true track_review_minutes: true五、总结AI 音频生成流水线要异步化拆分任务阶段支持进度展示、取消、重试、失败反馈和结果清理。生成过程越长越不能伪装成普通请求。异步任务设计好用户才愿意等。