He usado el flujo espectral en el pasado y parece funcionar bien. La idea básica es crear un espectrograma de su señal a través de las bandas que le interesan. Supongamos que su frecuencia está en el eje y, y su tiempo está en el eje x, así .
Esto significa que su espectrograma es una matriz. Cada columna representa el valor absoluto de la FFT de una instantánea en el tiempo de su señal, y cada fila representa cómo cambia la energía de una banda con el tiempo.
Ahora, simplemente tome la diferencia de columnas. Es decir, tome una columna, reste de sí misma la columna que está delante de ella y haga para todas las columnas. (Dejando las columnas de inicio solas obviamente). Luego suma a través de todas las bandas. Es decir, solo suma todas las filas juntas.
Terminará con una señal 1-D que codifica su inicio de señal . Esto te dirá dónde comienza tu voz.
EDITAR:
Ahora que ha detectado la aparición, si desea detectar lo contrario (es decir, cuando una señal pasa de tener actividad a ninguna), el flujo espectral realmente le brinda esa información. Dondequiera que tenga un inicio, tendrá un pico positivo, y donde sea que tenga un 'deset' (a falta de una palabra mejor), tendrá un pico negativo.
Simplemente tomaría el primer pico positivo y el último pico negativo para marcar los tiempos totales de inicio y finalización de mi señal.