【发布时间】:2017-02-12 19:34:09
【问题描述】:
运行时,音高之间会发出咔哒声。我不太介意咔哒声——它很有节奏感。那就是……
- 我希望能够在我不想要这种咔哒声时消除它。
- 更好的是,能够控制点击声音会很好 以某种方式 - 音量等。
我已经看过这个帖子,但还没有弄清楚如何将它应用于我的问题: How to remove pops from concatented sound data in PyAudio
有什么想法吗?感谢您的宝贵时间!
import numpy
import pyaudio
import math
import random
def sine(frequency, length, rate):
length = int(length * rate)
factor = float(frequency) * (math.pi * 2) / rate
waveform = numpy.sin(numpy.arange(length) * factor)
return waveform
def play_tone(stream, frequency, length, rate=44100):
chunks = []
chunks.append(sine(frequency, length, rate))
chunk = numpy.concatenate(chunks) * .25
stream.write(chunk.astype(numpy.float32).tostring())
def bassline():
frequency = 300
for i in range(1000000):
play_tone(stream, frequency, .15)
change = random.choice([-75, -75, -10, 10, 2, 3, 100, -125])
print (frequency)
if frequency < 0:
frequency = random.choice([100, 200, 250, 300])
else:
frequency = frequency + change
if __name__ == '__main__':
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paFloat32,
channels=1, rate=44100, output=4)
bassline()
/编辑
我已经绘制了音调,看起来不连续性在于每个音调的开始和结束阶段之间的关系。
任何想法如何解决这个问题?
【问题讨论】:
-
您应该尝试绘制生成的波形。通过这种方式,您可能会看到导致点击的不连续性。
-
既然你现在知道了问题的原因,也知道它与 PyAudio 或 PortAudio 没有任何关系,你应该放弃这个问题,问一个描述你实际问题的新问题。您应该尝试将示例代码减少到相关部分。您还应该考虑在dsp.stackexchange.com 提问,因为这实际上是一个 DSP 问题。
标签: python audio signal-processing pyaudio portaudio