Изоляция активных областей в массиве аудиопотока

У меня есть аудиофайл, и я хочу только извлечь и узнать места, где что-то на самом деле говорится.

Итак, я использовал библиотеку волн 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

0 ответов

Другие вопросы по тегам