这个项目能做什么

Oh Sheet! 是一个开源流程,可将歌曲转换为双手钢琴乐谱。用户可以粘贴YouTube URL、上传MP3/WAV音频或提供MIDI文件,系统会返回PDF乐谱、MusicXML和人性化的MIDI。 后端使用Python和FastAPI构建。它使用yt-dlp进行音频摄取,Demucs用于可选的音轨分离,Spotify的Basic Pitch用于音频到MIDI的转录。自定义编曲阶段将旋律分配给右手,低音/和声分配给左手。人性化阶段添加微时序、力度动态、踏板标记和演奏法。排版默认使用进程内music21和LilyPond流程生成MusicXML和PDF;可选远程HTTP排版服务可作为后备。 前端是一个Flutter应用,带有由OpenSheetMusicDisplay (OSMD)和Tone.js播放驱动的交互式乐谱查看器。它还包括一个基于画布的自定义钢琴卷帘,带有颜色编码的双手和节拍同步的节拍网格。WebSocket事件流式传输流程进度,并为每个阶段提供吉祥物动画。 该项目提供REST API,用于上传音频或MIDI、提交任务、轮询状态、流式传输实时事件和下载产物。还提供各阶段的工作节点端点,供外部编排使用。部署支持通过Docker Compose进行,仓库包含CI工作流、离线转录评估工具,以及与TuneChat协作音乐学习平台的集成。