Пример #1
0
def play_signal(signal: Signal,
                fs: int,
                start: Optional[Frames] = None,
                end: Optional[Frames] = None):
    start = to_frames(start if start is not None else 0)
    end = to_frames(end if end is not None else signal.get_range(fs)[1])
    buffer = signal.get_temporal(fs, start, end)

    # Ensure that highest value is in 16-bit range
    audio = buffer / np.max(np.abs(buffer)) * (2 ** 15 - 1)

    # Convert to 16-bit data
    audio = audio.astype(np.int16)

    # Start playback
    play_obj = sa.play_buffer(audio, 1, 2, fs)

    # Wait for playback to finish before exiting
    play_obj.wait_done()
Пример #2
0
def get_centered_sample(signal: Signal):
    lower, upper = signal.get_range()
    lower_frames = to_frames(lower)
    upper_frames = to_frames(upper)
    return np.roll(signal.get_temporal(lower_frames, upper_frames), lower_frames)