首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的笔记检测算法在少数情况下失败了吗?

我的笔记检测算法在少数情况下失败了吗?
EN

Stack Overflow用户
提问于 2018-11-14 11:52:07
回答 2查看 644关注 0票数 2

我正在使用一种简单的方法来找出在python步骤中使用FFT的音乐音符:

  1. 读取声音文件(.wave)
  2. 检测文件中的静默(通过计算位于窗口内的输入平方元素的平方和)
  3. 使用从(2)获取的数据检测便笺的位置
  4. 用DFT计算每个检测到的音符的频率
  5. 将计算的频率与音符的标准频率相匹配,以识别正在播放的音符。

但是当音符应该是A4/440 Hz时,我得到了一个巨大的变化(2KHz),在我的方法中有什么基本的错误吗?

更新:我如何将我的audio.wav文件传递给这个频率估计器

完整的python代码是这里

代码语言:javascript
运行
复制
window_size = 2000    # Size of window to be used for detecting silence
beta = 1   # Silence detection parameter
max_notes = 100    # Maximum number of notes in file, for efficiency
sampling_freq = 44100   # Sampling frequency of audio signal
threshold = 200


 # traversing sound_square array with a fixed window_size
while(i<=len(sound_square)-window_size):
    s = 0.0
    j = 0
    while(j<=window_size):
        s = s + sound_square[i+j]
        j = j + 1   
        # detecting the silence waves
    if s < threshold:
        if(i-k>window_size*4):
            dft = np.array(dft) # applying fourier transform function
            dft = np.fft.fft(sound[k:i])
            dft = np.argsort(dft)

            if(dft[0]>dft[-1] and dft[1]>dft[-1]):
                i_max = dft[-1]
            elif(dft[1]>dft[0] and dft[-1]>dft[0]):
                i_max = dft[0]
            else :  
                i_max = dft[1]
                        # claculating frequency             
            frequency.append((i_max*sampling_freq)/(i-k))
            dft = []
            k = i+1
    i = i + window_size
EN

回答 2

Stack Overflow用户

发布于 2018-11-16 16:33:39

基音与FFT的峰值频域不一样。基音是人类的一种心理声学现象。音高可能有一个缺失或非常微弱的基本音(在一些声音,钢琴和吉他声音中常见)和/或在其频谱中的许多强大的暗示,压倒音高的频率(但仍然听到的音高音符,由一个人)。因此,任何FFT峰值频率检测器(甚至包括一些加窗和插值,而你的代码没有)将不是一个稳健的方法,音乐音高估计。FFT还会将频率量化到取决于FFT (或窗口)长度的二进制分辨率(可能比您的要求更粗)。

对这种堆叠溢出问题的回答包括一些估计音调的替代方法的列表,这些方法可能会产生更好的结果。

票数 1
EN

Stack Overflow用户

发布于 2018-12-02 02:16:38

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53299627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档