python-讀Wave文件及分析

# -*- coding: utf-8 -*-
import wave
import pylab as pl
import numpy as np

# 打開WAV文檔
#首先載入Python的標(biāo)準(zhǔn)處理WAV文件的模塊稻扬,然后調(diào)用wave.open打開wav文件,注意需要使用"rb"(二進(jìn)制模式)打開文件:
f = wave.open(r"1.wav", "rb")
#open返回一個(gè)的是一個(gè)Wave_read類的實(shí)例,通過調(diào)用它的方法讀取WAV文件的格式和數(shù)據(jù):

# 讀取格式信息
# (nchannels, sampwidth, framerate, nframes, comptype, compname)

params = f.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]

#getparams:一次性返回所有的WAV文件的格式信息,它返回的是一個(gè)組元(tuple):聲道數(shù), 量化位數(shù)(byte單位), 采樣頻率,
#采樣點(diǎn)數(shù), 壓縮類型, 壓縮類型的描述。wave模塊只支持非壓縮的數(shù)據(jù),因此可以忽略最后兩個(gè)信息:
#getnchannels, getsampwidth, getframerate, getnframes等方法可以單獨(dú)返回WAV文件的特定的信息。

# 讀取波形數(shù)據(jù)
str_data = f.readframes(nframes)
#readframes:讀取聲音數(shù)據(jù)作彤,傳遞一個(gè)參數(shù)指定需要讀取的長度(以取樣點(diǎn)為單位),readframes返回的是二進(jìn)制數(shù)據(jù)(一大堆
#bytes)乌逐,在Python中用字符串表示二進(jìn)制數(shù)據(jù):
f.close()

#將波形數(shù)據(jù)轉(zhuǎn)換為數(shù)組
#接下來需要根據(jù)聲道數(shù)和量化單位竭讳,將讀取的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為一個(gè)可以計(jì)算的數(shù)組:
wave_data = np.fromstring(str_data, dtype=np.short)
#通過fromstring函數(shù)將字符串轉(zhuǎn)換為數(shù)組,通過其參數(shù)dtype指定轉(zhuǎn)換后的數(shù)據(jù)格式浙踢,由于我們的聲音格式是以兩個(gè)字節(jié)表示一個(gè)取
#樣值绢慢,因此采用short數(shù)據(jù)類型轉(zhuǎn)換。現(xiàn)在我們得到的wave_data是一個(gè)一維的short類型的數(shù)組洛波,但是因?yàn)槲覀兊穆曇粑募请p聲
#道的胰舆,因此它由左右兩個(gè)聲道的取樣交替構(gòu)成:LRLRLRLR....LR(L表示左聲道的取樣值,R表示右聲道取樣值)蹬挤。修改wave_data
#的sharp之后:
wave_data.shape = -1, 2
#將其轉(zhuǎn)置得到:
wave_data = wave_data.T
#最后通過取樣點(diǎn)數(shù)和取樣頻率計(jì)算出每個(gè)取樣的時(shí)間:
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()
這里寫圖片描述
# -*- coding: utf-8 -*-
import wave
import numpy as np
import scipy.signal as signal

framerate = 44100
time = 10

# 產(chǎn)生10秒44.1kHz的100Hz - 1kHz的頻率掃描波
t = np.arange(0, time, 1.0/framerate)
wave_data = signal.chirp(t, 100, time, 1000, method='linear') * 10000
wave_data = wave_data.astype(np.short)

# 打開WAV文檔
f = wave.open(r"sweep.wav", "wb")

# 配置聲道數(shù)缚窿、量化位數(shù)和取樣頻率
f.setnchannels(1)
f.setsampwidth(2)
f.setframerate(framerate)
# 將wav_data轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)寫入文件
f.writeframes(wave_data.tostring())
f.close()

轉(zhuǎn)自:https://blog.csdn.net/sinat_33588424/article/details/80239375

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市焰扳,隨后出現(xiàn)的幾起案子倦零,更是在濱河造成了極大的恐慌,老刑警劉巖吨悍,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扫茅,死亡現(xiàn)場離奇詭異,居然都是意外死亡育瓜,警方通過查閱死者的電腦和手機(jī)诞帐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爆雹,“玉大人,你說我怎么就攤上這事愕鼓「铺” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵菇晃,是天一觀的道長册倒。 經(jīng)常有香客問我,道長磺送,這世上最難降的妖魔是什么驻子? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任灿意,我火速辦了婚禮,結(jié)果婚禮上崇呵,老公的妹妹穿的比我還像新娘缤剧。我一直安慰自己,他們只是感情好域慷,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布荒辕。 她就那樣靜靜地躺著,像睡著了一般犹褒。 火紅的嫁衣襯著肌膚如雪抵窒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天叠骑,我揣著相機(jī)與錄音李皇,去河邊找鬼。 笑死宙枷,一個(gè)胖子當(dāng)著我的面吹牛掉房,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播朦拖,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼圃阳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了璧帝?” 一聲冷哼從身側(cè)響起捍岳,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睬隶,沒想到半個(gè)月后锣夹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苏潜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年银萍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恤左。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贴唇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出飞袋,到底是詐尸還是另有隱情戳气,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布巧鸭,位于F島的核電站瓶您,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呀袱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一贸毕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧夜赵,春花似錦明棍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至婉宰,卻和暖如春歌豺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背心包。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國打工类咧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蟹腾。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓痕惋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親娃殖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子值戳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容