Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 MATLAB-缺少FFT的基础知识

我目前正在从事四年级项目(计算机科学),该项目涉及音乐的自动转录->乐谱。目前,我正在Matlab中进行此操作,但在某个阶段必须将其转换为Java。

我的问题:我的程序返回的是纯正弦音的正确音符,现在从自然乐器演奏的音符中检索基本频率时遇到了问题。对于某些音符,代表音符基本面的峰值似乎完全消失了。例如,当我从车库乐队演奏G3音符时,它显示为G4,因为我的绘图中仅出现1次,3次,5次和7次谐波。我尝试添加图片,但是因为这是我的第一篇帖子,所以我不允许这样做。朝正确方向的任何指针将不胜感激。



回答:

这并不罕见。对于男性声音,大型弦乐器和许多其他音调音源,基本音缺失或几乎缺失是很常见的。

与正弦波函数生成器相反,这使得仅使用FFT峰值结果来确定实际乐器的音符非常困难。这是因为音调与峰值频谱频率不同。音调是一种心理声学的感知现象。这就是您需要继续阅读的内容。关于该主题有大量研究论文。

因此,您需要查看一套完全不同的算法。尝试进行倒谱(倒谱分析),谐波乘积谱,自相关和类似函数(AMDF,ASDF等滞后),RAPT(鲁棒性音高跟踪算法),YAAPT等。

添加:我在博客文章中对基音缺失的音调声音进行了更详细的说明



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 23:30


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.