python - 使用 PyAudio 生成音调时,为什么我会在它们之间听到点击声?

标签 python macos python-2.7 pyaudio

标题解释了问题所在。我不知道如何解决这个问题。咔嗒声发生在每个播放的音调之间。对某些人来说,我听起来也很流行。

import math
import pyaudio
import sys

PyAudio = pyaudio.PyAudio


def playTone(rate,wave,time,channel):
  data = ''.join([chr(int(math.sin(x/((rate/wave)/math.pi))*127+128)) for x in xrange(rate)])
  p = PyAudio()

  stream = p.open(format =
    p.get_format_from_width(1),
    channels = channel,
    rate = rate,
    output = True)
  for DISCARD in xrange(int(time)):
      stream.write(data)
  #stream.stop_stream()
  #stream.close()
  #p.terminate()


'''
playTone(88000,400,1,2)
playTone(88000,500,1,1)
playTone(88000,600,1,2)
playTone(88000,700,1,2)
'''

def scale(noteNumber):
  counter = 100
  while noteNumber*100 > counter:
    playTone(88000,100+counter,1,2)
    counter += 100

scale(10)

最佳答案

构建 data = ''.join([... 和播放 stream.write(data) 之间存在差距。 间隙会发出咔嗒声。

要找出答案,请尝试转储数据并将其作为88000Hz、8位和2ch原始数据播放。

简单的解决方案是在播放之前生成所有信号。

或者,使用不同的线程来生成和播放声音。

关于python - 使用 PyAudio 生成音调时,为什么我会在它们之间听到点击声?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23004365/

相关文章:

macos - 如何在cocoa中访问finder侧边栏共享​​内容

python - Pandas :将特定功能应用于列并创建其他列

python - Django 错误 : Invalid column name 'id'

python - Pandas - 在列中附加行值的总和(如果总和为偶数)或 NaN(如果为奇数)

python - 在Mac OS X 10.9.5上安装Psycopg2

python - Python 3 中 .keys() 的最 Pythonic 替代品

python - 仅在特定时间之间运行命令,否则运行其他命令

c++ - 我运行 sudo g++ main.cpp,但它不运行程序

python - 使用 argparse,将任意字符串作为要在脚本中使用的参数传递

Python 生成错误 : failed to build modules _ssl and _hashlib