首页 > 编程笔记

Python sndhdr:音频类型检测接口

sndhdr 模块用于识别语音文件的格式。调用 sndhdr 模块的 what() 方法来执行识别语音文件的功能,语法格式如下:

info = sndhdr.what(filename)

filename 是语音文件的名称。返回值 info 是一个元组,格式如下:

(type, sampling_rate, channels, frames, bits_per_sample)

元组中每个值的含义如下所示:
下面的示例是创建一个按钮来打开语音文件,并显示该语音文件的取样格式。
#使用 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:程序运行结果

优秀文章