Улучшение Python звуковой функции для воспроизведения коротких звуков - PullRequest
0 голосов
/ 14 апреля 2020

В приведенном ниже коде самая короткая слышимая длина звука составляет 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()

...