Python:发出哔哔声

时间:2011-06-30 15:47:10

标签: python audio serial-port

我正试图让程序给我一个哔哔声。我在一台Windows机器上。我看过http://docs.python.org/library/winsound.html

但不确定如何使用条形码扫描仪对其进行编程。

这是我的串行条码扫描器的代码。

ser = serial.Serial()
ser.baudrate = 9600

#for windows
ser.port = 2 #for COM3

ser.open()
ser.write('hello')
ser.close()

更新:因为我用哔哔声扰乱了我的同事。我可以通过耳机的音频插孔来获取它吗?

11 个答案:

答案 0 :(得分:110)

执行此操作的跨平台方式是print '\a'。这会将ASCII Bell字符发送到stdout,并希望产生一个蜂鸣声(一个'警报')。请注意,许多现代终端仿真器提供了忽略铃声字符的选项。

由于您使用的是Windows,因此您会很高兴听到Windows有自己的(支撑自己) Beep API ,它允许您发送任意长度和音高的哔哔声。请注意,这是一个仅限Windows的解决方案,因此您可能更喜欢print '\a',除非您真的关心赫兹和毫秒。

通过 winsound 模块访问Beep API:http://docs.python.org/library/winsound.html

答案 1 :(得分:107)

在Windows上,如果您只想让计算机发出哔声:

import winsound
frequency = 2500  # Set Frequency To 2500 Hertz
duration = 1000  # Set Duration To 1000 ms == 1 second
winsound.Beep(frequency, duration)

winsound.Beep()可以在任何您想要发出哔哔声的地方使用。

答案 2 :(得分:18)

<强> Linux操作系统。

$ apt-get install beep

$ python
>>> os.system("beep -f 555 -l 460")

OR

$ beep -f 659 -l 460 -n -f 784 -l 340 -n -f 659 -l 230 -n -f 659 -l 110 -n -f 880 -l 230 -n -f 659 -l 230 -n -f 587 -l 230 -n -f 659 -l 460 -n -f 988 -l 340 -n -f 659 -l 230 -n -f 659 -l 110 -n -f 1047-l 230 -n -f 988 -l 230 -n -f 784 -l 230 -n -f 659 -l 230 -n -f 988 -l 230 -n -f 1318 -l 230 -n -f 659 -l 110 -n -f 587 -l 230 -n -f 587 -l 110 -n -f 494 -l 230 -n -f 740 -l 230 -n -f 659 -l 460

答案 3 :(得分:10)

我正在寻找相同的但是对于Linux shell。

这个话题让我得到答案,谢谢 -

也许更多的pythonic方式:

import os
beep = lambda x: os.system("echo -n '\a';sleep 0.2;" * x)
beep(3)

注意:

  • 睡眠值(此处为0.2)取决于默认哔声的长度(秒)
  • 我选择使用os.system而不是subprocess.Popen以简化(可能不好)
  • echo的'-n'将不再显示
  • 最后一个';'在生成的文本序列(* x)
  • 之后需要sleep
  • 也通过x期间的ssh测试

答案 4 :(得分:4)

我为此目的做了package

你可以像这样使用它:

from pybeep.pybeep import PyVibrate, PyBeep
PyVibrate().beep()
PyVibrate().beepn(3)
PyBeep().beep()
PyBeep().beepn(3)

它取决于sox并且仅支持python3。

答案 5 :(得分:2)

跨平台方式:

import time
import sys
for i in range(1,6):
    sys.stdout.write('\r\a{i}'.format(i=i))
    sys.stdout.flush()
    time.sleep(1)
sys.stdout.write('\n')

答案 6 :(得分:2)

有Windows答案和Debian答案,所以这是 Mac 之一:

这假设您只是在这里寻找一种快速的方法来制作可自定义的警报声音,而不是专门在Windows上获得的压电蜂鸣声:

[T430040,  T432040,  T411030,  CH1090,  T432050,  T432090,  T432020,  CRP040,  T432070,  T040060]

免责声明:如果您担心有人在窃听您的蜂鸣声代码,可以将os.system( "say beep" ) 替换为对os.system模块的调用。

请参阅:How to make the hardware beep sound in Mac OS X 10.6

答案 7 :(得分:1)

在任何平台上使用pygame

使用pygame的优点是可以使其在任何OS平台上都能工作。 以下示例代码适用于GNU / Linux

首先将pygame的{​​{1}}模块安装为explained in detail here

python3

$ sudo pip3 install pygame 模块可以从任何文件位置播放pygame.wav文件。这是一个示例:

.ogg

答案 8 :(得分:0)

在Linux上: print('\007')会发出系统铃声。

答案 9 :(得分:0)

对于Windows

import os
os.system("\a")

答案 10 :(得分:-1)

# playsound in cross plate form, just install it with pip
#  first install playsound > pip install playsound
from playsound import playsound
playsound('audio.mp3')