• 文件参数Python读取wav格式文件


    本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~

        1、import wave 用于读写wav文件

        它提供了一个方便的WAV格式接口。

        但是不支持压缩/解压缩,支持单声道/立体声。

        读取格式:

        open(file[, mode])

        如果file是一个字符串,那么就打开文件,不然就把它当做一个类文件对象。

        mode是可以缺省的,如果输入的参数是一个类文件对象,那么file.mode将会作为mode的值。

        mode可选参数如下:

        'r', 'rb'

        Read only mode.

        'w', 'wb'

        Write only mode.

        注意不能同时实现读/写操纵

        

        2、wav文件读操纵

        文件和参数

        

        3、numpy:shape转变数组形状

        文件和参数

        当某数轴的参数为-1时,根据元素个数,主动盘算此轴的最大长度,入将c数组改成2行

        文件和参数

        4、实例代码

        

        每日一道理
    心是一棵树,爱与希望的根须扎在土里,智慧与情感的枝叶招展在蓝天下。无论是岁月的风雨扑面而来,还是滚滚尘埃遮蔽了翠叶青枝,它总是静默地矗立在那里等待,并接受一切来临,既不倨傲,也不卑微。
      心是一棵树,一个个故事被年轮携载;一回回驿动与飞鸟相约;一次次碰撞使它绵密柔韧;一幕幕经历造就了它博广的胸怀。心是一棵树,独木不成林。因此,树与树既独立又相联,心与心既相异又相亲。
    #!usr/bin/env python
    #coding=utf-8
    
    from Tkinter import *
    import wave
    import matplotlib.pyplot as plt
    import numpy as np
    
    def read_wave_data(file_path):
    	#open a wave file, and return a Wave_read object
    	f = wave.open(file_path,"rb")
    	#read the wave's format infomation,and return a tuple
    	params = f.getparams()
    	#get the info
    	nchannels, sampwidth, framerate, nframes = params[:4]
    	#Reads and returns nframes of audio, as a string of bytes. 
    	str_data = f.readframes(nframes)
    	#close the stream
    	f.close()
    	#turn the wave's data to array
    	wave_data = np.fromstring(str_data, dtype = np.short)
    	#for the data is stereo,and format is LRLRLR...
    	#shape the array to n*2(-1 means fit the y coordinate)
    	wave_data.shape = -1, 2
    	#transpose the data
    	wave_data = wave_data.T
    	#calculate the time bar
    	time = np.arange(0, nframes) * (1.0/framerate)
    	return wave_data, time
    
    def main():
    	wave_data, time = read_wave_data("C:\Users\CJP\Desktop\miss_you.wav")	
    	#draw the wave
    	plt.subplot(211)
    	plt.plot(time, wave_data[0])
    	plt.subplot(212)
    	plt.plot(time, wave_data[1], c = "g")
    	plt.show()
    
    if __name__ == "__main__":
    	main()

        5、效果

        文件和参数

    文章结束给大家分享下程序员的一些笑话语录: 问路
    有一个驾驶热气球的人发现他迷路了。他降低了飞行的高度,并认出了地面 上的一个人。他继续下降高度并对着那个人大叫,“打扰一下,你能告诉我我 在哪吗?”
    下面那个人说:“是的。你在热气球里啊,盘旋在 30 英尺的空中”。
    热气球上的人说:“你一定是在 IT 部门做技术工作”。
    “没错”,地面上的人说到,“你是怎么知道的?”
    “呵呵”,热气球上的人说,“你告诉我的每件事在技术上都是对的,但对都没 有用”。
    地面上的人说,“你一定是管理层的人”。
    “没错”,热气球上的人说,“可是你是怎么知道的?”
    “呵呵”,地面上的那人说到,“你不知道你在哪里,你也不知道你要去哪,你 总希望我能帮你。你现在和我们刚见面时还在原来那个地方,但现在却是我 错了”。

  • 相关阅读:
    P3384 【模板】树链剖分
    AW136 邻值查找 (【模板】set)
    android布局自适应
    android HttpClient接口实现网络通信
    android加载html,以及js通讯
    mktime 和strtotime获取今日、昨日、上周、本月的起始时间戳和结束时间戳,
    mysql查询今天,昨天,近7天,近30天,本月,上一月数据方法
    瀑布流(masonry和infinitescroll)、(grid-a-licious)
    使用 JavaScript 修改浏览器 URL 地址栏
    测试UTF8编码的文件是不是加了BOM
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3086000.html
Copyright © 2020-2023  润新知