首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用Python创建音频文件的幅频谱图

用Python创建音频文件的幅频谱图
EN

Stack Overflow用户
提问于 2018-03-13 17:58:00
回答 2查看 2.5K关注 0票数 0

我试图在Python中创建一个音频文件的振幅和频率谱图。这样做的程序是什么?一些示例代码将有很大帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-14 16:51:15

简单谱

得到均匀采样信号x的幅频关系的最简单方法是通过有效的快速傅里叶变换算法计算其离散傅里叶变换。给定以常规采样速率采样的信号x ( fs ),您可以这样做:

代码语言:javascript
运行
AI代码解释
复制
import numpy as np
Xf_mag = np.abs(np.fft.fft(x))

然后,该index阵列的每个Xf_mag将包含由index * fs/len(Xf_mag)给出的频率宾的幅度。这些频率可以使用以下方法方便地计算:

代码语言:javascript
运行
AI代码解释
复制
freqs = np.fft.fftfreq(len(Xf_mag), d=1.0/fs)

最后,可以使用matplotlib绘制光谱:

代码语言:javascript
运行
AI代码解释
复制
import matplotlib.pyplot as plt
plt.plot(freqs, Xf_mag)

细化频谱估计

您可能会注意到,通过简单的FFT方法获得的频谱产生了一个非常有噪声的频谱(即。有很多尖峰)。要获得更准确的估计,更复杂的方法是使用诸如功率谱估计 (由scipy.signal.periodogram实现)和韦尔奇法 (由scipy.signal.welch实现)等技术来计算韦尔奇法。但是请注意,在这些情况下,计算的频谱与振幅的平方成正比,因此它的平方根提供了对均方根(RMS)振幅的估计。

回到以常规采样率采样的信号x ( fs ),这样就可以得到这样一个功率谱估计值,如从fs的文献中所描述的那样,如下所示:

代码语言:javascript
运行
AI代码解释
复制
f, Pxx = signal.periodogram(x, fs)
A_rms = np.sqrt(Pxx)

在此过程中还计算了相应的频率f,因此您可以用

代码语言:javascript
运行
AI代码解释
复制
plt.plot(f, A_rms)

使用scipy.signal.welch是非常相似的,但使用的实现略有不同,它提供了不同的精度/分辨率折衷。

票数 3
EN

Stack Overflow用户

发布于 2018-03-13 18:06:45

代码语言:javascript
运行
AI代码解释
复制
from scipy import signal
import matplotlib.pyplot as plt
fs = 10e3
N = 1e5
amp = 2 * np.sqrt(2)
noise_power = 0.01 * fs / 2  
time = np.arange(N) / float(fs)
mod = 500*np.cos(2*np.pi*0.25*time)
carrier = amp * np.sin(2*np.pi*3e3*time + mod)
noise = np.random.normal(scale=np.sqrt(noise_power), size=time.shape)
noise *= np.exp(-time/5)
x = carrier + noise
f, t, Sxx = signal.spectrogram(x, fs)
plt.pcolormesh(t, f, Sxx)
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()

这是从枕木文档中提取出来的,因为你需要科学计算来创建一个谱图。如果尚未安装,请将其安装在计算机上,并阅读其文档:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.spectrogram.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49268647

复制
相关文章
[C++模版] 判断函数入参是不是一个lambda
https://lewissbaker.github.io/2022/08/27/understanding-the-compiler-transform#introduction
望天
2023/02/23
3.3K0
oracle 不是单组分组函数 查询条数,oracle不是单组分组函数 不是单组分组函数怎么解决…
这种错误报告通常使用聚合函数,如count和sum,但不使用groupby来声明分组模式。
全栈程序员站长
2022/09/07
2.8K0
TypeError: object()
对于上面这个错误,很容易迷惑我们,因为这个错误信息没有很明确的指出,到底是哪段代码除了问题。那这个错误是怎么产生的了,请听我细细道来。
py3study
2020/01/06
1.1K0
Python报错TypeError: '<' not supported between instances of 'str' and 'int'
分析:input()返回的数据类型是str,不能直接和整数进行比较,必须先把str换成整数,使用int()方法
BH8ANK
2021/01/28
5K0
不是单组分组函数
大家好,又见面了,我是你们的朋友全栈君。问题: 一: SELECT tablespace_name, SUM(bytes) free FROM dba_free_space 不是单组分组函数 原因: 1、如果程序中使用了分组函数,则有两种情况可以使用: 程序中存在 group by ,并指定了分组条件,这样可以将分组条件一起查询出来 改为: SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name ; 如果不使用分组的活,则只能单独使用分组函数 改为: SELECT SUM(bytes) free FROM dba_free_space ; 2、在使用分组函数的时候,不能出现分组条件之外的字段 总结:在 select 需要查询的语句中选中的字段,必须出现在 group by 子句中
全栈程序员站长
2022/09/07
2.5K0
python:TypeError: mu
 今天遇到这个错误: Traceback (most recent call last):   File "t2.py", line 14, in <module>     print Derived().meth()   File "t2.py", line 10, in meth     super(Derived,self).meth() TypeError: must be type, not classobj 试验代码如下: class Base():     def meth(self):   
