Você está na página 1de 16

RECONHECIMENTO DE LOCUTOR E FALA ATRAVÉS DO APRENDIZADO

DE MÁQUINA
Christian Cruz Meneghetti (FHO – Centro Universitário da Fundação Hermínio
Ometto)
chrismeneghetti@alunos.fho.edu.br
Mauricio Acconcia Dias (FHO – Centro Universitário da Fundação Hermínio Ometto)
macdias@fho.edu.br

Resumo
O avanço tecnológico tem nos garantido maior facilidade e agilidade na realização de
grandes e pequenas atividades corriqueiras do dia a dia, deste modo, o esforço empenhado
em sua execução é significativamente reduzido. As características únicas dos indivíduos,
neste contexto, podem ser descritas como biometria, são utilizadas para a sua
identificação em uma vasta área de possibilidades, funcionando como uma “chave” para
as suas diversas aplicações, comumente utilizadas em ambientes ou sistemas que
necessitam de autenticação, desta forma, garantindo a irrefutabilidade de uma pessoa,
vide os sistemas de bancos como exemplo. Neste mesmo viés, é extremamente válido
destacar a importância do reconhecimento biométrico no presente dia. Neste projeto, será
desenvolvido uma rede neural através do aprendizado de máquina que fará o
reconhecimento de fala assim como o reconhecimento de locutor afim de realizar o estudo
deste tipo de autenticação, uma vez que a voz é um sinal rico de informações únicas,
sendo então passível de classificação como biometria utilizando o aprendizado de
máquina.
Palavras-chaves: biometria, fala, voz, aprendizado de máquina, rede neural,
reconhecimento de fala, reconhecimento de locutor

1. Introdução
A irrefutabilidade, algo que não pode ser refutado, é o elemento chave para as tarefas
e os sistemas que necessitam segurança atualmente, partindo deste viés, a garantia da
segurança em tarefas humanas necessita desse tipo de característica que é possível atender
utilizando a biometria, desta forma, a identidade de uma pessoa é garantida através de
suas peculiaridades que nos tornam indivíduos únicos (PINHEIRO, 2008), podendo
assumir características fisiológicas, vide como exemplo a utilizada neste projeto, o sinal
de voz, e comportamentais.
O uso da voz como biometria nos garante um maior grau facilidade na coleta, uma vez
que a mesma pode ser capturada através de simples microfones implementados em
qualquer aplicação ou sistema embarcado e é uma alternativa acessível para pessoas que
não disponham de outra peculiaridade, como por exemplo a impressão digital, que é a
biometria mais utilizada atualmente. Dentre elas, podemos listar a biometria fácil como
uma das mais emergentes com o avanço dos smartphones.
O sistema vocal do ser humano é composto por um conjunto de elementos que são
denominados como trato vocal, que funciona como filtro para os pulsos glóticos, que são
literalmente picos de som, desta forma, moldando a fala em diversos tipos de fonema, em
termos teóricos, modificando as features do sinal dependendo da combinação do trato
vocal.
É imprescindível ressaltar que o uso do aprendizado de máquina se faz presente a esse
tipo de biometria, pois com o avanço do deep learning (DL) tornou-se mais fácil, menos
custosa a sua aplicação e houve uma melhora significativa em termos de precisão, assim
como é valido destacar que há variações na entonação do mesmo indivíduo (SZTAHÓ et
al, 2019). Embora a melhora tenha ocorrido, ainda é necessário que o treinamento da rede

neural seja extenso e perenal dependendo do nível de aperfeiçoamento.


Para o projeto foi criado um dataset particular com arquivos de fala contendo dígitos
de 0 a 9 de quatros pessoas diferentes, cada arquivo foi gravado individualmente, ao todo
o dataset dispõem de 2039 arquivos, sendo eles 51 para cada digito e respectivamente de
cada participante.
Utilizando o método de extração de features MFCC (Mel-Frequency Cepstral
Coefficients), advindo da biblioteca do librosa, sob o dataset, podemos realizar o
treinamento da rede neural utilizando o Keras, que por baixo dos panos utiliza o modelo
de Deep Feed forward (DFF), desta forma, é possível obtermos o reconhecimento dos
dígitos e assim como o seu locutor.

1.1. Objetivo Geral


• Desenvolver um sistema de reconhecimento de locutor e fala.
1.2. Objetivo Específico
• Estudo sobre o uso do Keras para criação de rede neural.
• Estudo sobre o sinal de voz e suas features.
• Criação de um dataset de dígitos em português.
2. Referencial teórico

