在下面的代码中,声音的最短可听长度为0.02秒。如果我尝试播放长度为0.01的声音,它们将变成几乎听不见的“ cra啪声”。有什么方法可以修改代码,以便我播放较短的声音?
增加采样率无济于事。
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()