所以我正在研究这个需要音频输出的python程序。它可以生成方波音频,因此当音频从高变低时,您可以听到扬声器发出的咔嗒声,反之亦然。我使用PyAudio在Windows中测试了这个概念并且它有效,但是当我在Ubuntu中使用Python-AlsaAudio时,我听不到咔嗒声。奇怪的是,如果我将音频输出设置为正弦波,那么我就能听到一个音调。因此,我很困惑为什么我能听到正弦波,而不是方波。
以下是我能够复制问题的代码示例:
import math
import alsaaudio as aa
#set up audio
dev = aa.PCM(aa.PCM_PLAYBACK, aa.PCM_NONBLOCK)
RATE = 8000
dev.setchannels(1)
dev.setrate(RATE)
on = ''.join(chr(255) for x in range(RATE/10))
off = ''.join(chr(0) for x in range(RATE/10))
data = ''
for x in range(100): data += on+off #create the square wave
#uncomment the below line to hear the sine tone
#data = ''.join([chr(int(math.sin(x)*127+128)) for x in range(RATE)]) #create the sine wave
dev.write(data) #output audio
音频速率为8000,适用于正弦波。按原样运行代码应该发挥方波,这是我无法得到的,甚至在运行Ubuntu的其他计算机上也是如此。如果你取消注释它取消注释的数据行,那么它将播放我能听到的正弦波。
如果有人知道什么是错的和/或如何解决它,我将非常感激。感谢。
--- ---编辑
我设法通过安装和使用PyAudio来解决问题。现在它完美无缺。