sndhdr --- 判定聲音檔案的型別

原始碼:Lib/sndhdr.py

自從版本 3.11 後不推薦使用,將會自版本 3.13 中移除。: sndhdr 模組 (module) 即將被棄用(詳情與替代方案請見 PEP 594)。


sndhdr 提供了企圖猜測檔案中聲音資料型別的工具函式。當這些函式可以推測出儲存在檔案中聲音資料的型別,它們分別回傳一個 collections.namedtuple(),包含了五種屬性:(filetypeframeratenchannelsnframessampwidth)。這些 type 的值表示資料的型別,會是以下字串之一:'aifc''aiff''au''hcom''sndr''sndt''voc''wav''8svx''sb''ub''ul'sampling_rate(取樣頻率)可能是實際值、或者當未知或者難以解碼時為 0。同樣的,channels(影像通道數)也會回傳實際值或者在無法推測或難以解碼時回傳 0frames(幀數)則是實際值或 -1。tuple 的最後一項,bits_per_sample 為位元表示的取樣大小,或者在 A-LAW 時為 'A',u-LAW 時為 'U'

sndhdr.what(filename)

使用 whathdr() 推測儲存在 filename 檔案中聲音資料的型別。如果成功,回傳上述的 namedtuple(附名元組),否則回傳 None

在 3.5 版的變更: 結果從 tuple 改為 namedtuple。

sndhdr.whathdr(filename)

根據檔案標頭 (header) 推測儲存在檔案中的聲音資料型別。檔名由 filename 給定。這個函式在成功時回傳上述 namedtuple,或在失敗時回傳 None

在 3.5 版的變更: 結果從 tuple 改為 namedtuple。

下列音频标头类型是可识别的,带有如下来自 whathdr() 的返回值: 以及 what():

音频标头格式

'aifc'

Compressed Audio Interchange Files

'aiff'

Audio Interchange Files

'au'

Au 檔案

'hcom'

HCOM 檔案

'sndt'

Sndtool Sound Files

'voc'

Creative Labs Audio Files

'wav'

Waveform Audio File Format Files

'8svx'

8-Bit Sampled Voice Files

'sb'

Signed Byte Audio Data Files

'ub'

UB 檔案

'ul'

uLAW 音檔

sndhdr.tests

执行单个测试的函数列表。每个函数都有两个参数:字节流和类似开放文件的对象。当 what() 用字节流调用时,类文件对象将是 None

如果测试成功,这个测试函数应当返回一个描述图像类型的字符串,否则返回 None

範例:

>>> import sndhdr
>>> imghdr.what('bass.wav')
'wav'
>>> imghdr.whathdr('bass.wav')
'wav'