python 声音基频f0_如何得到一个曲子的基频?

谢邀。第一次回答受邀的题目,有些激动,也有些仓促,可能有些小毛病,也可能是别的问题的答案,没有做引用,如有发现,请告诉我处理。

题主应该是4个大的问题。

第一个问题是标题,获取曲子的基频。但是觉得这个问题太泛了。

基本频率(或简称基频,fundamental frequency),当发声体由于振动而发出声音时,声音一般可以分解为许多单纯的正弦波,也就是说所有的自然声音基本都是由许多频率不同的正弦波组成的,其中频率最低的正弦波即为基音,而其他频率较高的正弦波则为泛音。

一个曲子就算是只有一种乐器,随着震动的方式不断变化,基频也就是不断变化的,因此基频是与时间对应的。如果是多种乐器再加上人声,它们的基频都是不一样的,表现的结果就是混在一起了。如果你只是想知道基频的数值,可以使用Adobe Audition软件,以前叫Cool Edit。导入音频文件后,观察波形下方的时频图,颜色越亮表示对应频率在这个时刻的成分越多。下图是,我从网上下载的立体声,44.1k采样率,320k比特率的《爱的祝贺》小提琴独奏的单声道节选。观察图的频率轴,其中从左图可以看到亮线呈有规律出现,就是共振峰了,右图是频率轴放大的结果,在1kHz以下有一大片亮的,其实不是很明显能找到基频,但基频就是200Hz到400Hz之间了。

如果想精确找到,可以用Matlab对音频做分帧处理,再加窗,然后做fft,fft点数应与帧长一样,通过Matlab内建的findpeaks函数

你可能感兴趣的:(python,声音基频f0)