Bibliotecas para detecção de atividade de voz (não reconhecimento de fala)

18

Como acompanhamento da minha pergunta anterior, eu queria saber se existem bibliotecas de detecção de fala existentes. Por detecção de fala, quero dizer passar em um buffer de áudio e recuperar um índice de onde a fala começa e para. Portanto, se eu tiver 10 segundos de amostragem de áudio a 44kHz, esperaria uma matriz de números como:

44000
88000
123000
190334
...

Isso indicaria, por exemplo, que a fala começa um segundo e depois termina no ponto de dois segundos, etc.

O que não estou procurando é o reconhecimento de fala, que grava o texto da palavra falada. Infelizmente, é isso que vejo muito quando pesquiso no Google 'detecção de fala'.

Seria ótimo se a biblioteca estivesse em C, C ++ ou até Objective-C, pois estou escrevendo um aplicativo para o iPhone.

Obrigado!

Eric Brotto
fonte
1
Você pode encontrar sua resposta em uma destas respostas: dsp.stackexchange.com/questions/912/…
Geerten
1
Isto é muito semelhante, exceto cantando em vez de discurso: dsp.stackexchange.com/q/2367/29
endolith
1
Também relevante: dsp.stackexchange.com/a/1543/29 "detecção de atividade de voz"
endolito
1
Você deve procurar a detecção de onset / offset. É um campo ativo com muitas aplicações no processamento de sinais de música, fala e radar.
CyberMen

Respostas:

13

Na minha resposta à sua pergunta, mencionei que a Detecção de atividade de voz é um recurso padrão para codecs como G.729 e outros.

Você deve procurar por codificadores e decodificadores de referência para algoritmos que apliquem isso.

Um exemplo é - http://www.voiceage.com/openinit_g729.php

Outra fonte possível é o codec Speex. O que implementa o VAD

BTW: você deve pesquisar no Google "Voice Activity Detection" ou "Talk Spurt" em vez de "Speech Detection".

Dipan Mehta
fonte
6

Existem implementações de código aberto nos projetos Sphinx e Freeswitch. Eu acho que todos eles são detectores baseados em energia e não precisam de nenhum modelo.

Sphinx 4 (Java, mas deve ser fácil portar para C / C ++)

PocketSphinx

Freeswitch

Resposta retirada da pergunta Stackoverflow .

Geerten
fonte
4

A detecção de atividade de voz usando o limiar adaptável é muito fácil e prática de implementar em qualquer plataforma

Aqui você pode ter um algoritmo baseado em energia adaptativa

Uma pequena adição ao algoritmo acima, quando você está calculando pela primeira vez, deve usar Mean of Energy e marcar como Emin

Neste, o quadro que você passa é dividido em sub-quadros e, além disso, você pode examinar cada sub-quadro para verificar sua atividade.

você pode superar outros problemas com quadros sobrepostos

kakeh
fonte
Estou tentando implementar o método no papel, mas me perco quando o Min_E é zero devido à supressão de ruído. Nesse caso, o Thresh_E seria -INF da equação. Mesmo usando log1p (Min_E), o Thresh_E seria zero, de modo que é muito fácil classificar incorretamente os quadros sonoros devido à energia diferente de zero. Alguma boa sugestão ou estou entendendo errado? Equações: Thresh _ E Energy _ Pr imThresh * log (Min _ E)
Farley
3

E o LibVAD?

Parece que faz exatamente o que você está descrevendo.

Divulgação: Eu sou o desenvolvedor por trás do LibVAD

Charles
fonte
Como se obtém o libVAD?
todd
Ao comprá-lo. O site não divulga um preço até depois de você preencher um formulário.
Camille Goudeseune
2
O link agora vai para um site de malware que deseja que os visitantes atualizem o flash.
Steve Severance