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!


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".



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


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.