文件參數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 部門做技術工作”。
“沒錯”,地面上的人說到,“你是怎么知道的?”
“呵呵”,熱氣球上的人說,“你告訴我的每件事在技術上都是對的,但對都沒 有用”。
地面上的人說,“你一定是管理層的人”。
“沒錯”,熱氣球上的人說,“可是你是怎么知道的?”
“呵呵”,地面上的那人說到,“你不知道你在哪里,你也不知道你要去哪,你 總希望我能幫你。你現在和我們剛見面時還在原來那個地方,但現在卻是我 錯了”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM