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

本文探讨了如何获取音乐的基频,强调基频随时间变化且与时间对应的特性。建议使用Adobe Audition或通过Matlab进行分帧处理来估算基频。此外,解释了电信号与真实波形的关系,以及短时傅里叶变换在音频处理中的应用。对于音高感知,指出傅里叶变换与人类听觉系统的复杂关系,并提及在不同条件下的基频判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

如果想精确找到,可以用Matlab对音频做分帧处理,再加窗,然后做fft,fft点数应与帧长一样,通过Matlab内建的findpeaks函数再换算就可得到基频频率值了,或者用Matlab画出语谱图也能看到和Audition类似的结果。

第二问题是第一段,电信号与真实波形的关系。

我猜测题主这里的电信号应该指数字信号。要变成数字信号是有个过程的,依次是:捡拾信号、采样、量化。只要采样率是满足采样定理的数据信号,都能还原成原始模拟信号,但是其中数字信号的精度问题,就要提高采样率、量化的精度。这些详细介绍随便一本数字信号处理的书就能找到。

第三问题是第二段。

我个人感觉,对整一段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值