python中常見的幾種音頻數(shù)據(jù)讀取、保存方式總結(jié)
1. soundfile 庫的使用
soundfile庫是一個Python庫,主要用于讀取和寫入音頻文件。它支持多種音頻格式,包括WAV、AIFF、FLAC和OGG等。通過soundfile庫,用戶可以方便地將numpy數(shù)組存儲到音頻文件或者將音頻文件加載到numpy數(shù)組中。此外,soundfile庫還提供了一些函數(shù),用于處理音頻數(shù)據(jù)。它的使用簡單且靈活,方便進行音頻處理和分析的工作。
1.1 read 讀文件
讀取音頻文件數(shù)據(jù)
import soundfile as sf # wav numpy 型數(shù)據(jù),sr是采樣率 filename = "xx/xx.wav" wav, sr = sf.read(filename, dtype='float64)
可通過dtype將任意的音頻文件數(shù)據(jù)格式轉(zhuǎn)為float64,float32,int16,int32 的numpy型數(shù)據(jù),其中float64,float32是歸一化后的結(jié)果。dtype 默認值為float64。
1.2 write 保存文件
保存音頻文件數(shù)據(jù)
# save_filename, 保存的音頻文件路徑,data保存的數(shù)據(jù),samplerate是采樣率 sf.wrtie(save_filename,data,samplerate)
支持寫入的數(shù)據(jù)也為float64,float32,int16,int32,并保存相應(yīng)格式的數(shù)據(jù)
2. torchaudio 庫的使用
torchaudio是PyTorch深度學(xué)習(xí)框架的一部分,主要用于處理和分析音頻數(shù)據(jù)。它提供了豐富的音頻信號處理工具、特征提取功能以及與深度學(xué)習(xí)模型結(jié)合的接口,使得在PyTorch中進行音頻相關(guān)的機器學(xué)習(xí)和深度學(xué)習(xí)任務(wù)變得更加便捷。通過使用torchaudio,開發(fā)者能夠輕松地將音頻數(shù)據(jù)轉(zhuǎn)換為適合深度學(xué)習(xí)模型輸入的形式,并利用PyTorch的高效張量運算和自動梯度功能進行訓(xùn)練和推理。此外,torchaudio還支持多聲道音頻處理和GPU加速,以滿足不同應(yīng)用場景的需求。
2.1 load 讀文件
加載音頻文件數(shù)據(jù)
import torchaudio file_path = "xx/xx.wav" waveform, sr = torchaudio.load(file_path, normalize=True)
主要說明:
可以讀取float32, int16, int32類型數(shù)據(jù),返回的是torch.tensor類型的數(shù)據(jù);
normalize=True時,返回的數(shù)據(jù)是歸一化到(-1,1)的float32數(shù)據(jù);
normalize=False時,返回的是float32、int16或者int32數(shù)據(jù),具體需要看file_path本身是什么類型的音頻數(shù)據(jù);
normalize默認值為True。
2.2 save 保存文件
保存音頻數(shù)據(jù)到文件
# out_path, 保存的音頻文件路徑,waveform保存的數(shù)據(jù),sr是采樣率 torchaudio.save(out_path, waveform, sr)
根據(jù)waveform的格式自動保存為float32、int16或者int32
3. from scipy.io import wavfile 庫的使用
scipy.io.wavfile庫是SciPy科學(xué)計算庫中的一個模塊,主要用于讀取和寫入WAV格式的音頻文件。該庫提供了函數(shù)用于將音頻數(shù)據(jù)存儲為WAV文件或者將WAV文件加載為numpy數(shù)組,方便進行音頻數(shù)據(jù)的處理和分析。用戶可以使用scipy.io.wavfile庫來讀取音頻文件的采樣率和數(shù)據(jù),以及將音頻數(shù)據(jù)寫入WAV文件。此外,該庫還提供了一些函數(shù)用于處理音頻數(shù)據(jù),如獲取音頻數(shù)據(jù)的聲道數(shù)、比特深度等信息。通過scipy.io.wavfile庫,用戶可以方便地進行音頻文件的讀寫操作,并結(jié)合其他Python庫進行音頻數(shù)據(jù)處理和分析。
3.1 read 讀文件
from scipy.io import wavfile file_name = "xx/xx.wav" sr, wav_data = wavfile.read(file_name)
返回的是float32、int16、int32型numpy數(shù)據(jù),具體格式根據(jù)file_name文件的音頻格式
3.2 save 保存文件
# filename, 保存的音頻文件路徑,wav_data保存的數(shù)據(jù),sr是采樣率 wavfile.wrtie(filename, sr, wav_data)
根據(jù)wav_data的格式自動保存為float32、int16或者int32。
注:以上float32、float64數(shù)據(jù)是歸一化后的結(jié)果,與其他轉(zhuǎn)換為int16 / 2 ** 15,int32 / 2 ** 31
附: soundfile安裝報錯與解決
①問題描述
在終端使用pip install soundfile安裝soundfile時報錯。
②問題解決
python處理音頻文件經(jīng)常要使用soundfile庫。ubuntu系統(tǒng)在pip安裝soundfile庫時報錯,是因為缺乏依賴包libsndfile1,所以要先安裝依賴包,然后再安裝soundfile。命令如下:
step1:終端輸入sudo apt-get install libsndfile1
step2:終端輸入pip install soundfile
總結(jié)
到此這篇關(guān)于python中常見的幾種音頻數(shù)據(jù)讀取、保存方式的文章就介紹到這了,更多相關(guān)python音頻數(shù)據(jù)讀取保存方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中使用scapy模擬數(shù)據(jù)包實現(xiàn)arp攻擊、dns放大攻擊例子
這篇文章主要介紹了Python中使用scapy模擬數(shù)據(jù)包實現(xiàn)arp攻擊、dns放大攻擊例子,本文重點在于scapy有使用上,需要的朋友可以參考下2014-10-10Pycharm使用之設(shè)置代碼字體大小和顏色主題的教程
今天小編就為大家分享一篇Pycharm使用之設(shè)置代碼字體大小和顏色主題的教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python中的簡寫操作(for、if簡寫、匿名函數(shù))
這篇文章主要介紹了Python中的簡寫操作(for、if簡寫、匿名函數(shù)),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07