音频处理中,经常要看一下啊频域图是什么样子的,这里自己写了一个小程序,可以完美的同步显示时域和频域图,直接上代码:
1 #wave data -xlxw 2 3 #import 4 import wave as we 5 import numpy as np 6 import matplotlib.pyplot as plt 7 import sys 8 9 def wavread(path): 10 wavfile = we.open(path,"rb") 11 params = wavfile.getparams() 12 framesra,frameswav= params[2],params[3] 13 nchannels, sampwidth, framesra, frameswav = params[:4] 14 print("nchannels:%d" % nchannels) 15 print("sampwidth:%d" % sampwidth) 16 datawav = wavfile.readframes(frameswav) 17 wavfile.close() 18 datause = np.fromstring(datawav,dtype = np.short) 19 print(len(datause)) 20 if nchannels == 2: 21 datause.shape = -1,2 22 datause = datause.T 23 time = np.arange(0, frameswav) * (1.0/framesra) 24 return datause,time,nchannels 25 26 def main(): 27 path = sys.argv[1] 28 #path = input("The Path is:") 29 print(path) 30 wavdata,wavtime,nchannels = wavread(path) 31 32 N=len(wavdata) 33 framerate = 16000 34 start=0 35 df = 1 36 freq = [df*n for n in range(0,len(wavdata))] 37 print(len(wavdata)) 38 print(len(wavtime)) 39 40 c=np.fft.fft(wavdata)*nchannels 41 d=int(len(c)/2) 42 print(len(c)) 43 44 fig, ax = plt.subplots(2, 1) 45 46 47 ax[0].plot(wavtime,wavdata,color = 'green') 48 ax[0].set_xlabel('Time') 49 ax[0].set_ylabel('Amplitude') 50 51 52 ax[1].plot(freq,abs(c),color = 'red') 53 ax[1].set_xlabel('Freq(HZ)') 54 ax[1].set_ylabel('Y(freq)') 55 56 plt.show()
直接上图看结果:
这个只能对单声道16k采样的wav格式做处理,不过,只要稍微加一更改,就可以处理别的了。具体改代码的事情,还是谁用谁做吧。做个程序员,总要付出一些代价的。
每日一言:君子役物,小人役于物。——《劝学》
作者:虚生 出处:https://www.cnblogs.com/dylancao/ 以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。 勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188 |
![]() |
分类:
音频算法系列
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2017-10-13 提纲挈领webrtc之vad检测
2017-10-13 提纲挈领webrtc音频处理算法之写在前面的话