Quando a faixa risada entra em ação?

14

Um dos meus projetos de fim de semana me levou às águas profundas do processamento de sinais. Como em todos os meus projetos de código que exigem alguma matemática pesada, estou mais do que feliz em tentar encontrar uma solução, apesar da falta de fundamentação teórica, mas, neste caso, não tenho nenhuma e gostaria de alguns conselhos sobre o meu problema. , a saber: estou tentando descobrir exatamente quando a audiência ao vivo ri durante um programa de TV.

Passei bastante tempo lendo abordagens de aprendizado de máquina para detectar risos, mas percebi que isso tem mais a ver com a detecção de risos individuais. Duzentas pessoas rindo ao mesmo tempo terão propriedades acústicas muito diferentes, e minha intuição é que elas sejam distinguíveis através de técnicas muito mais cruéis do que uma rede neural. Eu posso estar completamente errado! Apreciaria pensamentos sobre o assunto.

Aqui está o que eu tentei até agora: cortei um trecho de cinco minutos de um episódio recente do Saturday Night Live em dois segundos. Eu então rotulei essas "risadas" ou "sem risadas". Usando o extrator de recursos MFCC da Librosa, executei um cluster K-Means nos dados e obtive bons resultados - os dois clusters mapearam muito bem meus rótulos. Mas quando eu tentei percorrer o arquivo mais longo, as previsões não ficaram vazias.

O que vou tentar agora: vou ser mais preciso sobre a criação desses clipes de riso. Em vez de fazer uma divisão e classificação às cegas, vou extraí-las manualmente, para que nenhum diálogo polua o sinal. Depois, dividirei-os em clipes de quarto de segundo, calcularei o MFCC deles e os utilizarei para treinar um SVM.

Minhas perguntas neste momento:

  1. Isso faz sentido?

  2. As estatísticas podem ajudar aqui? Andei rolando pelo modo de visualização em espectrograma do Audacity e posso ver claramente onde as risadas ocorrem. Em um espectrograma de potência de log, a fala tem uma aparência muito distinta e "sulcada". Em contraste, o riso cobre um amplo espectro de frequência de maneira bastante uniforme, quase como uma distribuição normal. É até possível distinguir visualmente aplausos de risos pelo conjunto mais limitado de frequências representadas em aplausos. Isso me faz pensar em desvios padrão. Vejo que há algo chamado teste de Kolmogorov – Smirnov, isso pode ser útil aqui? Espectrograma de potência de toras (Você pode ver a risada na imagem acima como uma parede de laranja atingindo 45% do caminho.)

  3. O espectrograma linear parece mostrar que o riso é mais enérgico nas frequências mais baixas e desaparece em direção às frequências mais altas - isso significa que se qualifica como ruído rosa? Em caso afirmativo, isso poderia ser uma base para o problema? Spectrogram

Peço desculpas se eu usei mal algum jargão, estive bastante na Wikipedia por este e não ficaria surpreso se eu me confundisse.

Erik
fonte
1
Concordo que "não será necessária uma rede neural para obter um detector sólido para rastros de risada". Também concordo que você jogue Kolmogorov no sinal, considerando que, se você estiver certo, e a pista de risada for a soma (ponderada) de risadas de iid, você deve estar recebendo algum tipo de característica normal . Talvez você ainda queira aumentar a resolução da frequência. A propósito, para alguém que "não curte" o DSP, seu jargão é muito bom :) infelizmente, eu não sou um cara de áudio, então provavelmente não sou muito útil.
Marcus Müller
Fico feliz em ajudar. Você tem algum dado para treinamento? Uma das coisas mais importantes é a rotulagem de dados. Lixo dentro - lixo fora. Uma das abordagens mais simples e eficazes seria treinar um GMM de bastidores e avaliar a probabilidade.
jojek
Convém verificar primeiro, se é possível separar o riso do silêncio, verificando a potência / amplitude do seu sinal em determinados momentos. Dando a você a possibilidade de limitar momentos em que "algo" está acontecendo. Então você pode tentar olhar para a distribuição da frequência. Por exemplo, a fala pode ter alguns picos acentuados distintos (não importa onde exatamente estejam, apenas que existem), enquanto o riso é uniforme como você disse. Rastrear isso pode gerar um valor para decidir se é riso. (Você precisa as informações de volume, para se certificar de que você não tem silêncio apenas uniforme)
user6522399

Respostas:

0

Com base na sua observação, que o espectro do sinal é suficientemente distinguível, você pode usá-lo como um recurso para classificar o riso da fala.

Existem várias maneiras de analisar o problema.

Abordagem # 1

Em um caso, você pode apenas olhar o vetor do MFCC. e aplique isso a qualquer classificador. Como você tem muitos coeficientes no domínio da frequência, convém observar a estrutura dos Cascade Classifiers com algoritmos de otimização como o Adaboost, com base nisso, você pode comparar entre a classe de fala e a classe de risada.

Abordagem # 2

Você percebe que sua fala é essencialmente um sinal variável no tempo. Portanto, uma das maneiras eficazes de fazer isso é observar a variação de tempo do próprio sinal. Para isso, você pode dividir sinais em lotes de amostras e observar o espectro durante esse tempo. Agora, você pode perceber que o riso pode ter um padrão mais repetitivo por um período estipulado, onde a fala possui inerentemente mais informações e, portanto, a variação do espectro seria bastante maior. Você pode aplicar isso ao modelo do tipo HMM para verificar se permanece consistentemente no mesmo estado para algum espectro de frequência ou se continua mudando continuamente. Aqui, mesmo que ocasionalmente o espectro da fala se assemelhe ao riso, será mais demorado.

Abordagem # 3

Force a aplicação do tipo de codificação LPC / CELP no sinal e observe o resíduo. A codificação CELP cria um modelo muito preciso de produção de fala.

A partir da referência aqui: TEORIA DO CELP CODING

As redundâncias no sinal de fala são quase removidas após a previsão de curto prazo e a longo prazo do sinal de fala, e o residual tem muito pouca correlação. Em seguida, é pesquisada uma excitação que sintetiza a fala e o índice e o ganho do livro de códigos são pesquisados ​​no livro de códigos fixo. O critério ideal de seleção de índice do livro de códigos é baseado no MMSE entre a fala sintetizada localmente e o sinal de fala original.

Simplificando, depois que toda a fala prevista do analisador é removida - o que resta é o resíduo que é transmitido para recriar a forma de onda exata.

Como isso ajuda no seu problema? Basicamente, se você aplicar a codificação CELP, a fala no sinal será removida principalmente, o que resta é resíduo. Em caso de riso, a maioria do sinal pode ser retida porque o CELP falhará em prever esse sinal com a modelagem do trato vocal, onde a fala individual terá muito pouco resíduo. Você também pode analisar esse resíduo no domínio da frequência, para ver se é riso ou fala.

Dipan Mehta
fonte
0

A maioria dos reconhecedores de fala usa não apenas os coeficientes do MFCC, mas também a primeira e a segunda derivadas dos níveis do MFCC. Eu estou supondo que os onset seriam muito úteis nesse caso e ajudariam você a distinguir uma risada versus outros sons.

Prumo
fonte