當前位置:首頁 » 編程語言 » pythonwav

pythonwav

發布時間: 2022-02-14 08:39:32

python wav 測頻率

#-*-coding:utf-8-*-
importwave
importpylabaspl
importnumpyasnp
#打開WAV文檔
f=wave.open(r"c:WINDOWSMediading.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()

⑵ python 播放 wav

這是python的matplotlib里的一個畫wav文件的時頻分析(specgram)的函數。和matlab里的那個差不多。使用超級方便,自動就做好了短時傅立葉變換(short
time fourier
transform)~函數用法具體可參照http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.specgram

關於短時傅立葉變換的具體內容可google之~下面介紹程序。

#首先import各種library。wave和struct都是安裝python2.6自帶的。scipy可以在

#http://www.scipy.org/Download下載。pylab可在http://matplotlib.sourceforge.net/下載。都是非常#強大的包包啊~~

import wave

import struct

from scipy import *

from pylab import *

#讀取wav文件,我這兒讀了個自己用python寫的音階的wav

filename = '/Users/rongjin/Desktop/scale.wav'

wavefile = wave.open(filename, 'r') # open for writing

#讀取wav文件的四種信息的函數。期中numframes表示一共讀取了幾個frames,在後面要用到滴。

nchannels = wavefile.getnchannels()

sample_width = wavefile.getsampwidth()

framerate = wavefile.getframerate()

numframes = wavefile.getnframes()

#建一個y的數列,用來保存後面讀的每個frame的amplitude。

y = zeros(numframes)

#for循環,readframe(1)每次讀一個frame,取其前兩位,是左聲道的信息。右聲道就是後兩位啦。

#unpack是struct里的一個函數,用法詳見http://docs.python.org/library/struct.html。簡單說來
就是把#packed的string轉換成原來的數據,無論是什麼樣的數據都返回一個tuple。這里返回的是長度為一的一個

#tuple,所以我們取它的第零位。

for i in range(numframes):

val =
wavefile.readframes(1)

left =
val[0:2]

#right = val[2:4]

v =
struct.unpack('h', left )[0]

y[i] =
v

#framerate就是44100,文件初讀取的值。然後本程序最關鍵的一步!specgram!實在太簡單了。。。

Fs = framerate

specgram(y, NFFT=1024, Fs=Fs, noverlap=900)

show()

好看的specgram就畫好了~~x軸是時間,y軸是頻率~

⑶ python 不能打開wav文件

No such file or directory,不存在這樣的文件或者目錄,錯誤很明顯呀,文件路徑有問題

⑷ 誰知道如何在python中用處理wav文件,並且對他的頻譜進行分析的程序

1.讀取wav文件
# -*- 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()

2.觀察信號頻譜

# -*- coding: utf-8 -*-
import numpy as np
import pylab as pl
sampling_rate = 8000
fft_size = 512
t = np.arange(0, 1.0, 1.0/sampling_rate)
x = np.sin(2*np.pi*156.25*t) + 2*np.sin(2*np.pi*234.375*t)
xs = x[:fft_size]
xf = np.fft.rfft(xs)/fft_size
freqs = np.linspace(0, sampling_rate/2, fft_size/2+1)
xfp = 20*np.log10(np.clip(np.abs(xf), 1e-20, 1e100))
pl.figure(figsize=(8,4))
pl.subplot(211)
pl.plot(t[:fft_size], xs)
pl.xlabel(u"時間(秒)")
pl.title(u"156.25Hz和234.375Hz的波形和頻譜")
pl.subplot(212)
pl.plot(freqs, xfp)
pl.xlabel(u"頻率(Hz)")
pl.subplots_adjust(hspace=0.4)
pl.show()

⑸ 利用python編寫代碼如何把wav文件轉為mp3文件

using lame (command line), you can encode wav to mp3 like this:
$ lame --preset insane /path/to/file.wav

which would create:
file.wav.mp3

in Python, you could use subprocess to call it:
wav = 'myfile.wav'
cmd = 'lame --preset insane %s' % wav
subprocess.call(cmd, shell=True)

⑹ python3.5scipy包怎樣讀取wav文件

用語音處理的庫

樓主找找

pyb 提供了簡潔的高層介面,極大的擴展了python處理音頻文件的能力,pyb可能不是最強大的Python音頻處理庫,但絕對是Python最簡潔易用的音頻庫只要,非要說有什麼弊端,大概只有高度依賴ffmpeg,linux安裝起來不太方便吧。

⑺ Python播放wav音頻,在Windows系統下

手頭正好一個腳本,在Windows下執行沒有問題。供參考:


importwinsound,time,sys
mp3='qed.wav'
if__name__=='__main__':
iflen(sys.argv)<2:
times=1
else:
times=int(sys.argv[1])
iftimes==0:
while1:
winsound.PlaySound(mp3,winsound.SND_NODEFAULT)
else:
foriinrange(times):
winsound.PlaySound(mp3,winsound.SND_NODEFAULT)

⑻ 怎麼通過程序(如python)判斷一個音頻文件(如wav、mp3等格式)的聲音清晰度

我用wpf畫過wav的頻譜圖和語譜圖,這里有個參考http://www.codeproject.com/Articles/488655/Visualizing-Sound
波形圖應該更簡單吧 計算聲音強度就好了 至於mp3我想應該先解碼成pcm

⑼ python中的while循環可以做什麼東西

Python語言的優點
簡單:Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣。它使你能夠專注於解決問題而不是去搞明白語言本身。
易學:Python極其容易上手,因為Python有極其簡單的說明文檔 [7] 。
速度快:Python 的底層是用 C 語言寫的,很多標准庫和第三方庫也都是用 C 寫的,運行速度非常快。
免費、開源:Python是FLOSS(自由/開放源碼軟體)之一。使用者可以自由地發布這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟體中。FLOSS是基於一個團體分享知識的概念。
高層語言:用Python語言編寫程序的時候無需考慮諸如如何管理你的程序使用的內存一類的底層細節。
可移植性:由於它的開源本質,Python已經被移植在許多平台上(經過改動使它能夠工作在不同平台上)。這些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基於linux開發的android平台。
解釋性:一個用編譯型語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。
運行程序的時候,連接/轉載器軟體把你的程序從硬碟復制到內存中並且運行。而Python語言寫的程序不需要編譯成二進制代碼。你可以直接從源代碼運行 程序。
在計算機內部,Python解釋器把源代碼轉換成稱為位元組碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。這使得使用Python更加簡單。也使得Python程序更加易於移植。
面向對象:Python既支持面向過程的編程也支持面向對象的編程。在「面向過程」的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在「面向對象」的語言中,程序是由數據和功能組合而成的對象構建起來的。
可擴展性:如果需要一段關鍵代碼運行得更快或者希望某些演算法不公開,可以部分程序用C或C++編寫,然後在Python程序中使用它們。
可嵌入性:可以把Python嵌入C/C++程序,從而向程序用戶提供腳本功能。
豐富的庫:Python標准庫確實很龐大。它可以幫助處理各種工作,包括正則表達式、文檔生成、單元測試、線程、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其他與系統有關的操作。這被稱作Python的「功能齊全」理念。除了標准庫以外,還有許多其他高質量的庫,如wxPython、Twisted和Python圖像庫等等。
規范的代碼:Python採用強制縮進的方式使得代碼具有較好可讀性。而Python語言寫的程序不需要編譯成二進制代碼。

⑽ 怎樣用python畫wav文件的時頻分析圖

這是python的matplotlib里的一個畫wav文件的時頻分析(specgram)的函數。和matlab里的那個差不多。使用超級方便,自動就做好了短時傅立葉變換(short
time fourier
transform)~函數用法具體可參照http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.specgram

關於短時傅立葉變換的具體內容可google之~下面介紹程序。

#首先import各種library。wave和struct都是安裝python2.6自帶的。scipy可以在

#http://www.scipy.org/Download下載。pylab可在http://matplotlib.sourceforge.net/下載。都是非常#強大的包包啊~~

import wave

import struct

from scipy import *

from pylab import *

#讀取wav文件,我這兒讀了個自己用python寫的音階的wav

filename = '/Users/rongjin/Desktop/scale.wav'

wavefile = wave.open(filename, 'r') # open for writing

#讀取wav文件的四種信息的函數。期中numframes表示一共讀取了幾個frames,在後面要用到滴。

nchannels = wavefile.getnchannels()

sample_width = wavefile.getsampwidth()

framerate = wavefile.getframerate()

numframes = wavefile.getnframes()

#建一個y的數列,用來保存後面讀的每個frame的amplitude。

y = zeros(numframes)

#for循環,readframe(1)每次讀一個frame,取其前兩位,是左聲道的信息。右聲道就是後兩位啦。

#unpack是struct里的一個函數,用法詳見http://docs.python.org/library/struct.html。簡單說來
就是把#packed的string轉換成原來的數據,無論是什麼樣的數據都返回一個tuple。這里返回的是長度為一的一個

#tuple,所以我們取它的第零位。

for i in range(numframes):

val =
wavefile.readframes(1)

left =
val[0:2]

#right = val[2:4]

v =
struct.unpack('h', left )[0]

y[i] =
v

#framerate就是44100,文件初讀取的值。然後本程序最關鍵的一步!specgram!實在太簡單了。。。

Fs = framerate

specgram(y, NFFT=1024, Fs=Fs, noverlap=900)

show()

耶~好看的specgram就畫好了~~x軸是時間,y軸是頻率~

熱點內容
安卓介面除了typec還有什麼 發布:2025-01-09 15:51:35 瀏覽:50
緩存和序列化 發布:2025-01-09 15:45:17 瀏覽:646
生命密碼303數字代表什麼 發布:2025-01-09 15:40:57 瀏覽:30
android源碼導入eclipse 發布:2025-01-09 15:40:18 瀏覽:246
易語言製作軟體源碼 發布:2025-01-09 15:03:27 瀏覽:262
scratch少兒編程是 發布:2025-01-09 15:01:34 瀏覽:713
javamd564加密 發布:2025-01-09 14:58:57 瀏覽:145
javaifint 發布:2025-01-09 14:57:32 瀏覽:488
怎麼配好電腦配置 發布:2025-01-09 14:46:31 瀏覽:837
土豆音頻上傳 發布:2025-01-09 14:45:49 瀏覽:992