我成功地使用了ml5的基音检测特性:
这一问题:
没有检测到高于±2000 is的基音。我尝试了多种设备,并检查声音是否可以在声像图上看到,所以它似乎不是麦克风问题。
我认为这可能是由于库所做的采样率限制/重采样的结果,因为Nyquist频率(最大“可记录”频率)是抽样率的一半。
我本地托管了ml5源代码,并尝试修改PitchDetection类
在那里,我看到采样率似乎被重调到1024赫兹,因为性能原因。这听起来不对,虽然我似乎没有弄错,这将只允许检测频率高达512小时。我肯定是错过了什么东西(或很多)。
我试着修改费率,但是增加到2048年会导致一个错误:Error when checking : expected crepe_input to have shape [null,1024] but got array with shape [1,2048].
我的问题是:
ml5 PitchDetection类 I中有什么东西可以修改、配置(也许是另一种模型)来使用绉模型检测高于2000 to的频率吗?
发布于 2021-01-27 04:49:12
经过更多的研究后,结果表明,绉模型本身支持高达~1997 Hz (代码中见)或1975.5 Hz(见论文中)。
关于绉:https://arxiv.org/abs/1802.06182的论文
各国:
360个音高值表示为c1,c2.,360个音高,因此它们覆盖了C1和B7之间间隔20美分的6个八度音阶,对应于32.70Hz和1975.5 Hz。
JS实施有这样的映射,它将360个间隔映射到0-1997Hz范围:
const cent_mapping = tf.add(tf.linspace(0, 7180, 360), tf.tensor(1997.3794084376191))
这意味着,如果不能重新培训这个模型,我现在可能就不太走运了。
编辑:
在睡了一个好觉之后,我找到了一个简单的解决方案,适用于我的简单应用程序。
在它的本质上,它是重采样我的音频缓冲区,所以它有2倍的低音高。折皱比检测到的音高440赫兹为220赫兹,我只需要乘以2。
对于我的实时、噪声应用,结果仍然比尹算法更一致。
https://stackoverflow.com/questions/65898843
复制相似问题