首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >快速频率测量

快速频率测量
EN

Stack Overflow用户
提问于 2015-11-12 08:38:22
回答 1查看 582关注 0票数 0

当音乐家演奏音乐时,我需要测量信号频率,而对于FFT (快速傅里叶变换)来说,信号频率太快了。

音乐家们以每分钟90至140分钟的速度演奏音乐。这意味着每分钟有90-140组音符,每组最多有8个(更频繁,最多4个)音符(60/140/8 = 0.0536秒,60/90/4 = 0.167秒),也就是说,音符可能以每秒6-19个音符的速度变化。

音乐使用对数音阶:例如,440赫兹和880赫兹之间的范围分为12个音符,其中只有7个用于旋律。(基本上,他们只使用钢琴上的白键;当他们想改变开始频率时,他们使用一些黑色的键,而不使用一些白色的键。)也就是说,下一个音符的频率乘以2^(1/12) = 1.05946。

为了使事情更复杂,A (La)频率可能在438到446赫兹之间变化。弦乐器在理论上是可以调谐的,而风琴则取决于空气的温度和湿度,所以在声音检查过程中,乐器的频率碰巧是由音乐家重新协商的。

有时音乐家和歌唱家在频率上会出错,他们称之为“不合调”。他们想要一种装置,让他们知道这样的“调调错误”。他们有调谐器,但调谐器需要播放相同的声音大约1秒后,他们才开始显示任何东西。这种方法适用于调谐,但在播放音乐时不起作用。

最有可能的是,调谐器正在执行FFT,并且由于公式

代码语言:javascript
运行
复制
df = 1/T

等待1秒才能获得1Hz分辨率。

对于A=440Hz来说,两个音符之间的频率差异是440*0.05946 =26.16Hz,要获得这个频率分辨率,必须使用0.038秒的捕获时间,也就是说,在tempo=196bpm FFT中,它只能够分辨出两个音符,在98 bpm时,它能够分辨出50%的脱调误差,前提是它在音高变化的那一刻就开始捕获。如果我们允许在一个收购过程中的音高变化,我们得到49次每分钟,这是太慢。此外,更精确的频率是非常可取的,比如说,检测出25%的不调误差。

是否有一种比快速傅立叶变换更好的频率测量方法,即在较短的捕获时间内具有更好的分辨率?(至少2倍,理想情况下,8倍)。作为交换,我不需要区分不同八度音阶的音符,例如440和880可能被识别为A (很可能,更多的权衡是可能的,只是我现在没有想到其他的东西)。

UPD这里有一幅非常好的画:

UPD2

我找到了一个PhD论文和开源软件(TARTINI -实时音乐分析工具):

http://miracle.otago.ac.nz/tartini/

(这些页面也可以通过web存档服务获得:http://web.archive.org = http://archive.org = http://waybackmachine.org )

EN

回答 1

Stack Overflow用户

发布于 2015-11-12 18:00:41

对于FFT,假设窄带频谱频率含量稀疏,且在足够低的背景噪声下分离良好,则可以对频率峰进行插值或相位语音编码,使其比FFT bin间隔(与实际时域数据段长度的倒数有关的bin间距)高得多。抛物线插值是常见的,但还有其他更精确的插值核。相位声码器频率估计方法要求在两个重叠帧之间具有平稳性,但这两个帧的总跨度相对较短。

但FFT所报告的峰值频谱频率与人类感知的基音频率并不相同(因为声音和许多乐器在泛音序列中可以发出比音调频率更多的声波频谱能量,有时还会稍微不和谐)。有比FFT(单独)更适合于基音估计的算法。答案中有一个部分列表:在iPhone上进行快速傅里叶变换以忽略背景噪声并找到较低的音高

许多关于音乐音高估计方法的学术论文都可以在首页网站上找到。

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

https://stackoverflow.com/questions/33667275

复制
相关文章

相似问题

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