2.1. Biometria
A biometria é o meio utilizado para identificação de indivíduos, advindas de
características únicas que nos tornam pessoas singulares e na grande maioria das vezes
perenal (BERNECKER, 2006), sendo possível a usabilidade em meios que exigem
autenticação, irrefutabilidade e segurança, amplamente utilizada no ultimo tópico por
sistemas que não devem ser fraudados. Existem vários tipos de chaves biométrica, mas
são comumente classificadas em dois grandes grupos, fisiológicas e comportamentais. A
Figura 1 nos traz alguns exemplos de biometria.

Figura 1: Características Biométricas

Fonte: ZUCCHERATO, 2019.

É inerente que o seu uso torna o sistema mais confiável e seguro, uma vez que ela é
utilizada nas técnicas de token, adicionando uma camada a mais de autenticação para os
convencionais usuário e senha.
2.1.1. Voz
A voz representada pela Figura 1 se trata de uma biometria comportamental que
possui certos aspectos fisiológicos, uma vez que a mesma é formada pelo trato vocal, que
possui uma formação biológica do ser humano, que nos dá características únicas,
juntamente com a comportamental que são os padrões do uso do sistema vocal como por
exemplo o a atenuação na pronuncia, posicionamento da língua, abertura de boca,
posicionamento das cordas vocais ou até mesmo a morfologia da própria voz (PARADA,
2018).
Figura 2: Trato vocal

Fonte: TAVIN, 2019.

A combinação dos elementos do trato vocal nos devolve o sinal de voz com todas as
características do indivíduo, incluindo as features que precisamos para o treinamento da
rede neural do Keras.

Figura 3: Sinal de voz Figura 4: Sinal de voz com samples

Fonte: Autoria própria. Fonte: Autoria própria.

A Figura 3 mostra um sinal de voz a definida pela amplitude adimensional, devido a


conversão retornada pela biblioteca do librosa, sobre a pressão do ar captada no microfone
durante a gravação, o sinal de voz é convertido em um numpy array do tipo float32 com
valores entre -1 e 1. Já a Figura 4 nos mostra o mesmo sinal de voz, porém com a
quantidade de samples ao longo do tempo.

2.2. Extração de features do sinal de voz


Para que possamos realizar o treinamento da rede neural, é preciso realizar a extração
das features do sinal de voz, o que podemos caracterizar como um sub processamento de
áudio, pois é necessário separarmos o que será utilizado assim como as partes que não
precisamos do sinal, como por exemplo, a separação dos pulsos glóticos.
2.2.1. MFCC
O MFCC é um dos principais métodos de extração de features de áudio utilizado no
processamento de som, e para este projeto não será diferente. O Mel frequency Cepstral
Coefficients utiliza, por baixo dos panos, a escala de mel para tons de voz.

Figura 5: Espectrograma de frequências de mel

Fonte: Autoria própria.

As features são provindas de um conjunto de transformadas com o sinal de voz e o


seu principal resultado é o Cepstrum, componente da MFCC, basicamente, é comumente
identificado pela definição de espectro de um espectro, pois é obtido através da
transformada de Fourier seguida pela aplicação de logaritmo e por último uma
transformada inversa de Fourier.

Figura 6: Equação do Cepstrum

Fonte: RANDALL et al., 2019.

Em que x(t) é o sinal (som) no domínio do tempo, 𝐹𝑥𝑥 (𝑓 ) é o espectro de poder, ou


seja 𝑑𝐵, deste sinal utilizando a transformada de Fourier e nos retornando um valor de
domínio da frequência (𝐻𝑧), log(𝐹𝑥𝑥 (𝑓 )) nos dá o espectro logaritmo, também no
domínio da frequência (𝐻𝑧) e 𝔍−1 {log(𝐹𝑥𝑥 (𝑓 ))} a transformada de Fourier inversa
(IDFT) , dando então a peculiaridade do espectro do espectro ou Cepstrum no domínio
de quefrency (𝑚𝑠) e nos trazendo a magnitude absoluta do sinal (RANDALL et al.,
2019).
A transformada inversa de Fourier pode ser facilmente substituída pela DCT
(transformada discreta dos cossenos), pois nos fornecerá valores reais e não imaginários,
nos dando a contagem, em relação a logarítmica aplicada anteriormente, dos picos de
informação separadas na fase do espectro de logaritmo.

