Python sndhdr:音频类型检测接口
sndhdr 模块用于识别语音文件的格式。调用 sndhdr 模块的 what() 方法来执行识别语音文件的功能,语法格式如下:
下面的示例是创建一个按钮来打开语音文件,并显示该语音文件的取样格式。

图1:程序运行结果
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
info = sndhdr.what(filename)
filename 是语音文件的名称。返回值 info 是一个元组,格式如下:(type, sampling_rate, channels, frames, bits_per_sample)
元组中每个值的含义如下所示:- type 是语音文件的格式,可以是 aifc、aiff、au、hcom、sndr、sndt、voc、wav、8svx、sb、ub 或 ul。
- sampling_rate 是每一秒内的取样数目,如果无法译码,就为 0。
- channels 是声道数目,如果无法译码,就为 0。
- frames 是帧的数目,每一帧由每一个声道和一个取样组成。如果无法译码,就为 -1。
- bits_per_sample 可以是取样大小,以位为单位。或是 A,表示 A-LAW,或是 U,表示 U-LAW
下面的示例是创建一个按钮来打开语音文件,并显示该语音文件的取样格式。
#使用 sndhdr 模块
from tkinter import *
import tkinter. filedialog, sndhdr
#创建应用程序的类
class App:
def __init__ (self, master) :
#创建一个Label控件
self. label = Label (master, text="语音文件: ")
self.label.pack()
#创建一个Button控件
self.button = Button (master, text="打开语音文",command=self . openSoundFile)
self .button.pack (side=LEFT)
#设置对话框打开的文件类型
self.myFileTypes = [ ('WAVE format', '* .wav') ]
#创建一个[打开旧文件] 对话框
self .myDialog = tkinter. filedialog . Open (master, filetypes=self .myFileTypes)
#打开语音文件
def openSoundFile(self) :
#返回打开的语音文件名
infile = self.myDialog.show ()
#显示该语音文件的格式
self.getSoundHeader (infile)
def getSoundHeader (self, infile) :
#读取语音文件的格式
info = sndhdr.what (infile)
txt = "语音文件: " + infile + "\n" + "Type: "+ info[0] + "\n"+"Sampling rate:"+ str(info[1]) + "\n"+ \
"Channels: " + str(info[2]) + "\n"+ "Frames: "+ str (info[3]) + "\n" + "Bits per sample: " + str (info[4])
self.label.config(text = txt)
#创建主窗口
win = Tk()
win.title(string = "处理声音")
#创建应用程序类的实例变量
app = App(win)
#开始程序循环
win . mainloop
保存并运行程序 demo.py,结果如图 1 所示,单击“打开语音文件”按钮,在打开的对话框中选择 wav 格式的文件,即可查看文件的信息。
图1:程序运行结果
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。