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

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

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

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

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

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

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

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

第三问题是第二段。

我个人感觉,对整一段音频做傅里叶变换其实没有多大意义。一般是将音频截成一小段一小段处理,也是就是分帧了,帧长是2的n次方,再加窗处理防止频谱泄露,在做短时傅里叶变化。将幅频图纵向放置,在按照时间顺序排列就是幅频图,如下图。这些详细介绍也是数字信号处理或者音频信号处理的书就能找到。或者wikipedia.org 的短时傅里叶变换的页面

第四问题是第三段。

题主所说的音高不变,可以某程度理解为振动系统的震动形式没有变化而且是稳定的,这是的傅里叶变换的结果在一些条件下是跟人的听感是对应的。但人体的听觉系统是一套复杂的系统,有骨头负责阻抗匹配,有耳蜗将物理震动转化为神经电信号,有大脑特定功能区组成的听觉感知。随意会产生很多有趣的形象,题主可以找找语音信号处理或音频信号处理的书,前面有些书是有介绍听觉系统的。

最后,基频是不是就是频谱图中最低的那个频率,这个问题。如果录音室在噪声很小,信噪比好,录音设备良好的地方,回答:频谱中对应峰值最高的频率是基频。如果存在噪声干扰严重或者设备有问题,就要具体分析了。

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

  1. Python声音处理入门

    Python声音处理入门 注:本文加入了译者的理解,并非严谨的译作,仅供参考. 原文Basic Sound Processing with Python描述了怎样在Python中通过pylab接口对声 ...

  2. 通过python各种开源库,开发一个适合大部分公司测试项目框架,确定名字AutoTestProjects

    通过python各种开源库,开发一个适合大部分公司测试项目框架,确定名字AutoTestProjects 一,简介 1.目前市场上的框架一般都需要码农进行编写,对测试小白非常的不友好,而且现在整个IT ...

  3. python 获取集合里面的某一个元素

    python 获取集合里面的某一个元素,想想呢集合是不支持所以,切片,相加,相乘操作的, 所以想获取集合里面的某一个元素需要转化下思路,比如把即可转成列表然后在利用索引获取 例如: list_a = ...

  4. python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...

    原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...

  5. python新手小项目-推荐:一个适合于Python新手的入门练手项目

    随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...

  6. python从入门到精通怎么样-Python 从入门到精通:一个月就够了

    毫无疑问,Python 是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握 Python 看似是一件十分困难的事.其实,只要掌握了科学的学习方法并制定了合理的学习计划, ...

  7. python自学时间-Python 从入门到精通:一个月就够了!

    原标题:Python 从入门到精通:一个月就够了! 毫无疑问,Python 是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握 Python 看似是一件十分困难的事.其 ...

  8. python导入其他py文件-Python中py文件引用另一个py文件变量的方法

    最近自己初学Python,在编程是遇到一个问题就是,怎样在一个py文件中使用另一个py文件中变量,问题如下: demo1代码 import requests r = requests.get(&quo ...

  9. Python基础入门教程:使用 Python 3 协程快速获得一个代理池

    Python基础入门教程:使用 Python 3 协程快速获得一个代理池 前言 在执行 IO 密集型任务的时候,程序会因为等待 IO 而阻塞.比如我们使用 requests 库来进行网络爬虫请求的话, ...

最新文章

  1. python图像配准的原理_python利用sift和surf进行图像配准
  2. linux查找技巧: find grep xargs linux系统信息查看大全
  3. 《系统集成项目管理工程师》必背100个知识点-61识别干系人分析的步骤
  4. 在用户离开页面(刷新、后退、关闭等)时提示信息
  5. cacheinterceptor第二次访问没被调用_访问者设计模式在OSG中的应用
  6. linux服务器组件有哪些,推荐几个linux服务器面板
  7. c语言实现链表结构6,用c语言实现的链表结构--数据结构实验
  8. iOS6,7,8,9新特性汇总
  9. javascript小技巧 JavaScript[对象.属性]集锦 [zz]
  10. POJ 2115C Looooops[一元线性同余方程]
  11. 资源 | 一网打尽成语歇后语,GitHub新华字典数据库
  12. Eclipse与SQL Server 2005 连接
  13. java链接ev3_乐高机器人ev3 usb连接电脑方法lejos
  14. CUE 文件及其格式说明
  15. 求二维数组每行元素之和
  16. maya Xgen导入UE4中,UE4毛发动力学
  17. PPT如何保存高分辨率高清jpg图片, 三种简单方法,无需其他软件辅助
  18. echarts图表x,y轴的设置
  19. 面试题之Bug的生命周期
  20. ArcGIS分级显示

热门文章

  1. 简单Java的商品模块功能
  2. 阿里云服务器ECS windows server已开放端口但连不上的问题
  3. 【超详细附参考】阿里云部署spring项目基本流程详解及踩坑经验
  4. Android网络通信(一)
  5. 运营MM又来求我发软文了......
  6. 【连载】线性代数笔记——第二章矩阵2
  7. Android 利用V4L2 调用camera
  8. python中pd series_pd.Series的基本操作
  9. python中的pd是什么意思_python中pd的用法 python中列表的用法
  10. 台式计算机怎么加一个硬盘,如何给台式机添加硬盘?给电脑添加硬盘的方法