由于缺乏声誉,我无法发表评论,并在此回复作为答案。
一般来说,这是一个极其困难的问题,因为仪器种类繁多,而且它们的变化很大。一个相关的问题是使用按键的声学测量来识别在键盘上按下的按键,这里已经尝试了混合结果。该问题最稳健的解决方案本质上是为每个键创建匹配过滤器,这是通过单独记录每个键或使用一些不包含同时击键的已知训练集来执行的。当尝试检测未包含在训练数据中的不同键盘上的键时,此解决方案通常会失败。
要将其等同于您的问题,这就像记录您要检测的每种乐器的每个音符并与之匹配过滤。主要区别在于,在音乐中,多个乐器可能同时演奏,并且可能一次演奏多个音符(即和弦)。为了克服这个问题,可以在频域中执行匹配滤波器,而不是使用短时傅里叶变换,并允许滤波器中的公共和弦。然而,每台仪器都有其独特的谐波响应,这使得将您的检测推广到您没有训练过的仪器具有挑战性。如果您试图检测训练数据之外的仪器,
假设您能够让频域匹配滤波器相对一致地工作,您几乎肯定会遇到大量误报。为了改善这一点,您可以实现一个概率模型,该模型仅在仪器在某个窗口内的给定时间百分比内存在时才宣布检测。
正如其他人所提到的,许多其他人已经尝试过这种方法,但成功有限,我相信其他人之前也尝试过实施上述方法。但是,如果你只是想检测你用最简单的音乐训练过的乐器,你可能会取得一些合理的成功。到那时,机器学习甚至可能有机会。