Dando continuidade ao método de estimação de formantes baseado na ideia utilizada no TCC e no PIBIC, apresento nesse relatório novos testes que realizei e os resultados que obtive. Tendo em vista a melhoria do que apresentei no relatório anterior, utilizei uma abordagem um pouco mais refinada para a remoção da frequência fundamental – que vinha atrapalhando a estimação das formantes (especialmente a primeira formante).

Ué, mas você não disse que ia fazer uma pausa nos relatórios? O que foi feito dessa vez?

Bem observado de sua parte. De fato, eu havia dito. Mas acabou que as ideias começaram a coçar em minha cabeça e, bem… cheguei até aqui. De uma forma geral, mantive a estrutura do método como apresentado anteriormente, focando as alterações na remoção da influência da frequência fundamental da estimação.

Sim, aquele método! Bem… como ele era mesmo?

Não se preocupe, farei uma breve recapitulação sobre ele. A ideia inicial do método consiste em estimar as formantes utilizando os picos do contorno espectral do sinal. Porém, dependendo do sinal analisado, preditores de mesma ordem podem retornar um diferente número de picos espectrais. Assim propus a utilização de preditores lineares de diversas ordens para uma estimação mais acurada das formantes. Para isso, é escolhido o preditor de maior ordem, que encontre uma formante a mais que o número desejado em seu contorno espectral, para analisar o valor das formantes.

Os sinais sintetizados

Utilizei, para avaliar o resultado da estimação, os mesmos três sinais de voz sintetizados do relatório anterior. Esses sinais são equivalente à vogal /a/, com valores de frequência fundamental (f_0) iguais a 110Hz, 205Hz e 300Hz. Os valores das formantes são os representados na Tabela 1, apresentados em Behlau [1].

 

Rendered by QuickLaTeX.com

As medidas para avaliar o método

Para avaliar os valores estimados realizei o cálculo das mesmas duas medidas utilizadas no relatório anterior: o erro percentual por formante [2] e a distância euclidiana entre o vetor das formantes e o vetor das formantes estimadas [3].

O resultado anterior

Rendered by QuickLaTeX.com

Utilizando a segunda abordagem proposta no relatório anterior (que foi significativamente melhor), em que a contagem dos picos no contorno espectral foi feita no trecho do espectro com frequências maiores que 300Hz (para assegurar que os picos espectrais proporcionados pela frequência fundamental não seriam considerados) foram obtidos os valores do erro percentual por formante e da distância euclidiana apresentados na Tabela 2.

Ah, lembrei! Mas e agora?

Pensando em melhorar a remoção da influência da f_0 do sinal, implementei um processo utilizando estimação de f_0 por autocorrelação do sinal, predição linear e filtragem inversa. Mas caso esteja perguntando “o que é mesmo isso?”, seus problemas se acabaram! Farei um breve introdução/revisão desses conceitos1.

Estimação de frequência fundamental por autocorrelação

Para estimar a f_0 de um sinal, é necessário que a repetição periódica seja detectada. Uma maneira bem simples de fazer isso consiste em utilizar a função de autocorrelação. Assumindo um sinal digital x[k], a função de autocorrelação \phi[k] desse sinal é dada pelo produto interno de um sinal com ele mesmo defasado em k amostras, como mostrado na seguinte equação [4]:

(1)   \begin{equation*} \phi[k]=\sum_{m=-\infty}^{\infty} {x[m]x[m+k]}. \end{equation*}

Aqui é possível observar que o valor máximo desse função é atingido quando k=0. Porém, quando a autocorrelação é calculada com um sinal periódico, a função de autocorrelação vai ser periódica com o mesmo período do sinal, i.e., para k=nP (onde P é o período e n é um número inteiro qualquer), \phi[0]=\phi[k]. Como o sinal de voz não é exatamente algo que possamos chamar de periódico, podemos estimar o período do sinal observando o segundo maior pico do sinal de autocorrelação (o maior pico equivale a k=0). O valor de k que fornece esse pico equivale ao período (em amostras) do sinal. Assim, conhecendo o período e a taxa de amostragem do sinal, podemos estimar a f_0.

