如何在Python中发出警报声?

1 投票
2 回答
3162 浏览
提问于 2025-04-15 22:13

我想在Python里用哔哔声做一个警报声,但一直没成功。

我试着做了这样的代码:

winsound.Beep(700,500)
winsound.Beep(710,500)
winsound.Beep(720,500)
...

有没有更好的方法来实现这个?并且能播放出来?

不想用外部文件……

谢谢!

2 个回答

2

我记得小时候在QBASIC上用过类似的东西:

DO
FOR n = -180 TO 180 STEP .1
f = 440 + 50 * SIN(n)
SOUND f, 1
NEXT
LOOP

SOUND f, 1 应该和 winsound.Beep 是一样的,都是用来发出声音的,只不过是通过音调和持续时间来控制。以前用的时候效果很好,但自从我从这里拿到这个代码片段后,我就不太确定我是不是完全按照这个方法做的。

这只是给你一个大概念..

3

首先,你需要录制一个高质量的警报声,并把它保存为WAV格式的文件。可以使用Audacity这个工具,它非常好用,可能还会提供合适的声音生成器来帮助你完成这个任务。

winsound.PlaySound('siren.wav', winsound.SND_FILENAME)

另外,你也可以把这个声音直接放进脚本里,变成一个字符串,这样就不需要单独的文件了:

siren = base64.b64decode('''
    <base64-encoded data>
    ''')
winsound.PlaySound(siren, winsound.SND_MEMORY)

要为创建数据,你可以把WAV文件通过一个base64编码器处理一下(比如说,这里有一个简单的命令行工具,下载后里面有win32的可执行文件),然后把输出结果粘贴到字符串里。顺便说一下,使用base64并不是必须的,它只是一个方便的方法,可以把二进制数据嵌入到Python源文件中。

撰写回答