我正在使用here中的freq_from_crossings
(我没有更改代码)。我的输入是audio file,带有原声吉他E2音符,没有别的(因为我的麦克风非常糟糕,声音不是很清晰)。
这是波形:
从频谱图可以清楚地看出,最响亮的谐波对应于E2音符。但是,freq_from_crossings
返回415.461966359,这根本不是播放的音高。哪些组件可能出错?
由于
答案 0 :(得分:1)
不是单个纯正弦波的波形可以比每个基音周期具有更多的过零点。在一个时期内,它可以包括许多过零的“摆动”。吉他音谱图的谐波含量表明,总波形远不是单个纯正弦波。它也随着时间而变化。
因此,从过零点估算音高不会对这些类型的吉他声音起作用。
答案 1 :(得分:1)
根据我的经验,零交叉和自相关是尝试音调检测的可怕方法 - 即使在单声道信号上也是如此。考虑使用采用FFT或DFT变换来获取初始频率活动的方法。
https://en.wikipedia.org/wiki/Transcription_(music)#Pitch_detection