首页 > Python编程笔记 阅读数:13

Python winsound:Windows系统语音处理模块

Python 提供了许多处理语音的模块,不仅可以收听 CD,而且可以读/写各种语音文件的格式,如 .wav、.aifc 等。

1. winsound模块介绍

winsound 模块提供 Windows操 作系统的语音播放接口。winsound 模块的 PlaySound() 函数可以播放 .wav 语音文件。PlaySound() 函数的语法如下:

PlaySound(sound, flags)

其中 sound 可以是 wave 文件名称、字符串类型的语音数据或 None;flags 是语音变量的参数,可以取变量值如下:

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:程序运行结果

优秀文章