A continuación se muestra una señal que representa una grabación de alguien hablando. Me gustaría crear una serie de señales de audio más pequeñas basadas en esto. La idea es detectar cuándo comienza y termina el sonido 'importante' y usarlos para los marcadores para crear un nuevo fragmento de audio. En otras palabras, me gustaría usar el silencio como indicadores de cuándo un 'fragmento' de audio se ha iniciado o detenido y crear nuevos buffers de audio basados en esto.
Entonces, por ejemplo, si una persona se registra diciendo
Hi [some silence] My name is Bob [some silence] How are you?
entonces me gustaría hacer tres clips de audio de esto. Uno que dice Hi
, uno que dice My name is Bob
y otro que dice How are you?
.
Mi idea inicial es pasar por el búfer de audio constantemente comprobando dónde hay áreas de baja amplitud. Tal vez podría hacer esto tomando las primeras diez muestras, promediar los valores y, si el resultado es bajo, etiquetarlo como silencioso. Seguiría bajando el búfer comprobando las siguientes diez muestras. Al aumentar de esta manera pude detectar dónde comienzan y se detienen los sobres.
Si alguien tiene algún consejo sobre una buena pero sencilla forma de hacerlo, sería genial. Para mis propósitos, la solución puede ser bastante rudimentaria.
No soy un profesional en DSP, pero entiendo algunos conceptos básicos. Además, estaría haciendo esto mediante programación, por lo que sería mejor hablar sobre algoritmos y muestras digitales.
¡Gracias por toda la ayuda!
EDITAR 1
¡Grandes respuestas hasta ahora! Solo quería aclarar que esto no está en audio en vivo y escribiré los algoritmos yo mismo en C u Objective-C, por lo que cualquier solución que use bibliotecas no es realmente una opción.