winsound — Windows 声音播放接口


winsound 模块提供了访问 Windows 平台提供的基本声音播放机制的功能。它包含函数和一些常量。

winsound.Beep(frequency, duration)

使 PC 扬声器发出蜂鸣声。frequency 参数指定声音的频率(赫兹),必须在 37 到 32,767 的范围内。duration 参数指定声音持续的毫秒数。如果系统无法使扬声器发出蜂鸣声,则会引发 RuntimeError

winsound.PlaySound(sound, flags)

调用平台 API 中底层的 PlaySound() 函数。sound 参数可以是文件名、系统声音别名、以类字节对象表示的音频数据,或 None。它的解释取决于 flags 的值,flags 可以是以下描述的常量按位或运算的组合。如果 sound 参数是 None,则停止当前播放的任何波形声音。如果系统指示错误,则会引发 RuntimeError

winsound.MessageBeep(type=MB_OK)

调用平台 API 中底层的 MessageBeep() 函数。这会播放注册表中指定的声音。type 参数指定要播放的声音;可能的值包括 -1MB_ICONASTERISKMB_ICONEXCLAMATIONMB_ICONHANDMB_ICONQUESTIONMB_OK,所有这些都在下面描述。值 -1 会产生“简单的蜂鸣声”;如果无法以其他方式播放声音,这是最终的备用选项。如果系统指示错误,则会引发 RuntimeError

winsound.SND_FILENAME

sound 参数是 WAV 文件的名称。不要与 SND_ALIAS 一起使用。

winsound.SND_ALIAS

sound 参数是注册表中的声音关联名称。如果注册表中没有此类名称,则播放系统默认声音,除非还指定了 SND_NODEFAULT。如果没有注册默认声音,则引发 RuntimeError。不要与 SND_FILENAME 一起使用。

所有 Win32 系统至少支持以下内容;大多数系统支持更多:

PlaySound() name

对应的控制面板声音名称

'SystemAsterisk'

星号

'SystemExclamation'

感叹号

'SystemExit'

退出 Windows

'SystemHand'

严重停止

'SystemQuestion'

问题

例如:

import winsound
# Play Windows exit sound.
winsound.PlaySound("SystemExit", winsound.SND_ALIAS)

# Probably play Windows default sound, if any is registered (because
# "*" probably isn't the registered name of any sound).
winsound.PlaySound("*", winsound.SND_ALIAS)
winsound.SND_LOOP

重复播放声音。必须同时使用 SND_ASYNC 标志以避免阻塞。不能与 SND_MEMORY 一起使用。

winsound.SND_MEMORY

PlaySound()sound 参数是 WAV 文件的内存映像,表示为类字节对象

备注

此模块不支持异步从内存映像播放,因此此标志与 SND_ASYNC 的组合将引发 RuntimeError

winsound.SND_PURGE

停止播放指定声音的所有实例。

备注

现代 Windows 平台不支持此标志。

winsound.SND_ASYNC

立即返回,允许声音异步播放。

winsound.SND_NODEFAULT

如果找不到指定的声音,不播放系统默认声音。

winsound.SND_NOSTOP

不中断当前正在播放的声音。

winsound.SND_NOWAIT

如果声音驱动程序繁忙,则立即返回。

备注

现代 Windows 平台不支持此标志。

winsound.SND_APPLICATION

sound 参数是注册表中的应用程序特定别名。此标志可以与 SND_ALIAS 标志结合使用,以指定应用程序定义的声音别名。

winsound.SND_SENTRY

播放声音时触发 SoundSentry 事件。

在 3.14 版本加入。

winsound.SND_SYNC

同步播放声音。这是默认行为。

在 3.14 版本加入。

winsound.SND_SYSTEM

将声音分配给系统通知声音的音频会话。

在 3.14 版本加入。

winsound.MB_ICONASTERISK

播放 SystemDefault 声音。

winsound.MB_ICONEXCLAMATION

播放 SystemExclamation 声音。

winsound.MB_ICONHAND

播放 SystemHand 声音。

winsound.MB_ICONQUESTION

播放 SystemQuestion 声音。

winsound.MB_OK

播放 SystemDefault 声音。

winsound.MB_ICONERROR

播放 SystemHand 声音。

在 3.14 版本加入。

winsound.MB_ICONINFORMATION

播放 SystemDefault 声音。

在 3.14 版本加入。

winsound.MB_ICONSTOP

播放 SystemHand 声音。

在 3.14 版本加入。

winsound.MB_ICONWARNING

播放 SystemExclamation 声音。

在 3.14 版本加入。