Na Figura 1 ilustrei um sinal e seu respectivo sinal de auto correlação e gerei uma ilustração animada do processo de calculo do sinal de auto correlação pra um sinal, disponível no link: https://www.youtube.com/watch?v=LMbIj9B5MfI.

Figura 1 – Autocorrelação do sinal.

Filtragem Inversa

O processo de filtragem inversa nada mais do que literalmente “inverter” um filtro para anular seu efeito no sinal, “transformando” polos em zeros e vice-versa. Assim, se quisermos remover a influência exercida por um filtro H(z) de um sinal que foi filtrado por ele, basta utilizar um filtro G(z), dado como segue:

(2)   \begin{equation*} G(z)={H(z)}^{-1}. \end{equation*}

Sei que isso parece completamente nada a ver com o ponto que se deseja chegar com esse relatório, mas peço que tenha calma. Logo vai dar pra entender (eu espero).

Ok então, estou calmo. Como você usou isso tudo pra melhorar o resultado?

Bem, inicialmente pensei em estimar a f_0 do sinal utilizando autocorrelação e daí passar o sinal por um filtro passa-altas com frequência de corte um pouco maior que a própria f_0. Porém, poupá-los-ei2 de mais uma tabela e já adianto que os resultados obtidos dessa forma não foram bons. O porque desses resultados não terem sido bons, sinceramente, eu ainda não sei.

Entretanto, após ter chegado nesse resultado, pensei em uma outra forma de remover a influência da fundamental, sem remover outros componentes de frequência do sinal. Tendo estimado a f_0, passei o sinal por um filtro passa-faixa de banda estreita (100Hz de banda passante) centrado na f_0. Em seguida, apliquei um preditor linear de segunda ordem ao sinal filtrado e, com os coeficientes estimados pelo preditor, apliquei filtragem inversa no sinal original para remover, assim, a influência da f_0. Por fim, apliquei o processo proposto no relatório anterior, para estimar formantes, no sinal resultante da filtragem inversa. Todo esse processo pode ser representado pelo diagrama de blocos ilustrado na Figura 2. A Figura 3 exemplifica o efeito da filtragem inversa, removendo o efeito da f_0 no contorno espectral estimado.

Figura 2 – Diagrama de blocos da abordagem proposta.

\Rightarrow  =
Figura 3 – Exemplo do efeito da filtragem inversa na estimação do contorno espectral: (a) Contorno espectral de um sinal, estimado por um preditor linear de ordem 10; (b) Contorno espectral estimado para o sinal que passou pelo filtro passa-faixa centrado na f_0 do sinal, representado em azul tracejado. O sinal de (a) é então passado pelo filtro inverso, cujo contorno espectral é representado pela linha laranja; (c) Contorno espectral do sinal resultante da filtragem inversa, estimado também com um preditor de ordem 10.

Os resultados que eu obtive utilizando essa nova proposta encontram-se representados na Tabela 3. Nela podemos observar uma melhora significativa na estimação das formantes. Assim como no relatório anterior, na Tabela 4 estão representados os resultados do trabalho de Alku et al. [3] para fins de comparação.

Rendered by QuickLaTeX.com

Caramba, melhorou bastante mesmo! E agora, quais os próximos passos?

De fato, os resultados foram bem satisfatórios dessa vez. Para a continuidade do trabalho, tem dois pontos aos quais creio que seja necessário dispensar atenção a partir daqui:

  • Realizar os testes com uma maior quantidade e maior variedade de sinais: Nos testes implementados até aqui utilizei apenas 3 sinais de voz, sintetizando apenas a vogal /a/. Para uma melhor análise dos resultados, vai ser importante testar o método com vários sinais, havendo entre eles a síntese de todas as vogais.
  • Implementar outros métodos e comparar: Utilizando os mesmo sinais utilizados para o teste do método proposto3, pretendo implementar e testar o método proposto por Alku et al. [3] e outros métodos de outros trabalhos para uma comparação mais adequada e completa com os resultados obtidos pelo método aqui apresentado.

