Python用sndhdr模塊識(shí)別音頻格式詳解
本文主要介紹了Python編程中,用sndhdr模塊識(shí)別音頻格式的相關(guān)內(nèi)容,具體如下。
sndhdr模塊
功能描述:sndhdr模塊提供檢測(cè)音頻類(lèi)型的接口。
唯一一個(gè)API
sndhdr模塊提供了sndhdr.what(filename)和sndhdr.whathdr(filename)兩個(gè)函數(shù)。但實(shí)際上它們的功能是一樣的。(不知道多寫(xiě)一個(gè)的意義何在,what函數(shù)在內(nèi)部調(diào)用了whathdr函數(shù)并把數(shù)據(jù)完完整整地返回)
在之前的版本,whathdr函數(shù)返回元組類(lèi)型的數(shù)據(jù),在Python3.5版本之后改為返回一個(gè)namedtuple。返回的元組包括5個(gè)屬性:filetype、framerate、nchannels、nframes和sampwidth。
1.filetype代表音頻格式。值為:'aifc', ‘a(chǎn)iff', ‘a(chǎn)u', ‘hcom', ‘sndr', ‘sndt', ‘voc', ‘wav', ‘8svx', ‘sb', ‘ub', ‘ul'或者None中之一。常見(jiàn)的幾個(gè)格式反倒不支持。
2.framerate代表音頻文件的幀率。如果音頻文件難以解碼或者未知,該值會(huì)返回0。
3.nchannels代表通道數(shù)。如果音頻文件難以解碼或者未知,該值會(huì)返回0。
4.nframes代表幀數(shù)。如果無(wú)法確定則返回-1。
5.sampwidth代表返回樣本的長(zhǎng)度(比特),值為8的倍數(shù),或者返回A(A-LAW格式)、u(u-LAW格式)。
>>> import sndhdr
>>> sndhdr.what('test.mp3') # 無(wú)法檢測(cè),返回None
>>> sndhdr.what('test.wav')
SndHeaders(filetype='wav', framerate=44100, nchannels=2, nframes=12630240, sampwidth=16)
注:模塊在檢測(cè)AIFC和AIFF時(shí)使用了aifc模塊。檢測(cè)wav時(shí)使用了wave模塊。這兩個(gè)都是Python標(biāo)準(zhǔn)庫(kù)里面的模塊
自定義檢測(cè)流程
和imghdr模塊一樣,sndhdr內(nèi)部也使用了一個(gè)tests列表維護(hù)檢測(cè)函數(shù)。如果想要自行定義檢測(cè)流程,可以通過(guò)修改tests列表達(dá)到目的。
>>> import sndhdr
>>> sndhdr.tests
[<function test_aifc at 0x000001A99B527BF8>, <function test_au at 0x000001A99B527C80>, <
function test_hcom at 0x000001A99B527D08>, <function test_voc at 0x000001A99B527D90>, <f
unction test_wav at 0x000001A99B527E18>, <function test_8svx at 0x000001A99B527EA0>, <fu
nction test_sndt at 0x000001A99B527F28>, <function test_sndr at 0x000001A99B521048>]
>>> def final(h, f): # 自定義檢測(cè)函數(shù)
... print("Maybe mp3 or aac?")
...
>>> sndhdr.what("test.mp3")
>>> sndhdr.tests.append(final) # 添加自定義檢測(cè)函數(shù)到檢測(cè)列表中
>>> sndhdr.what("test.mp3")
Maybe mp3 or aac?
自行添加檢測(cè)函數(shù)需要接收兩個(gè)參數(shù)h和f,h是用來(lái)檢測(cè)的字節(jié)串,f是file對(duì)象。
命令行啟動(dòng)sndhdr模塊
sndhdr用-m模式啟動(dòng)的格式也跟imghdr一樣,終端中調(diào)用python -m sndhdr [-r] file1 file2...就可以了。file可以是文件或者文件夾,-r參數(shù)代表遞歸檢測(cè)。
Desktop\test>python -m sndhdr test.mp3 test.wav test.mp3: None test.wav: SndHeaders(filetype='wav', framerate=44100, nchannels=2, nframes=12630240, sampwidth=16)
總結(jié):sndhdr模塊內(nèi)部的結(jié)構(gòu)總體和imghdr非常相似,設(shè)計(jì)缺陷也很相似…模塊的源碼不多,也不是很難讀懂,建議有興趣的讀者可以試著讀下源碼。
以上就是本文關(guān)于Python用sndhdr模塊識(shí)別音頻格式詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
《Python用imghdr模塊識(shí)別圖片格式實(shí)例解析》、《Python使用base64模塊進(jìn)行二進(jìn)制數(shù)據(jù)編碼詳解》、《hmac模塊生成加入了密鑰的消息摘要詳解》
如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- python調(diào)用百度語(yǔ)音識(shí)別實(shí)現(xiàn)大音頻文件語(yǔ)音識(shí)別功能
- Python實(shí)現(xiàn)Web指紋識(shí)別實(shí)例
- Python文本情感分類(lèi)識(shí)別基于SVM算法Django框架實(shí)現(xiàn)
- Python一行代碼識(shí)別發(fā)票并保存Excel示例詳解
- Python一行代碼識(shí)別增值稅發(fā)票實(shí)現(xiàn)示例
- Python一行代碼識(shí)別車(chē)牌號(hào)碼實(shí)現(xiàn)示例詳解
- python Dejavu庫(kù)快速識(shí)別音頻指紋實(shí)例探究
相關(guān)文章
Python?打印不帶括號(hào)的元組的實(shí)現(xiàn)
本文主要介紹了Python?打印不帶括號(hào)的元組,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
python實(shí)現(xiàn)讀取命令行參數(shù)的方法
這篇文章主要介紹了python實(shí)現(xiàn)讀取命令行參數(shù)的方法,涉及Python中sys模塊的相關(guān)使用技巧,需要的朋友可以參考下2015-05-05
python實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)簽到功能
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)簽到功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
python讀出當(dāng)前時(shí)間精度到秒的代碼
在本文里小編給各位分享了一篇關(guān)于python怎么讀出當(dāng)前時(shí)間精度到秒的內(nèi)容,對(duì)此有需要的朋友們可以學(xué)習(xí)參考下。2019-07-07
python讀取多類(lèi)型文件夾中的文檔內(nèi)容
無(wú)論我們使用哪種編程語(yǔ)言,處理文件對(duì)于每個(gè)程序員都是必不可少的,本文主要介紹了python讀取多類(lèi)型文件夾中的文檔內(nèi)容,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
pytest用yaml文件編寫(xiě)測(cè)試用例流程詳解
這篇文章主要介紹了pytest用yaml文件編寫(xiě)測(cè)試用例流程,本文通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12
Python-Selenium自動(dòng)化爬蟲(chóng)
本文介紹Python-Selenium自動(dòng)化爬蟲(chóng),Selenium是一個(gè)Web的自動(dòng)化測(cè)試工具,最初是為網(wǎng)站自動(dòng)化測(cè)試而開(kāi)發(fā)的,Selenium?可以直接運(yùn)行在瀏覽器上,它支持所有主流的瀏覽器,可以接收指令,讓瀏覽器自動(dòng)加載頁(yè)面,獲取需要的數(shù)據(jù),甚至頁(yè)面截屏,xiamian?neir?需要的朋友可以參考下2022-01-01

