R 自相关法基音计算误差 目标:音高计算
问题:计算的节距与预期节距不匹配。例如,输出约为“D3”,但预期输出为“C5”R 自相关法基音计算误差 目标:音高计算,r,audio,signal-processing,pitch,R,Audio,Signal Processing,Pitch,问题:计算的节距与预期节距不匹配。例如,输出约为“D3”,但预期输出为“C5” 声源: 源代码 输出 整个计算在时域中执行。 我目前正在使用自相关作为基础,以了解更多有关基音检测和分析的信息。我试着用“Audacity”分析样本,结果是“C5”。因此,我想知道问题到底在哪里。 你们能帮我找到它吗 此外,还有一些重要的疑问: 我的分析窗口实际应该有多小(20ms,1s,…) 使用AMDF和其他类似算法增强自相关算法是否会使该基音检测模块更加健壮 整个分析似乎都不正确。在时域分析中不应使用窗口 附
整个分析似乎都不正确。在时域分析中不应使用窗口 附上python语言的简短解决方案;您可以将其用作伪代码
from soundfile import read
from glob import glob
from scipy.signal import correlate, find_peaks
from matplotlib.pyplot import plot, show, xlim, title, xlabel
import numpy as np
%matplotlib inline
name = glob('*wav')[0]
samples, fs = read(name)
corr = correlate(samples, samples)
corr = corr[corr.size / 2:]
time = np.arange(corr.size) / float(fs)
ind = find_peaks(corr[time < 0.002])[0]
plot(time, corr)
plot(time[ind], corr[ind], '*')
xlim([0, 0.005])
title('Frequency = {} Hz'.format(1 / time[ind][0]))
xlabel('Time [Sec]')
show()
从声音文件导入读取
从全局导入全局
从scipy.signal import correlate中,找到_峰值
从matplotlib.pyplot导入绘图、显示、xlim、标题、xlabel
将numpy作为np导入
%matplotlib内联
name=glob('*wav')[0]
样本,fs=read(名称)
corr=相关(样本,样本)
corr=corr[corr.size/2:]
时间=np.arange(校正尺寸)/浮动(fs)
ind=找到峰值(校正[时间<0.002])[0]
绘图(时间,corr)
绘图(时间[ind],更正[ind],“*”)
xlim([0,0.005])
标题('Frequency={}Hz'。格式(1/次[ind][0]))
xlabel('时间[秒]')
show()
> print(min_index)
[1] 37
> fs = 44100
> fo = fs/min_index
> print(fo)
[1] 1191.892
> print(notenames(noteFromFF(fo)))
[1] "d'''"
from soundfile import read
from glob import glob
from scipy.signal import correlate, find_peaks
from matplotlib.pyplot import plot, show, xlim, title, xlabel
import numpy as np
%matplotlib inline
name = glob('*wav')[0]
samples, fs = read(name)
corr = correlate(samples, samples)
corr = corr[corr.size / 2:]
time = np.arange(corr.size) / float(fs)
ind = find_peaks(corr[time < 0.002])[0]
plot(time, corr)
plot(time[ind], corr[ind], '*')
xlim([0, 0.005])
title('Frequency = {} Hz'.format(1 / time[ind][0]))
xlabel('Time [Sec]')
show()