You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除音频复音 从钢琴C大三和弦分离单音

钢琴C大三和弦(C-E-G)单音分离可行方案

针对固定三和弦拆分单音的需求,完全不需要自研神经网络,裸STFT直接硬切频段行不通本质是没处理好钢琴泛音重叠的问题,以下是按落地成本从低到高的可落地方向:

  • 零代码/少代码最快落地方案:使用预训练的钢琴音符级分离工具
    不用从零训模型,目前已经有大量训练成熟的轻量钢琴音符分离预训练模型,体积普遍在几十MB级别,CPU就能跑,几行代码或者直接用封装好的GUI工具就能处理:输入和弦音频后,工具会自动按MIDI音高把每个独立音高的音频拆成单独轨道,你只要找到对应C(MIDI 60,261.6Hz)、E(MIDI 64,329.6Hz)、G(MIDI 67,392.0Hz)的三个轨道直接导出即可,分离效果和Melodyne的单音拆分逻辑同源,泛音保留自然,不会有硬切带来的金属失真。如果只是处理单段短和弦,不需要跑全曲转录流程,截取1-2秒的和弦片段输入,几秒就能出结果。

  • 纯信号处理、完全不依赖机器学习的方案:谐波软掩膜STFT分离法
    之前裸STFT方案走不通很正常:如果直接按基频划硬阈值切频段,相当于把每个音的大部分泛音都砍掉,不仅出来的声音干瘪发闷,还会因为C/E/G三个音的泛音列存在大量重叠频点出现严重串音。正确的DSP处理逻辑是做软掩膜分离,步骤如下:

    1. 对输入音频做STFT得到二维时频谱,先精准定位三个音的基频峰值位置
    2. 为每个音单独生成分离掩膜:不只保留基频对应的频点,还要把该基频2、3、4……次整数倍泛音对应的频点全部纳入掩膜范围;对于多个音泛音重叠的频点,不要做0/1硬截断,而是按各音在该频点的能量占比分配权重,生成软掩膜
    3. 将每个音对应的软掩膜和原始时频谱逐点相乘,再通过逆STFT还原为时域音频,即可得到单独的C、E、G音文件
      这个方案完全不需要训练数据,纯传统信号处理逻辑就能实现,缺点是泛音重叠区的分离精度比预训练模型稍差,会有极少量串音,但满足输出单个单音文件的需求完全足够。
  • 接近Melodyne原生精度的方案:调用开源音高编辑类库
    目前有和Melodyne核心算法逻辑一致的开源音频音高编辑实现,会先把输入音频分解为按音高聚类的时频原子单元,你只需要选中对应C、E、G音高的单元,把其余音高的单元全部静音,直接导出就能得到干净度极高的单音文件,不需要自己写分离逻辑或者调试掩膜参数,处理效果和手动在Melodyne里删除其他音的结果基本一致。

避坑提示:不要用常规的人声/伴奏分离类模型处理这个任务,这类模型是按声源类别做分离的,无法拆分同属钢琴声源的不同音高成分。

内容的提问来源于stack exchange,提问作者jason green

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 17:27:27