Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 音频输出混乱,方波发生器无声音_Python_Ubuntu_Audio_Pyalsaaudio - Fatal编程技术网

Python 音频输出混乱,方波发生器无声音

Python 音频输出混乱,方波发生器无声音,python,ubuntu,audio,pyalsaaudio,Python,Ubuntu,Audio,Pyalsaaudio,所以我正在做这个用python编程的项目,它需要音频输出。它生成方波音频,因此当音频从高变低或从低变高时,您可以听到扬声器的咔哒声。我在Windows中使用PyAudio测试了这个概念,它成功了,但是当我在Ubuntu中使用Python AlsaAudio时,我听不到点击声。奇怪的是,如果我将音频输出设置为正弦波,那么我可以听到音调。正因为如此,我对为什么我能听到正弦波而不能听到方波感到困惑 下面是我能够复制问题的代码示例: import math import alsaaudio as aa

所以我正在做这个用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解决了这个问题。现在它工作得很好。

你的频率真的很低,像5赫兹之类。我很惊讶你能听到任何声音。sine-otoh高于1kHz,这是一种非常不寻常的产生正弦的方法。试着增加方波的频率,看看这是否有帮助。这不是问题,因为通过一系列的点击,可以在Windows上听到该频率。我想听听Ubuntu上的点击声,但我不能。无论频率如何,方波信号总是以足够高的振幅发出咔哒声。你们的第二句话完全错了。方波是基频和所有奇次谐波的正弦,每一次谐波的电平降低。您所听到的任何咔哒声都可能是扬声器偏移的一些伪影,随后交流耦合滤波器将耗尽。正如你所展示的,你不能依赖它,但那又如何解释为什么它可以在Windows上工作而不能在Ubuntu上工作呢?将相同的音频信号发送到音频设备。您是否在同一台电脑上同时运行这两种音频信号?