Enquanto procurava uma resposta para esse problema, encontrei este fórum, então decidi postar essa questão minha no Stack Overflow.
Estou procurando um método para determinar a semelhança entre um segmento de áudio e uma voz humana, que é expressa numericamente.
Pesquisei bastante, mas o que encontrei até agora (detalhado abaixo) não se encaixa realmente no que preciso:
Um método é usar o software de reconhecimento de fala para obter palavras de um segmento de áudio. No entanto, esse método é incapaz de apresentar como o áudio "semelhante" é ao discurso humano; geralmente é possível saber se há ou não palavras no áudio, mas se não houver palavras definidas, não é possível saber se o áudio deve ter essas palavras.
Exemplos: CMU Sphinx , Dragonfly , SHoUTO método mais promissor é conhecido como VAD ( Voice Activity Detection ). No entanto, isso tende a ter os mesmos problemas: os algoritmos / programas que usam VAD tendem a retornar apenas se o limite de atividade foi atingido ou não, e nenhum valor de "similaridade" antes ou depois desse limite. Alternativamente, muitos apenas procuram volume, não semelhança com a fala humana.
Exemplos: Speex , Listener , FreeSWITCH
Alguma ideia?
fonte
Respostas:
Esse tipo de problema geralmente é resolvido usando técnicas de aprendizado de máquina.
Divida o sinal em uma sequência de quadros de 20 ms ou 50 ms. Extrair recursos em cada quadro. Os MFCC geralmente são bons para esse tipo de aplicação, embora existam recursos mais específicos para a detecção de voz (energia de modulação de 4 Hz - que é aproximadamente a taxa na qual as pessoas falam; taxa de cruzamento zero).
Em seguida, usando um conjunto de treinamento de áudio que você rotulou manualmente como fala / não fala, treine um classificador (modelos de mistura gaussiana, SVM ...) nos recursos de quadros.
Isso permitirá que você classifique os quadros não rotulados em classes de fala / não fala. A última etapa consiste em suavizar as decisões (é provável que um quadro classificado como não-discurso cercado por centenas de quadros de fala seja um erro de classificação), por exemplo, usando HMMs ou apenas um filtro mediano.
Algumas referências:
Classificação robusta de fala / música em documentos de áudio (Pinquier e cols.) Discriminação de fala / música para aplicativos multimídia (El-Maleh e cols) Uma comparação de recursos para discriminação de fala / música (Carey e cols)
Observe que os recursos e as técnicas de classificação que eles descrevem também são relevantes para o problema de classe 1 de detecção de fala (em vez de discriminar fala versus outra coisa). Nesse caso, você pode usar técnicas de modelagem de 1 classe, como SVM de 1 classe, ou apenas obter a pontuação de probabilidade de um GMM treinado em dados de fala como uma medida de "fala".
Se, por outro lado, seu problema é realmente discriminar a fala em relação a outra coisa (digamos, música), você também pode usar abordagens não supervisionadas, focadas em detectar os limites entre conteúdos de áudio semelhantes - em vez de identificar esse conteúdo em si.
fonte