本文簡要介紹 python 語言中 scipy.io.wavfile.read
的用法。
用法:
scipy.io.wavfile.read(filename, mmap=False)#
打開一個 WAV 文件。
從 LPCM WAV 文件返回采樣率(以樣本/秒為單位)和數據。
- filename: 字符串或打開文件句柄
輸入 WAV 文件。
- mmap: 布爾型,可選
是否讀取數據為memory-mapped(默認:False)。與某些位深度不兼容;見注釋。僅用於真實文件。
- rate: int
WAV 文件的采樣率。
- data: numpy 數組
從 WAV 文件中讀取的數據。數據類型由文件確定;見注釋。對於 1 通道 WAV,數據是 1-D,否則是 2-D 形狀(Nsamples,Nchannels)。如果傳遞了沒有 C-like 文件說明符(例如
io.BytesIO
)的 file-like 輸入,則這將不可寫。
參數 ::
返回 ::
注意:
常見數據類型:[1]
WAV 格式
敏
最大限度
NumPy 數據類型
32 位浮點
-1.0
+1.0
float32
32 位整數 PCM
-2147483648
+2147483647
int32
24 位整數 PCM
-2147483648
+2147483392
int32
16 位整數 PCM
-32768
+32767
int16
8 位整數 PCM
0
255
uint8
WAV 文件可以指定任意位深度,該函數支持讀取從 1 到 64 位的任意整數 PCM 深度。數據以最小的兼容 numpy int 類型返回,格式為左對齊。 8 位及以下是無符號的,而 9 位及以上是有符號的。
例如,24 位數據將存儲為 int32,24 位數據的 MSB 存儲在 int32 的 MSB 處,通常最低有效字節為 0x00。 (但是,如果文件實際上包含超過其指定位深度的數據,則這些位也將被讀取和輸出。[2])
此位對齊和符號匹配 WAV 的本機內部格式,它允許每個樣本使用 1、2、4 或 8 個字節的 WAV 文件的內存映射(因此 24 位文件不能是memory-mapped,但 32 位可以)。
支持 32 位或 64 位格式的 IEEE 浮點 PCM,帶或不帶 mmap。超過 [-1, +1] 的值不會被剪裁。
不支持非線性 PCM(mu-law、A-law)。
參考:
[1]IBM Corporation 和 Microsoft Corporation,“多媒體編程接口和數據規範 1.0”,“樣本的數據格式”部分,1991 年 8 月http://www.tactilemedia.com/info/MCI_Control_Info.html
[2]Adobe Systems Incorporated,“Adobe Audition 3 用戶指南”,“音頻文件格式:24 位壓縮 Int(類型 1,20 位)”部分,2007
例子:
>>> from os.path import dirname, join as pjoin >>> from scipy.io import wavfile >>> import scipy.io
從測試/數據目錄中獲取示例 .wav 文件的文件名。
>>> data_dir = pjoin(dirname(scipy.io.__file__), 'tests', 'data') >>> wav_fname = pjoin(data_dir, 'test-44100Hz-2ch-32bit-float-be.wav')
加載 .wav 文件內容。
>>> samplerate, data = wavfile.read(wav_fname) >>> print(f"number of channels = {data.shape[1]}") number of channels = 2 >>> length = data.shape[0] / samplerate >>> print(f"length = {length}s") length = 0.01s
繪製波形。
>>> import matplotlib.pyplot as plt >>> import numpy as np >>> time = np.linspace(0., length, data.shape[0]) >>> plt.plot(time, data[:, 0], label="Left channel") >>> plt.plot(time, data[:, 1], label="Right channel") >>> plt.legend() >>> plt.xlabel("Time [s]") >>> plt.ylabel("Amplitude") >>> plt.show()
相關用法
- Python SciPy wavfile.write用法及代碼示例
- Python SciPy windows.gaussian用法及代碼示例
- Python SciPy windows.parzen用法及代碼示例
- Python SciPy windows.triang用法及代碼示例
- Python SciPy windows.flattop用法及代碼示例
- Python SciPy windows.hamming用法及代碼示例
- Python SciPy windows.tukey用法及代碼示例
- Python SciPy windows.nuttall用法及代碼示例
- Python SciPy windows.get_window用法及代碼示例
- Python SciPy windows.kaiser用法及代碼示例
- Python SciPy windows.kaiser_bessel_derived用法及代碼示例
- Python SciPy windows.general_gaussian用法及代碼示例
- Python SciPy windows.cosine用法及代碼示例
- Python SciPy windows.exponential用法及代碼示例
- Python SciPy windows.bartlett用法及代碼示例
- Python SciPy windows.barthann用法及代碼示例
- Python SciPy windows.boxcar用法及代碼示例
- Python SciPy windows.general_cosine用法及代碼示例
- Python SciPy windows.chebwin用法及代碼示例
- Python SciPy windows.taylor用法及代碼示例
- Python SciPy windows.lanczos用法及代碼示例
- Python SciPy windows.blackman用法及代碼示例
- Python SciPy windows.general_hamming用法及代碼示例
- Python SciPy windows.bohman用法及代碼示例
- Python SciPy windows.blackmanharris用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.io.wavfile.read。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。