混乱的PythonAlsaAudio输出,方波发生器上没有声音

2024-04-26 14:56:45 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在做一个用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,我设法解决了这个问题。现在它完美地工作了。在


Tags: theindevfordataraterange音频