В приведенном ниже коде самая короткая слышимая длина звука составляет 0,02 секунды. Если я попытаюсь воспроизвести звуки длиной 0,01, они станут почти не слышно "треск". Есть ли способ изменить код, чтобы я мог воспроизводить более короткие звуки?
Увеличение частоты дискретизации не помогает.
import turtle
import numpy as np
import simpleaudio as sa
SAMPLE_RATE = 44100
def get_sound(note, duration, volume=0.5):
time_vector = np.linspace(0, duration, int(duration * SAMPLE_RATE), False)
frequency = 220 * 2 ** (note / 48)
# Generate audio samples
audio = np.sin(frequency * time_vector * 2 * np.pi)
# normalize to 16-bit range
audio *= volume * 32767 / np.max(np.abs(audio))
# convert to 16-bit data
audio = audio.astype(np.int16)
return audio
def loop():
sound_obj = sa.play_buffer(left_sound, 1, 2, SAMPLE_RATE)
sound_obj.wait_done()
sound_obj = sa.play_buffer(right_sound, 1, 2, SAMPLE_RATE)
sound_obj.wait_done()
screen.ontimer(loop, 1000)
left_sound = get_sound(100, 0.02)
right_sound = get_sound(110, 0.02)
screen = turtle.Screen()
loop()
turtle.done()