Python winsound:Windows系统语音处理模块
Python 提供了许多处理语音的模块,不仅可以收听 CD,而且可以读/写各种语音文件的格式,如 .wav、.aifc 等。
图1:程序运行结果
1. winsound模块介绍
winsound 模块提供 Windows操 作系统的语音播放接口。winsound 模块的 PlaySound() 函数可以播放 .wav 语音文件。PlaySound() 函数的语法如下:PlaySound(sound, flags)
其中 sound 可以是 wave 文件名称、字符串类型的语音数据或 None;flags 是语音变量的参数,可以取变量值如下:- SND_FILENAME:表示一个 wav 文件名。
- SND_ALIAS:表示一个注册表中指定的别名。
- SND_LOOP:重复播放语音,必须与SND_ASYNC共同使用。
- SND_MEMORY:表示wave文件的内存图像(memory image),是一个字符串。
- SND_PURGE:停止所有播放的语音。
- SND_ASYNC:PlaySound()函数立即返回,语音在背景播放。
- SND_NOSTOP:不会中断目前播放的语音。
- SND_NOWAIT:若语音驱动程序忙碌,则立即返回。
2. 实例应用:实现简易播放器
下面的示例是创建两个按钮:一个按钮用来打开语音文件并重复播放;另一个按钮则是停止播放该语音文件。from tkinter import * import tkinter. filedialog, winsound #创建主窗口 win = Tk() win.title(string = "处理声音") #打开一个[打开旧文件]对话框 def openSoundFile() : #返回打开的语音文件名 infile = myDialog.show() label.config(text = "声音文件: " + infile) return infile #播放语音文件 def playSoundFile() : infile = openSoundFile() #重复播放 flags = winsound.SND_FILENAME| winsound. SND_LOOP| winsound. SND_ASYNC winsound. PlaySound (infile, flags) #停止播放 def stopSoundFile() : winsound. PlaySound("*", winsound. SND_PURGE) label = Label (win, text="声音文件: ") label . pack (anchor=W) Button (win, text="播放声音", command=playSoundFile) .pack (side=LEFT) Button (win, text="停 止播放",command=stopSoundFile) .pack (side=LEFT) #设置对话框打开的文件类型 myFileTypes = [ ('WAVE format', '* .wav') ] #创建一个[打开旧文件]对话框 myDialog = tkinter . filedialog. Open(win, filetypes=myFileTypes) #开始程序循环 win. mainloop()保存并运行程序 winsoud_test.py,结果如图 1 所示。单击“播放声音”按钮,在打开的对话框中选择 wav 格式的文件,即可重复播放;单击“停止播放”按钮,即可停止声音播放。
图1:程序运行结果