3.4 Adapta¸c˜ ao do c´ odigo para utiliza¸c˜ ao de palavras
3.4.2 Divis˜ ao do ´ audio em trechos vozeados e n˜ ao vozeados
Com o resultado negativo do recorte dos trechos n˜ao vozeados, foi adotada uma nova
pr´atica para realizar o reconhecimento com palavras que evitasse a perda de informa¸c˜ao. A nova solu¸c˜ao ainda teria que tratar de alguma forma os trechos n˜ao vozeados, mas sem
descartar nenhuma parte do ´audio. A ideia proposta seria manter esses trechos que seriam recortados e, para os parˆametros que n˜ao s˜ao poss´ıveis calcular nos trechos n˜ao vozeados,
seria posto um valor nulo. Para isso seria necess´ario, portanto, dividir o ´audio. Como o programa calcula os parˆametros por janelas, a divis˜ao foi feita em janelas vozeadas
e n˜ao vozeadas, de forma que ele retornasse um valor nulo para as janelas que fossem identificadas como n˜ao vozeadas.
Sabemos que a base de ´audios do projeto ´e bem diversificada, por´em foi observado que um mesmo locutor carrega uma similaridade nos seus ´audios gravados de uma mesma
palavra, gerando um padr˜ao para nossa an´alise. Por esse motivo foi decidido realizar uma divis˜ao manual no primeiro ´audio em 8 janelas e aplicar essa mesma divis˜ao para todos
os outros ´audios de um mesmo locutor. Dessa forma seria poss´ıvel implementar o novo m´etodo de maneira r´apida para testar se ele seria efetivo ou n˜ao.
Uma necessidade notada ao se realizar a divis˜ao manual foi a de retirar o momento de silˆencio usando algum outro algoritmo. O algoritmo antigo, baseado na quantidade de
energia dos cruzamentos de zeros, estava retirando muitos trechos do sinal, incluindo os trechos n˜ao vozeados, devido a grande varia¸c˜ao das amplitudes para uma palavra com-
pleta. Devido a isso, o padr˜ao observado era perdido e o fato de aplicar o janelamento do primeiro ´audio aos outros n˜ao estava sendo eficiente. Para preservar o padr˜ao era neces-
s´ario criar uma estrat´egia para retirar apenas o momento de silˆencio no in´ıcio do ´audio. A estrat´egia elaborada levou em conta trˆes caracter´ısticas importantes: o momento de
silˆencio apresenta apenas um ru´ıdo de amplitude muito baixa; o sinal glotal tem uma ca- racter´ıstica peri´odica; e para acontecer o reconhecimento ´e necess´ario que o ru´ıdo seja bem
menor do que a amplitude do sinal. Por isso a amplitude se tornou o crit´erio usado, onde todas as amostras iniciais que apresentarem uma amplitude muito baixa eram retiradas
do sinal.
O resultado de todo esse processo de divis˜ao em janelas e retirada do momento de
silˆencio est´a ilustrado na Fig. 3.6. Vale lembrar que esse janelamento foi aplicado tanto no sinal de voz quanto no sinal glotal para manter a coerˆencia no modelo.
Como dito anteriormente, ao aplicar o janelamento para o primeiro ´audio, o mesmo
era repetido para todos os outros ´audios do mesmo locutor, onde cada locutor tinha um janelamento diferente mas igual dentro dos seus pr´oprios ´audios. Esse m´etodo apresentou
um bom resultado, por´em foi necess´ario levar em conta que nem todos os ´audios apre- sentavam o mesmo tamanho, o que fazia com que a ´ultima janela variasse de tamanho e,
em alguns casos, acontecia de o ´audio ser pequeno ao ponto de n˜ao existirem amostras na ´ultima janela. Para contornar essa situa¸c˜ao foi feito um preenchimento de zeros no
sinal para que a ´ultima janela mantivesse um tamanho constante e, caso ocorresse de uma janela ser constitu´ıda apenas por zeros, o programa retornava todos os parˆametros do
sinal glotal como zero.
Figura 3.6: Sinal de voz dividido em janelas, demarcadas atrav´es dos pontos vermelhos.
A implementa¸c˜ao no c´odigo da divis˜ao do sinal em janelas foi dada pela cria¸c˜ao
de dois vetores de controle, onde o primeiro continha a amostra inicial e final de cada janela, e o outro era um vetor bin´ario que representava se a janela era vozeada ou n˜ao.
Essas vari´aveis s˜ao passadas para a fun¸c˜ao parametros onde s˜ao usadas para realizar o janelamento e para controle no c´alculo dos parˆametros, onde nos trechos vozeados s˜ao
extra´ıdos os MFCCs e os parˆametros do sinal glotal e nos trechos n˜ao vozeados eram extra´ıdos apenas os MFCCs e os parˆametros do sinal glotal retornavam com valor nulo.
´e poss´ıvel alcan¸car um bom resultado para palavras completas usando no modelo quanti-
dades de parˆametros diferentes para cada tipo de trecho no sinal. Uma das preocupa¸c˜oes ao se implementar esse m´etodo era se o modelo iria apresentar um bom comportamento
ao se substituir os parˆametros por zeros nos trechos n˜ao vozeados. Isso poderia resultar em problemas com indetermina¸c˜oes pois muitos dos coeficientes do modelo s˜ao calculados
utilizando divis˜ao e recursividade, conforme mostrado na Se¸c˜ao 2.3. Como esses casos n˜ao aconteceram durante os testes realizados, podemos afirmar que esse m´etodo apresentou
Cap´ıtulo 4
An´alise dos Resultados
Neste cap´ıtulo, ser˜ao apresentados e discutidos os resultados dos testes realizados neste
trabalho e ser˜ao divididos em duas partes: (i) adi¸c˜ao dos parˆametros de tempo com a sequˆencia aui e (ii) adapta¸c˜ao do c´odigo para palavras e teste com a palavra automatico
utilizando os mesmos parˆametros da sequˆencia aui. Na primeira parte ser´a analisado se e quais parˆametros de tempo resultaram em uma melhora no desempenho do programa
de verifica¸c˜ao do locutor, em rela¸c˜ao a taxa de erro, quando comparados aos parˆametros de frequˆencia e MFCCs. Na segunda parte, ser˜ao mostrados os resultados referentes ao
algoritmo que foi adaptado para palavras e concluir se os parˆametros de frequˆencia e os mesmos parˆametros de tempo utilizados para sequˆencias de vogais retornaram um melhor
resultado.
O algoritmo de verifica¸c˜ao ´e dividido em treinamento e teste. Primeiro foram
gravados ´audios atrav´es de um microfone e feita a sua leitura no MATLAB. Depois, com o algoritmo IAIF obt´em-se o sinal glotal e, finalmente, s˜ao extra´ıdos os parˆametros do
sinal glotal que ser˜ao utilizados como entradas dos Modelos Ocultos de Markov (HMM), gerando modelos estoc´asticos da voz do locutor de interesse. Para o teste, s˜ao utilizados
´
audios de locutores impostores, que n˜ao geraram o modelo treinado e, tamb´em, do pr´oprio locutor de interesse, fazendo os mesmos procedimentos explicados anteriormente. Por´em,
os parˆametros do sinal glotal s˜ao utilizados como entrada para o modelo do locutor de interesse e assim, conseguimos obter a medida chamada verossimilhan¸ca, para finalmente
descobrir se o ´audio pertence ao locutor que treinou a base, usando os crit´erios baseados em limiares de aceita¸c˜ao.
Na Fig.4.1 est´a ilustrado o funcionamento do algoritmo de verifica¸c˜ao.
Figura 4.1: Vis˜ao geral do algoritmo de verifica¸c˜ao do locutor.
4.1
Adi¸c˜ao de parˆametros de tempo para a sequˆencia
de vogais
Para realizar esses testes foram utilizados ´audios de dois locutores de interesse masculinos
e dois locutores de interesse femininos e m´edia de idade em torno de 22 anos, com a sequˆencia de vogais aui. A partir dos modelos treinados, foram utilizados ´audios desses
pr´oprios locutores e ´audios de quatro locutores impostores de diferentes idades e sexo: locutor 1 - 26 anos e homem; locutor 2 - 24 anos e homem; locutor 3 - 28 anos e mulher;
locutor 4 - 20 anos e mulher. Para cada locutor impostor foram gravados 30 ´audios e com rela¸c˜ao aos ´audios do locutor de interesse, foram utilizados 40 para teste, totalizando
160 ´audios. Foram usados como entrada do modelo os parˆametros de tempo, citados na Se¸c˜ao 2.1.2, com o jitter, com os parˆametros de frequˆencia(dH12 e HRF) e com os
MFCCs, j´a testados no trabalho anterior [3], para verificar quais desses apresenta um melhor resultado. A seguir, ser˜ao discutidos os resultados para diferentes crit´erios de