Figura 7: MFCC

Fonte: Autoria própria.


Menores valores de frequência, e consequentemente maiores índices de MFCC
representam o sinal da glote que não possuem dados importante para o reconhecimento
dos fonemas, desta forma os valores de índices de MFCC tendem a ser os mais baixos,
na Figura 7, podemos perceber que no índice 1 possuímos grande quantidade de
informação.

2.3. Keras e Tensorflow


A biblioteca do Keras se trata de um conjunto de APIs de alto nível para o
desenvolvimento de redes neurais profundas (Deep machine learning) de diversos tipos
de modelos, desenvolvida e utilizada em python, facilitando o uso e a implementação,
uma vez que, ela rodando em cima do modelo de código aberto disponível pelo google
do Tensorflow, sendo possível aplicar todo o processamento e treinamento da rede neural
na GPU (Unidade gráfica de processamento), mas também podendo ser compartilhado
com o CPU.
O Keras tem o intuito de fazer com que todo o esforço cognitivo seja reduzido ao
aplicar o modelo de criação de camadas ao invés da implementação repetitiva em diversas
áreas do código (Boilerplate), permitindo que modelos de treinamento gigantescos
possam se tornar viáveis.

3. Metodologia
Para que fosse alcançado o objetivo final deste projeto foi utilizado o Python como
linguagem de programação em conjunto o Jupyter, através do seu modelo baseado em
notebooks, pequenas seções em que se pode realizar o código, equações, anotações e etc.
afim de um código mais limpo, compreensível e de fácil manutenção.
O projeto também conta com um dataset em português gravado por quatro pessoas
participantes, um conjunto de 51 arquivos de áudio por digito de 0 a 9 para todos os quatro
integrantes, totalizando 2039 arquivos para o treinamento acurado da rede neural e suas
predições, que está dívida em duas vertentes, a primeira é o reconhecimento de fala a
partir do dataset de 0 a 9, desta forma, identificando o digito pronunciado e a segunda o
reconhecimento de locutor através do mesmo dataset.

3.1. Dataset
O dataset montado para este projeto foi gravo localmente, sendo utilizado um
microfone padrão e com o próprio gravador do Windows, inicialmente os arquivos são
gravados no padrão M4A, porém foi necessário a conversão para arquivos do tipo WAV,
devido ao seu encapsulamento, inibindo que as features sejam retiradas do arquivo.
Qualquer conversor pode ser utilizado para quebrar esse empecilho.

3.2. Estrutura do código


O código possui uma estrutura simplificado, isso se dá ao modelo de notebook do
Jupyter. Em suma, o software realiza a leitura do dataset com o auxílio da biblioteca do
Librosa, para que seja transposta todas as features do arquivo de áudio, incluindo as
features principais de MFC, para uma tabela de formato CSV com o auxílio da biblioteca
do Pandas, sendo passível a criação do arquivo de data assim como a adição dos valores
extraídos no mesmo.

Figura 8: Parte do dataset

Fonte: Autoria própria

Os valores do dataset, já presentes no arquivo CSV, vão para o algoritmo de


treinamento da rede neural após passarem por uma etapa de pré-processamento e
modelamento. Nesta etapa, cada valor de índice de MFCC é separado em variáveis de
treinamento e de teste, há também o rearranjo do dataset, desta forma, ele deixará de ser
sequencial, assim como a normalização dos valores.
3.2.1. Uso do Keras
Seu uso tende a ser simples e de rápida aplicação, neste projeto é utilizado o modo
Sequencial, nada mais é que uma rede neural DFF (Deep feed forward), neste modo é
definido a quantidade de camadas assim como a quantidade de nós em cada uma, ou então
perceptrons, dado um valor de entrada o algoritmo calculará a melhor rota baseada em
seus valores de passo, ou seja, para que o valor de entrada avance uma camada X um
valor peso será atribuído a esse caminho, com o uso do keras, esses valores são ajustados
automaticamente permitindo melhores predições. Neste projeto a quantidade de camadas
é de 5 e com a quantidade de perceptrons diminuindo a cada camada, partindo de 256 até
10 e com uma função de ativação do tipo ReLu, que basicamente retornará o valor 0 se
algum valor de entrada for negativo e, em caso de valores positivos, o próprio valor é
retornado.

Figura 9: Modelo de rede neural Feed Forward

Fonte: Adaptada de HIRSA et al., 2019.

