Изоляция активных областей в массиве аудиопотока
У меня есть аудиофайл, и я хочу только извлечь и узнать места, где что-то на самом деле говорится.
Итак, я использовал библиотеку волн Python для чтения файла WAV и получил поток массива
import numpy as np
import wave
spf = wave.open("sample.wav", "r")
# Extract Raw Audio from Wav File
signal = spf.readframes(-1)
signal = np.fromstring(signal, "Int16")
frames = spf.getnframes()
rate = spf.getframerate()
duration = frames / float(rate)
print("Audio Frames: ",frames)
print("Audio Rate(s): ",rate)
print("Audio Duration(s): ",duration)
print(len(signal))
print(signal)
(array_stream) signal = [-1 -1 -1... -5 9 4]
len (сигнал) = 582427
когда я построил массив, я получил волновой график (
Если я увеличу масштаб, я вижу, что это непрерывная волна. И я хочу извлечь начальное и конечное местоположение (индекс массива) активных областей этой волны.
output_array = [(начало1, конец1),(начало2, конец2).....]
Я застрял на этом некоторое время и мог бы использовать некоторую помощь в создании этой логики
вы можете получить образец файла WAV здесь: https://drive.google.com/file/d/1wrqiCciR_WLjpmcIrYV27MH_epSIIXgz/view?usp=sharing