python wav 测频率

并不是说采样频率。如果WAV文件是一个单声部的旋律,是否有办法能知道每个音的频率?谢谢!... 并不是说采样频率。如果WAV文件是一个单声部的旋律,是否有办法能知道每个音的频率?
谢谢!
展开
 我来答
何人我知己
推荐于2016-05-09 · TA获得超过379个赞
知道小有建树答主
回答量:258
采纳率:50%
帮助的人:188万
展开全部
# -*- coding: utf-8 -*-
import wave
import pylab as pl
import numpy as np
# 打开WAV文档
f = wave.open(r"c:\WINDOWS\Media\ding.wav", "rb")
# 读取格式信息
# (nchannels, sampwidth, framerate, nframes, comptype, compname)
params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
# 读取波形数据
str_data = f.readframes(nframes)
f.close()
#将波形数据转换为数组
wave_data = np.fromstring(str_data, dtype=np.short)
wave_data.shape = -1, 2
wave_data = wave_data.T     #这就是你想要的
time = np.arange(0, nframes) * (1.0 / framerate)
# 绘制波形
pl.subplot(211) 
pl.plot(time, wave_data[0])
pl.subplot(212) 
pl.plot(time, wave_data[1], c="g")
pl.xlabel("time (seconds)")
pl.show()
追问
运行之后,wave_data是这样的数值:
array([[-1, -1, -1, ..., 0, 0, 0],
[-1, -2, -2, ..., 0, 0, 0]], dtype=int16)
如何把它转化为440Hz、324Hz……这样的频率数?
追答
dsp时间长也忘得差不多了

得到信号的波形只需要做傅立叶变换,一般
pl.specgram(wave_data[0],1024,framerate)
pl.show()
东莞大凡
2024-08-07 广告
标定板认准大凡光学科技,专业生产研发厂家,专业从事光学影像测量仪,光学投影测量仪.光学三维测量仪,光学二维测量仪,光学二维测量仪,光学三维测量仪,光学二维测量仪.的研发生产销售。东莞市大凡光学科技有限公司创立于 2018 年,公司总部坐落于... 点击进入详情页
本回答由东莞大凡提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式