面向公开用户的 AI 旋律续写与乐谱生成工作台。
MuseMelody 是一个帮助用户基于已有旋律继续创作的网站。
用户可以从乐谱、MIDI、MusicXML、图片或文字描述出发,生成新的旋律片段、和声建议与试听结果,并在同一界面里完成输入、生成、试听和导出。
很多音乐创作并不是从空白页开始,而是从一段已经存在的旋律继续发展。
MuseMelody 当前主要服务这类场景:
- 给一段已有旋律继续往下写
- 为现有主题寻找新的发展方向
- 快速比较不同版本的旋律走向
- 在网页里直接试听、调整与导出结果
当前线上版本已经具备完整的产品流程:
-
输入旋律 支持乐谱图片、键盘录入、预设旋律或文字描述。
-
调整参数 支持设置风格、音色、速度与生成长度。
-
生成结果 返回新的旋律片段、和声建议与节奏信息。
-
试听与导出 支持试听原旋律、生成旋律、合并结果,并导出 MIDI 文件。
-
图片识别接入 当前站点已接入兼容 OpenAI API 的图片识别链路,并支持钢琴大谱表提示、
staves + notes双结构返回,以及回退占位流程。
- 旋律续写与即兴生成
- 和声方向建议
- 乐谱图片输入识别、双谱表结构输出与回退占位流程
- 网页内即时试听
- MIDI 导出
- 首页内嵌成熟工作台体验
- 品牌化首页、站内 logo 与浏览器标签页图标
flowchart LR
A[输入或上传旋律] --> B[调整风格与参数]
B --> C[生成新的旋律延展]
C --> D[查看和声与旋律结果]
D --> E[试听与比较]
E --> F[导出 MIDI 或继续生成]
flowchart TB
U[用户] --> H[产品首页]
H --> S[内嵌服务工作台]
S --> P[图片解析接口]
S --> G[旋律生成接口]
S --> M[MIDI 导出接口]
P --> F[Cloudflare Functions]
G --> F
M --> F
public/
index.html 产品首页
styles.css 首页样式
studio/ 内嵌服务的构建产物
functions/
api/
score/parse.js 乐谱图片解析接口
improv/generate.js 旋律生成接口
midi/export.js MIDI 导出接口
studio-source/
frontend/ 成熟服务前端源码(Vite + React)
backend/ 原始 Python/FastAPI 参考实现
scripts/
build-studio.mjs 构建服务并注入首页的脚本
- studio-source/frontend/src/InspirationMuse.jsx
- studio-source/frontend/src/App.jsx
- studio-source/frontend/src/embed.jsx
- studio-source/frontend/vite.config.js
- functions/api/score/parse.js
- functions/api/score/temp/upload.js
- functions/api/score/temp/[token].js
- functions/api/improv/generate.js
- functions/api/midi/export.js
其中 score/parse 现在支持:
score_type提示参数staves + notes双结构返回- 顶层
notes的向后兼容
npm installcd studio-source/frontend
npm installcd ../../..
npm run build:studionpm run dev当前项目适合部署到 Cloudflare Pages。
推荐配置:
- Framework preset:
None - Build command: 留空
- Build output directory:
public
当你更新 studio-source/frontend/ 中的成熟服务源码后,请先执行:
npm run build:studio这样首页内嵌的服务脚本才会同步更新。
当前线上版本使用:
- Cloudflare Pages 静态前端
- Cloudflare Pages Functions API
- 嵌入首页的成熟服务构建产物
- 兼容 OpenAI API 的图片识别接入方式
- 统一的站内 logo 品牌展示与 favicon 配置
仓库中的 studio-source/backend 保留了原始 Python/FastAPI 参考实现。
当前图片识别流程已经支持:
- 通过环境变量配置
OPENAI_API_KEY - 通过环境变量配置兼容端点
OPENAI_BASE_URL - 通过环境变量配置模型名
OPENAI_MODEL - 通过
score_type提示引导钢琴大谱表识别 - 返回
treble / bass双谱表结构(当识别成功时) - 在识别失败时自动回退到占位识别流程
当前用户界面已经进一步整理为:
- 不向公开用户暴露调试/排障反馈文本
- 首页与内嵌工作台统一使用站内 logo
- 浏览器标签页使用
logo.png作为图标
后续可以继续增强的方向包括:
- 接入真实 OMR 乐谱识别模型
- 接入更真实的旋律生成推理服务
- 增加生成历史与版本比较
- 增强导出、播放和状态反馈
- 增加用户系统与作品保存能力
本仓库并非开源软件仓库。
请参见: