python 声音基频f0_如何得到一个曲子的基频?
谢邀。第一次回答受邀的题目,有些激动,也有些仓促,可能有些小毛病,也可能是别的问题的答案,没有做引用,如有发现,请告诉我处理。
题主应该是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_如何得到一个曲子的基频?相关推荐
- Python声音处理入门
Python声音处理入门 注:本文加入了译者的理解,并非严谨的译作,仅供参考. 原文Basic Sound Processing with Python描述了怎样在Python中通过pylab接口对声 ...
- 通过python各种开源库,开发一个适合大部分公司测试项目框架,确定名字AutoTestProjects
通过python各种开源库,开发一个适合大部分公司测试项目框架,确定名字AutoTestProjects 一,简介 1.目前市场上的框架一般都需要码农进行编写,对测试小白非常的不友好,而且现在整个IT ...
- python 获取集合里面的某一个元素
python 获取集合里面的某一个元素,想想呢集合是不支持所以,切片,相加,相乘操作的, 所以想获取集合里面的某一个元素需要转化下思路,比如把即可转成列表然后在利用索引获取 例如: list_a = ...
- python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...
原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...
- python新手小项目-推荐:一个适合于Python新手的入门练手项目
随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...
- python从入门到精通怎么样-Python 从入门到精通:一个月就够了
毫无疑问,Python 是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握 Python 看似是一件十分困难的事.其实,只要掌握了科学的学习方法并制定了合理的学习计划, ...
- python自学时间-Python 从入门到精通:一个月就够了!
原标题:Python 从入门到精通:一个月就够了! 毫无疑问,Python 是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握 Python 看似是一件十分困难的事.其 ...
- python导入其他py文件-Python中py文件引用另一个py文件变量的方法
最近自己初学Python,在编程是遇到一个问题就是,怎样在一个py文件中使用另一个py文件中变量,问题如下: demo1代码 import requests r = requests.get(&quo ...
- Python基础入门教程:使用 Python 3 协程快速获得一个代理池
Python基础入门教程:使用 Python 3 协程快速获得一个代理池 前言 在执行 IO 密集型任务的时候,程序会因为等待 IO 而阻塞.比如我们使用 requests 库来进行网络爬虫请求的话, ...
最新文章
- python图像配准的原理_python利用sift和surf进行图像配准
- linux查找技巧: find grep xargs linux系统信息查看大全
- 《系统集成项目管理工程师》必背100个知识点-61识别干系人分析的步骤
- 在用户离开页面(刷新、后退、关闭等)时提示信息
- cacheinterceptor第二次访问没被调用_访问者设计模式在OSG中的应用
- linux服务器组件有哪些,推荐几个linux服务器面板
- c语言实现链表结构6,用c语言实现的链表结构--数据结构实验
- iOS6,7,8,9新特性汇总
- javascript小技巧 JavaScript[对象.属性]集锦 [zz]
- POJ 2115C Looooops[一元线性同余方程]
- 资源 | 一网打尽成语歇后语,GitHub新华字典数据库
- Eclipse与SQL Server 2005 连接
- java链接ev3_乐高机器人ev3 usb连接电脑方法lejos
- CUE 文件及其格式说明
- 求二维数组每行元素之和
- maya Xgen导入UE4中,UE4毛发动力学
- PPT如何保存高分辨率高清jpg图片, 三种简单方法,无需其他软件辅助
- echarts图表x,y轴的设置
- 面试题之Bug的生命周期
- ArcGIS分级显示
热门文章
- 简单Java的商品模块功能
- 阿里云服务器ECS windows server已开放端口但连不上的问题
- 【超详细附参考】阿里云部署spring项目基本流程详解及踩坑经验
- Android网络通信(一)
- 运营MM又来求我发软文了......
- 【连载】线性代数笔记——第二章矩阵2
- Android 利用V4L2 调用camera
- python中pd series_pd.Series的基本操作
- python中的pd是什么意思_python中pd的用法 python中列表的用法
- 台式计算机怎么加一个硬盘,如何给台式机添加硬盘?给电脑添加硬盘的方法