Abaixo está um sinal que representa a gravação de alguém falando. Eu gostaria de criar uma série de sinais de áudio menores com base nisso. A idéia é detectar quando o som 'importante' começa e termina e usa-os como marcadores para criar um novo trecho de áudio. Em outras palavras, eu gostaria de usar o silêncio como indicadores de quando um 'pedaço' de áudio foi iniciado ou parado e criar novos buffers de áudio com base nisso.
Por exemplo, se uma pessoa se registra dizendo
Hi [some silence] My name is Bob [some silence] How are you?
então eu gostaria de fazer três clipes de áudio com isso. Um que diz Hi, um que diz My name is Bobe outro que diz How are you?.
Minha idéia inicial é percorrer o buffer de áudio constantemente verificando onde existem áreas de baixa amplitude. Talvez eu possa fazer isso coletando as dez primeiras amostras, calculando a média dos valores e, se o resultado for baixo, rotule-o como silencioso. Eu continuaria com o buffer verificando as próximas dez amostras. Incrementando desta maneira, eu pude detectar onde os envelopes começam e param.
Se alguém tiver algum conselho sobre uma maneira boa, mas simples de fazer isso, seria ótimo. Para meus propósitos, a solução pode ser bastante rudimentar.
Não sou profissional no DSP, mas entendo alguns conceitos básicos. Além disso, eu faria isso programaticamente, para que fosse melhor falar sobre algoritmos e amostras digitais.
Obrigado por toda a ajuda!

EDIT 1
Ótimas respostas até agora! Só queria esclarecer que isso não está no áudio ao vivo e eu mesmo escreverei os algoritmos em C ou Objective-C, para que quaisquer soluções que usem bibliotecas não sejam realmente uma opção.
