Я пытаюсь применить окно Хемминга к моему аудиопотоку, буфер буфера имеет размер буфера 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?Спасибо!