Оконный аудиопоток: IndexError при создании кадров - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь применить окно Хемминга к моему аудиопотоку, буфер буфера имеет размер буфера 200, а входные аудиоданные (для каждого буфера / фрагментов) - это аудио, дискретизированное с частотой 16 000 Гц.

def hamming_window(audio_stream, sample_rate):
    frame_size = float(0.025)  # Frame size: 25 ms
    frame_increment = float(0.010)   # Overlap: 15 ms
    frame_length = int(round(frame_size * sample_rate)) # seconds to samples
    frame_step = int(round(frame_increment * sample_rate)) # seconds to samples
    stream_length = len(audio_stream)
    num_frames = int(np.ceil(np.abs(stream_length - frame_length) / frame_step)) # atleast 1

    # preventing the last frame from not be missing any samples by filling it with zeros
    padding_length = num_frames * frame_step + frame_length
    zeroes_padding = np.zeros(padding_length - stream_length)
    padded_stream = np.append(audio_stream, zeroes_padding)

    # create frames by indexing the audio stream
    num_frame_arr = np.arange(start=0, stop=frame_length)   # evenly spaced array '0' to 'frame_length - 1' 
    frame_len_arr = np.arange(start=0, stop= num_frames*frame_step, step=frame_step)
    indices = np.tile(num_frame_arr, (num_frames, 1)) + np.tile(frame_len_arr, (frame_length, 1)).T
    frames = padded_stream[indices.astype(np.int32, copy=False)]
    ...
    return frames

Результатом является «Ошибка IndexE: индекс 81 выходит за пределы для оси 1 с размером 81».at 'frames = padded_stream [indices.astype (np.int32, copy = False)]'

Есть идеи о том, как исправить эту ошибку IndexError?Спасибо!

...