Definida a rede neural a ser usada, passamos nosso dataset para um treinamento de
200 épocas, para o reconhecimento de dígitos e 50 épocas para o reconhecimento de
locutor, e com um lote de 128, que basicamente é o numero de amostras a serem
processadas antes da atualização do modelo.

Figura 10: Algoritmo de treinamento.

Fonte: Autoria própria.


Até este ponto, o código é idêntico para ambos reconhecimentos, locutor e fala, pois,
compartilham do mesmo dataset e do mesmo treinamento. É adicionado apenas um par
de chaves com o índice de cada participante, desta forma o valor é comparado com um
array previamente setado indicando o locutor.

4. Resultados e discussões
Para ambos reconhecimentos o modelo de treinamento são os mesmos, ou seja, a
mesma configuração de modelamento está presente nas duas, porém os retornos dos
modelos são distintos, uma vez que, o conteúdo a ser treinado é ligeiramente diferente,
devido a chave de índice do array, desta forma teremos um loss diferente, assim como as
épocas distintas. Apesar do dataset gravado para o treinamento possuir um tamanho
relativamente irrisório no contexto de aprendizado de máquina, foi necessário um
intervalo de 3 a 4 minutos para a separação das features dos arquivos e para o
armazenamento do dataset, este tempo está sujeito a alterações a depender da máquina
em que o código esteja rodando. Levando em conta o The People’s Speech dataset, que
possui mais de 30 mil horas de gravação de fala, essa estimativa de tempo cresceria
absurdamente.

4.1. Reconhecimento de dígitos


Foi necessário realizar o treinamento com 200 épocas para garantir uma acurácia boa
do modelo, por se tratar de um número, ainda que irrisório no contexto de aprendizado de
máquina, levou-se cerca de 30 segundos para o treinamento e com uma acurácia de 97%.
O treinamento da rede neural visa diminuir o valor de Loss ao passo que visa o
aumento do valor de acurácia, grandezas inversamente proporcionais, isso nos indica que
ao passo que temos um menor valor de Loss, consequentemente teremos uma melhor
acurácia. Esse processo é feito automaticamente pelo algoritmo, ajustando os pesos e os
bias de cada época de treinamento, é importante destacar o papel do Val-Loss, é a mesma
indicação do Loss porém com uma fração do dataset sendo testada ao passo que o
algoritmo se ajusta, desta forma, ajuda no ajuste de performance do modelo prevendo
valores que ele pode esperar como entrada e também é importante para evitar um
overfitting do modelo, isso acontece quando o modelo tem uma taxa de ajuste maior do
que a previsão de novos resultados, mostrando ineficácia (HAWKINS et al., 2004).
Figura 11: Loss e Val-loss do treinamento

Fonte: Autoria própria.

A fim de validar a acurácia do modelo, é utilizado a função de predição do Keras


passando os dados de entrada a serem comparados com o modelo treinado que nos retorna
a passagem de cada valor de entrada com a equivalência, é possível observarmos o retorno
ao aplicarmos em uma matriz de confusão, vide a Figura 13.

Figura 12: Retorno da função de predição do Keras.

Fonte: Autoria própria.


Figura 13: Matriz de confusão do reconhecimento de dígitos.

Fonte: Autoria própria.

No eixo X temos os valores a serem testados, dígitos de 0 a 9, e no eixo Y os valores


de predição do modelo.

4.2. Reconhecimento de locutor


Para este reconhecimento foi utilizado, diferente do reconhecimento de dígitos, um
treinamento de 50 épocas, sendo o suficiente para evitarmos o overfitting neste modelo,
portanto o seu tempo de treinamento foi relativamente menor, levando cerca de 6 a 8
segundos para o fim do treinamento da rede.

Figura 14: Resultados do treinamento em 50 épocas

Fonte: Autoria própria.


Com uma taxa de acurácia de 99% para este treinamento e com os mesmos atributos
de Loss e Val_Loss do Keras, porém desta vez a comparação com o modelo treinado e o
modelo testado se dá no índice de cada locutor presente no dataset , numerados de 0 a 3,
nos resultando em uma matriz de confusão da Figura 15.

Figura 15: Matriz de confusão do reconhecimento de locutor.

Fonte: Autoria própria.

4.3. Diferentes métodos


Existem diferentes métodos de extração de features de áudio que possuem suas
características assim como os seus prós e contras.

Figura 16: Tipos de extração de features.

Fonte: SHRAWANKAR et al., 2013

O foco deste estudo foi em um algoritmo que possuísse compatibilidade tanto no