Além desses dois pontos que receberão um maior foco daqui pra frente, também creio que seja válido retornar ao classificador que implementei no TCC4, utilizando o novo método para a estimação de formantes e verificar a influência da mudança nos resultados. Porém, como havia pretendido anteriormente, farei uma pausa por agora e somente mais pra frente voltarei a fazer relatórios.

Hum, sei… Mas e quais foram mesmo as referências?

[1] M. Behlau, VOZ – O Livro do Especialista, Rio de Janeiro – RJ: Livraria e Editora Revinter Ltda., 2001, vol. I.
[Bibtex]
@book{Behlau2001,
address = {Rio de Janeiro - RJ},
author = {Behlau, Mara},
isbn = {85-7309-525-3},
pages = {348},
publisher = {Livraria e Editora Revinter Ltda.},
title = {{VOZ - O Livro do Especialista}},
volume = {I},
year = {2001}
}
[2] T. T. Wang and T. F. Quatieri, “High-pitch formant estimation by exploiting temporal change of pitch,” Ieee transactions on audio, speech, and language processing, vol. 18, iss. 1, p. 171–186, 2010.
[Bibtex]
@article{wang2010high,
title={High-pitch formant estimation by exploiting temporal change of pitch},
author={Wang, Tianyu T and Quatieri, Thomas F},
journal={IEEE transactions on audio, speech, and language processing},
volume={18},
number={1},
pages={171--186},
year={2010},
publisher={IEEE}
}
[3] P. Alku, J. Pohjalainen, M. Vainio, A. Laukkanen, and B. H. Story, “Formant frequency estimation of high-pitched vowels using weighted linear prediction,” The journal of the acoustical society of america, vol. 134, iss. 2, p. 1295–1313, 2013.
[Bibtex]
@article{alku2013formant,
title={Formant frequency estimation of high-pitched vowels using weighted linear prediction},
author={Alku, Paavo and Pohjalainen, Jouni and Vainio, Martti and Laukkanen, Anne-Maria and Story, Brad H},
journal={The Journal of the Acoustical society of America},
volume={134},
number={2},
pages={1295--1313},
year={2013},
publisher={ASA}
}
[4] L. R. Rabiner and R. W. Schafer, Digital processing of speech signals, Prentice-Hall, 1978.
[Bibtex]
@book{Rabiner1978,
author = {Rabiner, Lawrence R and Schafer, Ronald W},
isbn = {0-13-213603-1},
pages = {1--512},
publisher = {Prentice-Hall},
title = {{Digital processing of speech signals}},
year = {1978}
}
Sobre o Autor

Mestrando em Engenharia Elétrica e Bacharel em Engenharia Eletrônica pela Universidade Federal de Sergipe. Interessado nas áreas de Processamento Digital de Sinais, Processamento Digital da Fala e Reconhecimento de Padrões. Atualmente desenvolve pesquisa no campo de processamento digital de sinais de fala aplicados à fonoaudiologia e à saúde vocal.

Áreas de Pesquisa: Processamento Digital de Sinais, Reconhecimento de Padrões, Processamento de Sinais de Voz e Fala, Qualidade Vocal.

  1. Para não me estender muito, não revisarei a predição linear, que já foi bastante explicada e reexplicada em vários relatórios do grupo (em caso de dúvidas, consulte o médico e leia o relatório anterior).
  2. Mesóclises são maravilhosas. Usá-las-ei com certeza!
  3. Se ele for realmente útil, vai precisar de um nome.
  4. Classificador de Qualidade Vocal em Escalas de Avaliação Perceptivo-Auditiva.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.