py3study
2020/01/07
6120
TypeError: Network request failed
在使用react-native 进行网络请求时,报了这样的一个错误TypeError: Network request failed, 在检查自己代码没有错误的情况下,去设置一个xCode便可以走通,
杭州前端工程师
2018/06/15
3.3K0
面试官:为什么data属性是一个函数而不是一个对象?
在我们定义好一个组件的时候,vue最终都会通过Vue.extend()构成组件实例
@超人
2021/02/26
3.2K0
面试官:为什么data属性是一个函数而不是一个对象?
python3 TypeError: a
运行telnetlib的时候报错:TypeError: a bytes-like object is required, not ‘str’,原因是因为python2和python3的版本的差异。 在python2中可正常运行,而python3最重要的新特性也是对文本和二进制数据做了更清晰的区分。文本用unicode编码,为str类型,二进制数据则为bytes类型。
py3study
2020/01/03
1.1K0
统计函数与通配符相爱,不是意外!
首插入音乐,功放党请慎点。 海鸟跟鱼相爱,只是一场意外! 但是统计函数和通配符相爱,却是一种必然! 统计函数何许人也:Sumif、Countif、AverageIf、Sumifs、Countifs、A
用户1332619
2018/03/08
2.7K0
统计函数与通配符相爱,不是意外!
Python迭代DataLoader时出现TypeError: Caught TypeError in DataLoader worker process 0.错误。
迭代 DataLoader时出现以下错误,暂时不知道怎么解决,向大家求救,是一个比较稀罕的错误,也分享给大家一个奇葩的问题一起讨论。
全栈程序员站长
2022/08/22
3.9K0
TypeError: _str_retu
今天听网课的时候遇到了这样一个问题:TypeError: __str__returned non-string (type NoneType)以及解决方法,分享给大家。(我学的是python3)
py3study
2020/01/09
7020
ORA-00937:不是单组分组函数[通俗易懂]
SELECT COUNT(*) BZC144, NVL(SUM(BCF125), 0) BZC145, CF11.AAA020 FROM CF11, CF12 WHERE CF11.BCF110 = CF12.BCF110 AND CF11.AAE100 = ‘1’;
全栈程序员站长
2022/09/14
4.1K0
ORA-00937: 不是单组分组函数
此时将会报错 ORA-00937: 不是单组分组函数— 解释意思为: select语句中又在查询某一列的值,其中还有聚合函数。oracle数据库都要疯了。。
全栈程序员站长
2022/07/02
3.1K0
[Centos7]open读取文件报错:TypeError
本文编写于 205 天前,最后修改于 205 天前,其中某些信息可能已经过时。 在写对比文件差异的脚本时,运行脚本报错: TypeError: a bytes-like object is required, not ‘str’ 处理方法如下: 1.使用codecs模块 2.原代码为: fileHandle = open(filename, 'rb') #此写法用于python2.x版本,因为我的版本为python3.6,所以需要做以下更改 3.更改后的代码为 import codecs fileHandl
贰叁壹小窝
2020/07/22
1K0
TypeError: string indices must be integers
Python3报错:TypeError: string indices must be integers
狼啸风云
2021/04/23
2K0
TypeError: string indices must be integers
在硬化负载均衡这条路上,字节不是第一个,也不是最后一个
对Tiara和SilkRoad负载均衡方案感兴趣的同学点赞和在看后,在公众号后台回复“tooyum29”可以获取下载地址。
用户6874558
2023/03/06
1.3K0
在硬化负载均衡这条路上,字节不是第一个,也不是最后一个
数据集永久下架,微软不是第一个,MIT 也不是最后一个
内容概要:麻省理工学院在近日发出通知,永久下线著名微小图像数据集 Tiny Images Dataset ,原因是被指出涉嫌种族歧视和女性歧视。
HyperAI超神经
2020/07/03
1.1K0
点击加载更多

相似问题

SPSS变量宽度为零

10

sql计数连续为零

13

连续零计数(多索引)

123

GroupBy熊猫计数连续为零

20

带有前导零的SPSS自动变量标签

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档