exercício do reconhecimento de fala assim como o reconhecimento de locutor, nos
provendo features que pudessem ser utilizadas em ambos os casos e que ao mesmo tempo,
pudesse garantia um alto nível de performance, porém, o uso do MFCC é facilmente
deturpado com sinais de ruido ou perturbações, devido ao uso da DCT para obtenção dos
coeficientes, necessitando de um pré-processamento do sinal (SHRAWANKAR et al.,
2013).

5. Conclusões
Diante das duas modalidades, reconhecimento de fala e reconhecimento de locutor,
utilizando uma rede neural DFF com a extração de features através do método de MFCC
e com auxílio do Keras para criação da rede, observamos que foram obtidos bons
resultados de acurácia assim como os valores de predição, visto que, foi utilizado um
dataset particular e de tamanho pequeno.
A escalabilidade do conjunto se faz presente no modelo de treinamento, uma vez que
é possível utilizar um processamento distribuído, ou seja, o compartilhamento de
recursos, tanto de GPU quanto de CPU, entre computadores, aumentando a performance
do modelo.
Contudo, vale destacar que o uso do MFCC pode ser facilmente prejudicado de
acordo com o as interferências durante o processo de gravação do dataset, sendo
necessário uma etapa de pré-processamento afim de mitigar qualquer tipo de interferência
no modelo. Também é valido mencionar que até mesmo o próprio locutor muda de voz
ao longo do tempo por fatores fisiológicos que podem ser decorrentes do envelhecimento,
de doenças que afetam o trato vocal ou mudanças de emoções, também afetando a
qualidade do reconhecimento, então em um modelo comercial de reconhecimento, é
necessário novos mapeamentos sejam ao decorrer do tempo.

6. Refêrencias
PINHEIRO, José Mauricio dos S. Biometria nos sistemas computacionais: você é a
senha. Ciencia Moderna, 2008.

SZTAHÓ, Dávid; SZASZÁK, György; BEKE, András. Deep learning methods in


speaker recognition: a review. arXiv preprint arXiv:1911.06615, 2019.

BERNECKER, Otto. Biometrics: Security: An end user perspective. Information


security technical report, v. 11, n. 3, p. 111-118, 2006.
ZUCCHERATO, G. 19 Fev. 2019. Seu rosto, sua chave – Reconhecimento facial no
controle de acesso. Disponível em: https://revistadigitalsecurity.com.br/artigo-seu-rosto-
sua-chave-reconhecimento-facial-no-controle-de-acesso/ . Acesso em: 12 Nov. 2022.

PARADA, Marcelo Gonzaga de Oliveira. Biometria multimodal baseada nos sinais de


voz e facial. 2018.

TAVIN. Imagem do trato vocal com numeração, CC-BY-3.0. Disponível em:


https://commons.wikimedia.org/wiki/File:VocalTract_withNumbers.svg .Acesso 12
Nov. 2022.

RANDALL, R. B.; ANTONI, Jérôme; SMITH, W. A. A survey of the application of the


cepstrum to structural modal analysis. Mechanical Systems and Signal Processing, v.
118, p. 716-741, 2019.

HOSSAN, Md Afzal; MEMON, Sheeraz; GREGORY, Mark A. A novel approach for


MFCC feature extraction. In: 2010 4th International Conference on Signal Processing
and Communication Systems. IEEE, 2010. p. 1-5.

SIQUEIRA, Jan Krueger; ALCAIM, Abraham. Comparação dos atributos MFCC, SSCH
e PNCC para reconhecimento robusto de voz contínua. Proc. XXIX Simpósio Brasileiro
de Telecomunicações, 2011.

HIRSA, Ali; KARATAS, Tugce; OSKOUI, Amir. Supervised deep neural networks
(DNNs) for pricing/calibration of vanilla/exotic options under various different
processes. arXiv preprint arXiv:1902.05810, 2019.

HAWKINS, Douglas M. The problem of overfitting. Journal of chemical information


and computer sciences, v. 44, n. 1, p. 1-12, 2004.

SHRAWANKAR, Urmila; THAKARE, Vilas M. Techniques for feature extraction in


speech recognition system: A comparative study. arXiv preprint arXiv:1305.1145,
2013.
KINNUNEN, Tomi; LI, Haizhou. An overview of text-independent speaker recognition:
From features to supervectors. Speech communication, v. 52, n. 1, p. 12-40, 2010.

Você também pode gostar