python波形显示(在python中打开波形文件︰未知的格式︰49.究竟怎么了)

1.在python 中打开波形文件 ︰ 未知的格式 ︰ 49.究竟怎么了

投票

2

回答

1K

查看

我尝试打开波形文件与 wave模块,但是老是同样的错误我试着不管。 包含错误的行是以下 ︰

wav = wave.open(f)

这是错误消息 ︰

Traceback (most recent call last):

File "annotate.py", line 47, in

play(file)

File "annotate.py", line 33, in play

wav = wave.open(f)

File "C:\Program Files (x86)\Python\lib\wave.py", line 498, in open

return Wave_read(f)

File "C:\Program Files (x86)\Python\lib\wave.py", line 163, in __init__

self.initfp(f)

File "C:\Program Files (x86)\Python\lib\wave.py", line 143, in initfp

self._read_fmt_chunk(chunk)

File "C:\Program Files (x86)\Python\lib\wave.py", line 269, in _read_fmt_chunk

raise Error('unknown format: %r' % (wFormatTag,))

wave.Error: unknown format: 49

字符串 f是路径。WAV 文件,它工作在任何我的媒体播放器播放时。 我当然导入 wave的模块。 我试过 f,作为一个相对和绝对路径。 我试着用"wav"取代"WAV"。

错误什么导致的?

投票

Python 的波模块工作与特定类型的 WAV: PCM (WAVE_FORMAT_PCM: 0x0001)。

在您的情况下,您使用 WAV 类型 WAVE_FORMAT_GSM610[0x0031 = hex(49)].

你可以使用像大胆或者一些程序转换的编解码器,WAV 文件的类型更改为 lib。

2.如何使用python实现wave音频文件回放

修改采样点数和起始位置进行不同位置和长度的音频波形分析

N=44100

start=0 #开始采样位置

df = framerate/(N-1) # 分辨率

freq = [df*n for n in range(0,N)] #N个元素

wave_data2=wave_data[0][start:start+N]

c=numpy.fft.fft(wave_data2)*2/N

#常规显示采样频率一半的频谱

d=int(len(c)/2)

#仅显示频率在4000以下的频谱

while freq[d]>4000:

d-=10

pylab.plot(freq[:d-1],abs(c[:d-1]),'r')

pylab.show()

3.如何用python实现音乐的频谱显示

用pymedia可以很容易的实现:

import pymedia.audio.acodec as acodec

sName='YOUR FILENAME'

dec= acodec.Decoder( str.split( sName, '.' )[ -1 ].lower() )

f= open( sName, 'rb' )

s= f.read( 8192 )

r= dec.decode( s )

import pymedia.audio.sound as sound

snd= sound.Output( r.sample_rate, r.channels, sound.AFMT_S16_LE )

while len( s )>0:

if r: snd.play( r.data )

s= f.read( 512 )

r= dec.decode( s )

import time

while snd.isPlaying(): time.sleep( .05 )

4.怎样用python生成sin wave的wave文件

以下代码涵盖了基本的写wave文件需要的函数。

# Simple wave file creation in python using the "wave" module.

# Author; Eric Nichols

# 1-11-11

#

# code adapted from:

#

import wave #需要导入python的wave module,函数用法参

import struct #struct module的用法参见

from

math import sin, pi, pow

MAX_AMPLITUDE = 32767 #决定sin wave的音量

SAMPLE_RATE = 44100 #采样频率,由于人听觉在20到20千赫兹,由于Nyquist定律,一般44100(大于20千

的两倍)的频率足够满足人耳,再高就浪费文件空间啦,这也是CD通常的采样频率。

DURATION_SEC =

3 #生成wav的时间为三秒

SAMPLE_LEN =

SAMPLE_RATE * DURATION_SEC #

乘一下就是要写多少个SAMPLE啦

filename = '/Users/rongjin/Desktop/output.wav' #起个文件名哈,文件生成后就到这个文件夹找啦

print "Creating sound file:", filename

print "Sample rate:",

SAMPLE_RATE

print "Duration (sec):", DURATION_SEC

print "# samples:",

SAMPLE_LEN

wavefile = wave.open(filename, 'w') #

'w'写文件,其他还有'r','rb','wb'啥的,详情google之

