Взлом аудио с использованием модуля Wave Python - PullRequest
0 голосов
/ 28 октября 2019

Я использую приведенный ниже код, чтобы попытаться сделать простую песню, но каждый раз, когда изменяется высота звука, в моем динамике слышен треск. Это происходит только тогда, когда я изменяю продолжительность ниже 1. Продолжительность - это частоты [index] [2]. Есть ли способ предотвратить растрескивание?

import wave

towrite = ''
x = 0
pause = [1, 1, 0.1]
frequencies = [[90, 1, 1], pause, [90, 1, 0.3], pause, [110, 1, 0.4], pause, [90, 1, 0.4], pause, [78, 1, 0.4], pause, [72, 1, 1], pause, [66, 1, 1]]
for freq in frequencies:
    if(x%100==0):
        print(x)
    x+=1
    samplerate = 88200
    samples = freq[2]*samplerate
    period = samplerate / float(freq[0])
    period2 = samplerate / float(freq[1])# in sample points
    omega = np.pi * 2 / period
    omega2 = np.pi * 2 / period2

    xaxis = np.arange(samples,dtype = np.float)
    ydata = 16384 * (np.sin(xaxis*omega) + np.sin(xaxis*omega2))

    signal = np.resize(ydata, (samples,))

    towrite += ''.join([wave.struct.pack('h',s) for s in signal])

    f = wave.open('frequency.wav', 'wb')
    f.setparams((1,2,44100, 44100*4, 'NONE', 'noncompressed'))
    f.writeframes(towrite)
    f.close()

...