サウンドトーンサウンドクリップを連結して作成されたオーディオの "ポップ"と "クリック"サウンドを削除するにはどうすればよいですか?PyAudioの連結されたサウンドデータからポップを削除するには
私は一連のトーンを生成するため、このPyAudioコードがあります。
import time
import math
import pyaudio
class Beeper(object):
def __init__(self, **kwargs):
self.bitrate = kwargs.pop('bitrate', 16000)
self.channels = kwargs.pop('channels', 1)
self._p = pyaudio.PyAudio()
self.stream = self._p.open(
format = self._p.get_format_from_width(1),
channels = self.channels,
rate = self.bitrate,
output = True,
)
self._queue = []
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
self.stream.stop_stream()
self.stream.close()
def tone(self, frequency, length=1000, play=False, **kwargs):
number_of_frames = int(self.bitrate * length/1000.)
##TODO:fix pops?
g = get_generator()
for x in xrange(number_of_frames):
self._queue.append(chr(int(math.sin(x/((self.bitrate/float(frequency))/math.pi))*127+128)))
def play(self):
sound = ''.join(self._queue)
self.stream.write(sound)
time.sleep(0.1)
with Beeper(bitrate=88000, channels=2) as beeper:
i = 0
for f in xrange(1000, 800-1, int(round(-25/2.))):
i += 1
length = log(i+1) * 250/2./2.
beeper.tone(frequency=f, length=length)
beeper.play()
が、色調の変化は、独特の「ポップ」は、オーディオであります、と私はそれを削除するかどうかはわかりません。
最初は、各クリップをただちに再生していたためにポップが発生していると思っていました。クリップを生成したときの各再生の時間は、オーディオをフラットラインにするのに十分な遅延でした。しかし、すべてのクリップを1つのストリングに連結して再生したところ、ポップはまだそこに残っていました。
次に、正弦波が各クリップの境界で一致しないと思ったので、現在のオーディオクリップの最初のNフレームを前のクリップの最後のNフレームで平均化しようとしましたが、何の効果もありませんでした。
私は間違っていますか?これをどうやって解決するのですか?
は、あなたがまだ波形を見たことがありますか? –
ここに推測..おそらくシンプルで単一のビープ音を分離してください。サウンドのようなアンプがオン/オフしています。また、88000はビープ音のビットレートが高いように見えました。これはチャープですか?ビットレートで符号化された電圧振幅で、周波数帯域幅は忠実度のためのものです。 – wbg