所以我正在研究这个用python编写的需要音频输出的项目。它生成方波音频,因此当音频从高变为低时,您可以听到扬声器发出的咔哒声,反之亦然。我在 Windows 中使用 PyAudio 测试了这个概念并且它有效,但是当我在 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 设法解决了这个问题。现在它完美地工作了。