wavefile.setparams((2, 2, SAMPLE_RATE, 0, 'NONE', 'not

compressed')) # 设置下wave file的头文件

samples = [] #建一个tuple用来放好几个channel的

for i in range(SAMPLE_LEN):

t = float(i) /

SAMPLE_RATE # t表示当下滴时间

sample = MAX_AMPLITUDE * sin(t * 256 * 2 * pi) #

就根据sin wave的方程得到当下的amplitude啦,

这里生成频率为256的音高哟,可以随便改。

#print i, t, sample # show

some generated values. comment out for speed.

packed_sample = struct.pack('h', sample) #

转换成16进制的string

samples.append(packed_sample) #

append到samples,作为channel 1

samples.append(packed_sample) # append一个一样的作为channel

2,要是append另一个频率的

packed_sample_2,就可以有和声效果啦

sample_str = ''.join(samples) #

把samples里所有的值都convert到一个string上

wavefile.writeframes(sample_str) # 终于要写waveframe啦!

wavefile.close() #最后别忘了关掉文件,不然会出错滴

print "Done writing

file." #大告成功!

python波形显示

转载请注明出处代码入门网 » python波形显示(在python中打开波形文件︰未知的格式︰49.究竟怎么了)

资讯

pythondll指针(怎样用python调用dll)

阅读(61)

本文主要为您介绍pythondll指针,内容包括python中如何查看dll文件中的函数,如何用python调用应用程序的.dll文件,回调函数指针在python中怎么用。可以的,python中一般有两种方法调用DLL中的函数。1.直接使用函数名,函数名可以用dependencywal

资讯

python日志统计(python有没有通用的日志统计系统)

阅读(15)

本文主要为您介绍python日志统计,内容包括python有没有通用的日志统计系统,如何用python,每隔5分钟对实时日志做统计处理,如何用python分析网站日志。logging模块import logging# 配置日志,输出到控制台logging.basicConfig(level=loggin

资讯

pythonmultiply(Python实现输出1*2*3*4*5)

阅读(23)

本文主要为您介绍pythonmultiply,内容包括python中的multiply函数怎么用,numpy中multiply函数怎么用,Python实现输出1*2*3*4*5100的和。究竟是和还是积呢?如果是积的话,我们设计的代码如下,有注释multi_num = 1 # 乘法结果初始化for i in rang

资讯

pythongui界面(python图形化界面设计tkinter)

阅读(19)

本文主要为您介绍pythongui界面,内容包括python图形化界面设计tkinter,python编写gui界面,pythongui图形界面。python提供了多个图形开发界面的库,几个常用Python GUI库如下:Tkinter: Tkinter模块("Tk 接口")是Py

资讯

pythonintellij(intellijidea怎么编写python程序打包发送到spark)

阅读(24)

本文主要为您介绍pythonintellij,内容包括如何使用intellijidea编写python,intellij可以跑python吗,如何使用idea开发python。,客户端和虚拟集群中hadoop、spark、scala的安装目录是一致的,这样开发的spark应用程序的时候不需要打包spark开发

资讯

pythonimagegrab(Python程序抓图怎么用程序实现截图)

阅读(19)

本文主要为您介绍pythonimagegrab,内容包括Python程序抓图怎么用程序实现截图,如何添加一个截图来诱惑报告Python,python中有哪个库提供了对屏幕截屏功能的。由于在我的一个程序中想要添加一个截图功能,今天看一下利用Python怎样截图,功能实

资讯

pythonwebdriverapi(如何查看pythonselenium的api)

阅读(21)

本文主要为您介绍pythonwebdriverapi,内容包括如何查看pythonselenium的api,如何查看pythonselenium的api,seleniumapi有什么用。经常发现很多同学装好了python+selenium webdriver开发环境后不知道怎么去查看api文档,在这里乙醇简单介绍一

资讯

pythonhtmltable(用python生成在html中显示的表格)

阅读(23)

本文主要为您介绍pythonhtmltable,内容包括用python生成在html中显示的表格,怎么用python编写得到本地网页html中的表格,如何用python获取最简单的一个html表单。可以通过写python脚本制作HTML的form,包括HTML的标签什么的python 有个第三方

资讯

python编写应用程序(怎么用python开发一个应用)

阅读(14)

本文主要为您介绍python编写应用程序,内容包括如何用Python编写应用程序,怎么用python开发一个应用,如何用Python编写应用程序。系统编程:提供API,能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。 图形处理:

资讯

python写入二进制(Python:如何写入指定大小二进制数据)

阅读(17)

本文主要为您介绍python写入二进制,内容包括Python:如何写入指定大小二进制数据例如,每次写入1KB,如何进行追加二进制文件python,如何用python生成和读取二进制文件。用"*"和\xNN. 例子:写入1024个二进制值0x00:file(a.bin,wb).write(\x00*10

资讯

python中from(python中fromtimeimportsleep是什么意思)

阅读(14)

本文主要为您介绍python中from,内容包括Python的fromimport和import的区别,python中fromstring怎么用,python中fromstring怎么用。from time import sleep就是从 time 模块中引入sleep函数,使用sleep函数可以让程序休眠(推迟调用线程的

资讯

python求完数(用python语言编程完数就找1到1000怎么做)

阅读(18)

本文主要为您介绍python求完数,内容包括求1000以内完数的python代码,有没有办法再提升下效率,用python语言编程完数就找1到1000怎么做,用python语言编程完数就找1到1000怎么做。#include<stdio.h>int main(){int i,j,s;for(i=2;i<=1000;i++

资讯

pythondll指针(怎样用python调用dll)

阅读(61)

本文主要为您介绍pythondll指针,内容包括python中如何查看dll文件中的函数,如何用python调用应用程序的.dll文件,回调函数指针在python中怎么用。可以的,python中一般有两种方法调用DLL中的函数。1.直接使用函数名,函数名可以用dependencywal

资讯

python日志统计(python有没有通用的日志统计系统)

阅读(15)

本文主要为您介绍python日志统计,内容包括python有没有通用的日志统计系统,如何用python,每隔5分钟对实时日志做统计处理,如何用python分析网站日志。logging模块import logging# 配置日志,输出到控制台logging.basicConfig(level=loggin

资讯

pythonmultiply(Python实现输出1*2*3*4*5)

阅读(23)

本文主要为您介绍pythonmultiply,内容包括python中的multiply函数怎么用,numpy中multiply函数怎么用,Python实现输出1*2*3*4*5100的和。究竟是和还是积呢?如果是积的话,我们设计的代码如下,有注释multi_num = 1 # 乘法结果初始化for i in rang

资讯

pythongui界面(python图形化界面设计tkinter)

阅读(19)

本文主要为您介绍pythongui界面,内容包括python图形化界面设计tkinter,python编写gui界面,pythongui图形界面。python提供了多个图形开发界面的库,几个常用Python GUI库如下:Tkinter: Tkinter模块("Tk 接口")是Py

资讯

pythonintellij(intellijidea怎么编写python程序打包发送到spark)

阅读(24)

本文主要为您介绍pythonintellij,内容包括如何使用intellijidea编写python,intellij可以跑python吗,如何使用idea开发python。,客户端和虚拟集群中hadoop、spark、scala的安装目录是一致的,这样开发的spark应用程序的时候不需要打包spark开发