java 判断汉字音调_多音调检测:FFT还是其他?

你需要先了解什么'音调_474795的谐波将从261.6赫兹开始作为基频,523赫兹将是第二谐波,785赫兹将是第三谐波,1046赫兹将是第四谐波等 . 后来的谐波是基频的整数倍,261.6Hz(例如:2×261.6 = 523,3×261.6 = 785,4×261.6 = 1046) .

下面,在GitHub.com上,我设计了一个不寻常的两阶段算法的C源代码,它可以在Windows上播放时对复音MP3文件进行实时音高检测 . 这种免费应用程序(PitchScope Player,可在网上获得)经常用于在MP3录制时检测吉他或萨克斯独奏的音符 . 您可以下载Windows的可执行文件,以便在您选择的mp3文件上查看我的算法 . 该算法被设计成在MP3或WAV音乐文件中的任何给定时刻检测最主要的音调(音符) . 通过在MP3录制期间的任何给定时刻的最主要音高(音符)的变化来准确地推断音符开始 .

我使用改进的DFT对数变换(类似于FFT)来首先通过查找具有峰值电平的频率来检测这些可能的谐波(参见下图) . 由于我为修改后的Log DFT收集数据的方式,我不必对信号应用窗口函数,也不必添加和重叠 . 我创建了DFT,因此其频率通道以对数方式定位,以便直接与吉他,萨克斯管等音符创建谐波的频率对齐 .

我的音高检测算法实际上是一个两阶段过程:a)首先检测ScalePitch('ScalePitch'有12个可能的音高值:{E,F,F#,G,G#,A,A#,B,C,C#,D ,D#})b)并且在确定ScalePitch之后,通过检查4种可能的Octave-Candidate音符的所有谐波来计算Octave . 该算法旨在检测复音MP3文件中任何给定时刻的最主要音高(音符) . 这通常对应于乐器独奏的音符 . 那些对我的Two Stage Pitch Detection算法的C源代码感兴趣的人可能想要从GitHub.com的SPitchCalc.cpp文件中的Estimate_ScalePitch()函数开始 .

bb8a3666-2b98-495e-b7a3-344776d0a8d6.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值