【问题标题】:Pitch detection results wrong音高检测结果错误
【发布时间】:2017-05-08 20:09:23
【问题描述】:

我正在使用来自here 的freq_from_crossings(我没有更改代码)。我的输入是 audio file,带有原声吉他 E2 音符,没有其他内容(因为我的麦克风很糟糕,声音不是很清晰)。

这是波形:

这是我得到的频谱图:

从频谱图中可以清楚地看出,最响亮的谐波对应于 E2 音符。但是,freq_from_crossings 返回 415.461966359,这根本不是播放的音高。哪些组件可能出错了?

谢谢

【问题讨论】:

    标签: python signals signal-processing pitch-tracking


    【解决方案1】:

    不是单个纯正弦波的波形在每个音调周期中的过零次数可能多于一次。在一个时期内,它可以包括许多过零的“摆动”。吉他音符频谱图的谐波内容表明,总波形远非单一的纯正弦波。它也会随着时间而改变。

    因此,从零交叉估计音高频率不适用于这些类型的吉他声音。

    【讨论】:

    • 我明白了。你觉得freq_from_fft会更好吗?
    【解决方案2】:

    根据我的经验,过零和自相关是尝试音高检测的糟糕方法——即使是单声道信号也是如此。考虑使用采用 FFT 或 DFT 变换的方法来获取初始频率活动。

    https://en.wikipedia.org/wiki/Transcription_(music)#Pitch_detection

    https://github.com/CreativeDetectors/PitchScope_Player

    【讨论】:

      猜你喜欢
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      相关资源
      最近更新 更多