python语音处理_Python winsound:Windows系统语音处理模块

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

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 格式的文件,即可重复播放;单击“停止播放”按钮,即可停止声音播放。

python语音处理_Python winsound:Windows系统语音处理模块_第1张图片

图1:程序运行结果

你可能感兴趣的:(python语音处理)