首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在基于绉模型的ml5基音检测中,如何检测出±2 2kHz以上的基音

在基于绉模型的ml5基音检测中,如何检测出±2 2kHz以上的基音
EN

Stack Overflow用户
提问于 2021-01-26 09:32:43
回答 1查看 312关注 0票数 0

我成功地使用了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的频率吗?

EN

回答 1

Stack Overflow用户

发布于 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。

对于我的实时、噪声应用,结果仍然比尹算法更一致。

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

https://stackoverflow.com/questions/65898843

复制
相关文章

相似问题

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