matlab求基频,语音频谱基频的提取

泛音列

所有谐波震荡中频率最小者称为基本频率(基频),而基频高低决定了乐器弹奏此音符的音高。几乎所有乐器除了可发出基频音以外亦会伴随着较高频的声音,称为泛音。

理论上,泛音的频率分别为基频的2、3、4、5、6、…等倍。

根据对不同音色的音频进行频域分析时发现. 不同的音色最大振幅对应的频率也会发生变化. 但是有一个固定的规律是最大振幅对应的频率不是基频就是泛音, 也就是说最大振幅对应的频率是基频的整数倍.

WZK的频谱图:

a474fadf68fc0fc9bd9ed05eee4a6a4d.png

HMD的频谱图:

5c86484f28ee1fc58eec2243fa6997a1.png

算法的目标是找到最大振幅对应的频率是基频的多少倍.

基频提取流程

从data(f)中找到最大振幅对应的频率frequency_max(此时 倍数 可能的取值为 1, 2, ..., frequency_max).

取步长step = frequency_max / i(i为猜测的倍数) 使data_sum(i) = sum(data(step : step : frequency_max)) * step.

令change(i) = data_sum(i) - data_sum(i + 1).

令change_sum(i) = change(i : i : leng


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部