Esta é uma viagem lateral do meu aplicativo de ronco .
Eu tive uma falha ao produzir uma autocorrelação do sinal de áudio, para ver se isso "se correlaciona" com o ronco / respiração muito bem. Eu tenho um algoritmo simples (produz 1.0 como o elemento zeroth, o que é um bom sinal), mas estou pensando em como avaliar o resultado para determinar se a autocorrelação é forte e, talvez ainda mais, como usá-lo para separar várias fontes sonoras possíveis.
Pergunta 1: O RMS da autocorrelação (ignorando o elemento zero) é uma métrica de "qualidade" tão boa quanto qualquer outra, ou existe algo melhor?
Para elaborar: eu simplesmente quero uma maneira numérica (vs "olhar" para um gráfico) para distinguir um sinal altamente correlacionado automaticamente de um sinal menos correlacionado automaticamente.
(Eu realmente não sei o suficiente para saber que outras perguntas fazer.)
Alguns resultados iniciais: Em alguns casos, a autocorrelação (RMS ou pico) mostra um salto dramático na ressonância - precisamente a resposta que eu gostaria de ver. Em outros casos, não há movimento aparente nessas medidas (e isso pode ser dois roncos sucessivos com as duas respostas) e, em situações de alto ruído, as medições realmente diminuem (levemente) durante um ronco.
Atualização - 22 de maio: finalmente consegui mais tempo para trabalhar nisso. (Fui contratado para outro aplicativo que é literalmente uma dor.) Alimentei a saída da autocorrelação em uma FFT e a saída é um pouco interessante - mostra um pico bastante dramático perto da origem quando um ronco começa.
Então agora estou diante do problema de quantificar esse pico de alguma forma. Estranhamente, os picos mais altos, em termos de magnitude absoluta, ocorrem em outros momentos, mas tentei a razão entre o pico e a média aritmética e isso acompanha muito bem. Então, quais são algumas boas maneiras de medir o "pico" da FFT. (E, por favor , não diga que eu preciso fazer uma FFT - isso já está perto de engolir o próprio rabo. :))
Além disso, ocorreu-me que a qualidade da FFT poderia melhorar um pouco se eu refletisse os resultados da autocorrelação, com zero (que é por definição 1,0 magnitude) no meio. Isso colocaria as "caudas" nas duas extremidades. Esta é (possivelmente) uma boa ideia? A imagem no espelho deve estar na vertical ou invertida? (Claro, vou tentar, independentemente do que você diz, mas pensei que talvez eu pudesse obter algumas dicas sobre os detalhes.)
Tentei flatness--
Meus casos de teste podem ser divididos aproximadamente na categoria "bem comportado" e na categoria "filhos problemáticos".
Para os casos de teste "bem-comportados", a planicidade da FFT da autocorrelação diminui drasticamente e a proporção do pico para a autocorrelação média sobe durante um ronco. A proporção desses dois números (razão de pico dividida pela planicidade) é particularmente sensível, exibindo uma subida de 5 a 10 vezes durante uma respiração / ronco.
Para os "filhos problemáticos", no entanto, os números seguem exatamente na direção oposta. A relação pico / média diminui levemente, enquanto o nivelamento aumenta de 50 a 100%
A diferença entre essas duas categorias é (principalmente) tripla:
- Os níveis de ruído são (geralmente) mais altos nos "filhos problemáticos"
- Os níveis de áudio são (quase sempre) mais baixos nos "filhos problemáticos"
- Os "filhos problemáticos" tendem a consistir em mais respiração e menos ronco (e eu preciso detectar os dois)
Alguma ideia?
Atualização - 25/5/2012: É um pouco prematuro ter uma dança da vitória, mas quando refleti a autocorrelação sobre um ponto, peguei a FFT disso e depois aplanei o espectro, meu esquema de taxa combinada mostrou um bom salto vários ambientes diferentes. Refletir a autocorrelação parece melhorar a qualidade da FFT.
Um ponto menor, porém, é que, como o "componente DC" do "sinal" refletido é zero, o resultado zero da FFT é sempre zero, e isso meio que quebra uma média geométrica que inclui zero. Mas pular o elemento zeroth parece funcionar.
O resultado que estou obtendo está longe de ser suficiente para identificar os roncos / respirações por si só, mas parece ser uma "confirmação" bastante sensível - se eu não der o "pulo", provavelmente não será um ronco / respiração.
Não analisei de perto, mas suspeito que o que está acontecendo é que um som de assobio ocorre em algum lugar durante a respiração / ronco, e esse apito é o que está sendo detectado.