鉴于周期性信号(例如方波)的时变混合之和的历史,您将如何有效地估计在特定时间活动的组件的数量和频率?分量的幅度和频率是任意但固定的实数;如果一个组件在某个时刻处于活动状态,如果它再次处于活动状态,它将保持其幅度和频率。
非正弦周期信号的时频分析
让我们从无监督方法开始......
第一种方法是计算频谱图并使用 NMF(非负矩阵分解)对其进行分解。如果您不熟悉这种技术,它会将频谱图分解为个恒定频谱源的总和,每个源都应用了一个随时间变化的幅度包络。该模型非常适合您的问题,并且很有可能分解的列将是每个波形/频率对的频谱(您可以从中通过频谱和或将其转回自相关函数来估计基频),行将是激活信号。那里有很多实现,把你的问题扔给它很便宜,很有可能它会起作用。
请注意,NMF 的基础模型比您的信号模型限制更少......
首先,因为你的激活包络要么是 0 要么是 1。我过去没有处理过这样的约束,但是可能有一种方法可以定义对不同于 0 和 1的项的惩罚措施,并补充说到优化的标准并推导出一组新的乘法更新方程。您的评论中未提及的一个约束是,您可能还假设源没有快速“闪烁”进出,并且在相当长的连续帧数内保持活动/非活动状态。可以将约束添加到 NMF 以惩罚不连续的激活包络。请参阅Virtanen 关于连续性约束的论文。
您的问题的第二个特殊性是您可能希望假设所有源都具有相同的波形,也就是说,所有源都具有相同的对数频谱,以平移为模。为了解决这种特殊性,推荐的技术是在输入数据(具有右移位不变性)上计算恒定 Q 谱图,并使用一个目标源执行移位 NMF 。这将恢复所有来源共有的频谱;并且光谱偏移和时间激活矩阵将提供相当于为您的源光谱量身定制的光谱图。请参阅本文结果部分中的合成信号 - 这正是您描述的信号模型。这可能需要一些工作,但您也可以将此方法调整为更严格的信号模型,其中激活为 0 或 1。
现在转到监督方法。
如果预先知道候选波形集并且很小和/或它们可以出现的频率数量很小(例如,您想转录在 80 年代玩具键盘上播放的音乐),您可以负担匹配追踪。这会将您的信号与由所有搜索波形/频率对的窗口信号组成的脉冲响应相关联。计算成本可能很快使它成为一个糟糕的选择。
另一种监督方法是使用与 NMF 相同的乘法梯度更新,但保持包含光谱模板的矩阵 “锁定”。也就是说,您使用要探测的所有候选光谱构建矩阵 W,并执行乘法更新以将光谱图分解为激活矩阵 H 和 W 的乘积。同样,更新规则可调整以包含二进制激活约束. 请参阅 Bertin 关于钢琴转录的工作,它使用这种技术将频谱图分解为合成钢琴音符频谱图的总和(这里是一个好的开始)。这也被 Paulus 用于鼓转录- 使用鼓样本作为基础。