Trabalho de Graduaçãode.ufpe.br/~hmo/TG_RAL.pdf · Resumo Este trabalho vem ... A primeira metade...
Transcript of Trabalho de Graduaçãode.ufpe.br/~hmo/TG_RAL.pdf · Resumo Este trabalho vem ... A primeira metade...
Universidade Federal de Pernambuco
Centro de Tecnologia e Geociências
Departamento de Eletrônica e Sistemas
Trabalho de GraduaçãoImplementação em Software de Sistema de
Reconhecimento Automático de Locutor
por Caio César L. L. Ferreiraaluno da graduação de Engenharia Eletrônica
orientado pelo Prof. Hélio Magalhães de Oliveira, Docteur
Recife, julho de 2010
Universidade Federal de Pernambuco
Centro de Tecnologia e Geociências
Departamento de Eletrônica e Sistemas
Graduação de Engenharia Eletrônica
Relatório de Trabalho de Graduação
Implementação em Software
de Sistema de Reconhecimento
Automático de Locutor
Aluno: Caio César Lima Lacerda Ferreira
Orientador: Prof. Hélio Magalhães de Oliveira, Docteur
Recife, julho de 2010
ii
Agradecimentos
Para a conclusão de um curso como o de Engenharia Eletrônica na Universidade Federal de Per-
nambuco é preciso muita garra pessoal, mas também muito do apoio encontrado junto a familiares,
amigos e colegas de curso. Portanto, sintam-se todos lembrados!
Agradeço aos meus pais, Lígia e Hélio, pelo amor e apoio incondicionais, pela dedicação em
proporcionar a mim e minhas irmãs a melhor educação, pela paciência para escutar e pela sabedoria
para aconselhar.
Agradeço a minhas irmãs, Luana e Paloma, pelo incentivo, carinho e discussões, onde cada um
aprendeu algo do outro.
Agradeço a Maria, companheira de todos os momentos, guerreira, trabalhadora, melhor amiga,
especial (não sabe o quanto!). Sem ela não conseguiria chegar ao �nal deste curso.
Agradeço à minha família pelos momentos, na sua maioria (ninguém é perfeito!), de descontração
e de demonstrações de carinho.
Agradecimento especial às minhas três avós, Blandina, Margarida e Nevinha e à minha madrinha
Nadeja. Exemplos de dignidade, força de vontade, dedicação, superação, alegria de viver e por aí
vai. Vocês são espetaculares!
Agradeço aos meus amigos principalmente por não desistir da minha amizade, apesar das con-
stantes ausências.
Agradeço a todos os professores que participaram da minha formação, tanto básica/média como
universitária. São todos vencedores num país que valoriza pouco seus �formadores de cidadãos� (sei
bem o que é isso: meu pai é um de vocês).
Agradeço também aos meus colegas de curso que me deram inúmeras vezes demonstrações de
força de vontade e capacidade.
Agradecimento ao Prof. Hélio Magalhães, orientador, que aceitou meu pedido mesmo com
tantas atividade e compromissos. Obrigado pela compreensão.
Obrigado a todos que me ajudaram a chegar até aqui!
iii
Resumo
Este trabalho vem documentar a implementação em software de um sistema de Reconhecimento
Automático de Locutor (RAL) baseado na técnica de Mascaramento Pleno em Frequência por
Oitava (MPFO).
São explanados os métodos de elaboração de vocoder e sistema de RAL basedos em MPFO.
O uso desta técnica está calcado na propriedade psico-acústica do sistema auditivo humano: o
mascaramento acústico em frequência.
Foram vistos conceitos da linguagem de programação, orientada a objetos, Java que permitiu a
modelagem do sistema de maneira mais direta, adequando os blocos de código a conceitos abstraídos
do sistema de RAL.
O desenvolvimento/documentação deste software pretende automatizar os processos de captação
de elocuções, tratamento de áudio, cálculo do espectro e mascaramento em oitavas, interação com o
usuário e acesso a banco de dados, dando um primeiro passo para desenvolvimento de um produto
robusto, simples, funcional e, mais importante, desenvolvido por alunos do Departamento.
iv
Lista de Figuras
2.1 Manuscrito de Dudley mostrando seus estudos do sistema vocal. . . . . . . . . . . . . 4
2.2 Diagrama esquemático demonstrando o funcionamento do VODER. . . . . . . . . . . 4
2.3 Estande dos Laboratórios Bell exibindo o VODER, na Exposição Mundial de Nova
Iorque, 1939. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4 Detalhe do teclado utilizado para operação do VODER. . . . . . . . . . . . . . . . . 4
2.5 Terminal de escuta de Paris do sistema SIGSALY, constituído de 12 terminais, du-
rante a II Guerra Mundial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.6 Vocoder encomendando pela banda alemã Kraftwerk. . . . . . . . . . . . . . . . . . . 7
2.7 Exibição do vocoder produzido pelos Laboratórios Bell na Exposição Mundial de 1964. 7
3.1 Representação de janelas no domínio do tempo para M = 128 e β = 7. . . . . . . . . 14
3.2 Representação de janelas no domínio da frequência para M = 128 e β = 7. . . . . . . 14
4.1 Exemplo de sinal antes e depois da simpli�cação do espectro. . . . . . . . . . . . . . 22
4.2 Diagrama de blocos do sistema de RAL proposto em [2]. . . . . . . . . . . . . . . . . 25
5.1 Organização dos bits em arquivo de áudio. . . . . . . . . . . . . . . . . . . . . . . . . 30
v
Sumário
1 Introdução 1
2 Breve histórico 3
2.1 Vocoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Reconhecimento Automático de Locutor . . . . . . . . . . . . . . . . . . . . . . . . . 8
3 Vocoder 10
3.1 Percepção Humana do Som e Mascaramento . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Vocoder baseado em MPFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.1 Pré-processamento do Sinal de Voz . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.2 Análise da Voz pela técnica do MPFO . . . . . . . . . . . . . . . . . . . . . . 14
4 Reconhecimento Automático de Locutor 17
4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Aquisição da Voz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3 Pré-processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3.1 Pré-ênfase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3.2 Detecção de Endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.3.3 Segmentação em Quadros e Janelamento . . . . . . . . . . . . . . . . . . . . . 21
4.4 Geração do Padrão de Locutor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.4.1 Extração das Características dos Quadros de Voz . . . . . . . . . . . . . . . . 22
4.4.2 Obtenção do padrão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.5 Comparação com Padrão de Voz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5 Implementação em software 26
5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2 Linguagem Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3 Modelagem do RecLoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3.1 Aquisição de Sinal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
vi
5.3.2 Pré-processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3.3 Geração do Padrão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.3.4 Comparação com Base de Dados . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.4 GUI e Funcionalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6 Conclusões e discussões 36
A Código 40
vii
Capítulo 1
Introdução
São evidentes, na atualidade, os avanços tecnológicos proporcionados por novos materiais e
equipamentos eletrônicos. O século passado já testemunhava grandes invenções e descobertas na
área de eletrônica e a construção dos computadores digitais caracteriza-se como umas das principais
e mais impactantes inovações, inclusive alterando as relações humanas com o ambiente à sua volta.
Basta olhar à sua volta e perceber que praticamente todas as atividades humanas dependem de
máquinas que operam, via de regra, no domínio digital, discreto.
O Século XXI promete novos melhoramentos nessas máquinas e em maior escala, cada vez
mais integrando-se à vida cotidiana. Segundo profetizou Moore, um dos fundadores da Intel, a
cada 18 meses o número de transistores num circuito integrado deve duplicar, afetando velocidade
de processamento, preço de hardware, pixels em câmeras digitais, taxas de transmissão de dados,
capacidade de armazenamento, entre outros. Nesse sentido, �ca claro que as máquinas digitais
serão cada vez mais inteligentes.
Isso quer dizer que a interface entre homens e máquinas tende a se diluir, i.e., tornando a inter-
ação cada vez mais natural. Uma evidência nesse sentido são os novos equipamentos com interface
baseada na sensibilidade ao toque e movimentos, pelo uso de monitores sensíveis e acelerômetros.
A próxima barreira a ser quebrada nessa interação é o reconhecimento de voz.
Esta tecnologia é produto de área especí�ca de processamento digital de sinais, o processamento
digital de sinais de voz. Dentre as técnicas até hoje desenvolvidas nesta área, aparentemente
poucas conseguiram �rmar-se como uma possibilidade para aplicações de reconhecimento de voz,
seja por não apresentar robustez, viabilidade de implementação e e�ciência necessárias para tornar-
se disponível no mercado global.
Sendo esta uma área em aberto, pretende-se apresentar neste trabalho uma implementação
em software de sistema de Reconhecimento Automático de Locutor, utilizando uma técnica de
processamento digital da voz baseada no Mascaramento Pleno em Frequência por Oitavas, de baixa
complexidade computacional, com e�ciência em torno de 85% a 90%, a qual foi descrita em [2].
A implementação usou linguagem de programação Java de forma a facilitar a modelagem do sis-
1
tema, abstraindo conceitos do algoritmo em blocos de software. Deste modo, tentou-se modularizar
ao máximo a implementação, de forma que futuras modi�cações sejam possíveis.
O objetivo principal foi criar um produto �nalizado, funcional. Foi dado o nome de RecLoc
ao aplicativo. A interface pretende-se mais amigável e intuitiva possível. E todo o processo de
funcionamento de um sistema de Reconhecimento Automático de Locutor foi automatizado.
A divisão do trabalho foi feita como segue: no Capítulo 2 é feito um breve histórico dos sistemas
vocoders (os codi�cadores de voz) e dos sistemas de reconhecimento de locutor.
No Capítulo 3, a técnica de codi�cação de voz utilizada na implementação é exposto.
No Capítulo 4, faz-se um resumo do funcionamento do sistema de Reconhecimento Automático
de Locutor, explicando-se claramente as etapas que o constituem.
No Capítulo 5, documenta-se toda a implementação, discutindo as soluções encontradas para
modelar o sistema de reconhecimento utilizado. São mostradas algumas janelas do aplicativo em
funcionamento, detalhando suas funcionalidades do ponto de vista do usuário.
No Capítulo 6, são tecidas conclusões e sugeridas algumas possíveis modi�cações no programa.
2
Capítulo 2
Breve histórico
A primeira metade do século XX abriu novos horizontes de pesquisa e de aplicações na área de
acústica, principalmente em decorrência do grande salto em conhecimento e produção de materiais na
área de eletrônica. Construção de ampli�cadores e �ltros eletrônicos possibilitaram a criação de novas
ferramentas para pesquisa dos processos de voz e audição humanos. Gravação e reprodução de som
tornaram-se possíveis apoiadas por novas descobertas em eletroacústica, como microfones, ampli�cadores
de som, altofalantes. Após o período de dedicação à pesquisa de cunho bélico durante a II Guerra
Mundial, um período de �orescimento em telecomunicações se iniciou, trazendo grandes avanços em
codi�cação de voz em sinais elétricos.
A partir da segunda metade do século XX, com o advento do transistor com seu baixo consumo de
potência e con�abilidade, foi possível desenvolver circuitos complexos e so�sticados, antes de impossível
implementação. Foram publicadas teorias acerca de amostragem de sinais e maneiras de representar
sinais contínuos em amostras de tempo discreto e amplitudes quantizadas. E, ainda, pesquisas em
eletroacústica foram bene�ciadas com o rápido desenvolvimento de computadores digitais de estado
sólido e técnicas de simulação de sistemas físicos de tempo contínuo usando métodos numéricos. Estes
avanços permitiram complexas simulações e análises de sinal. E pode-se dizer que pesquisas em acústica
foram pioneiras no uso de técnicas de simulação digital. Tópicos como �ltros digitais, transformada
rápida de Fourier (técnicas de análise espectral) e convolução foram pesquisados para embasamento
teórico e melhor entendimento de áreas como processamento e síntese de voz.
2.1 Vocoder
Por volta da década de 1930, pesquisas em voz e audição incluíram um novo tópico de desen-
volvimento: técnicas de análise e síntese objetivando à transmissão de voz. Os primeiros esforços
nessa área devem-se a Homer W. Dudley (1896-1987) e E. Peterson. A pesquisa destes dois pio-
neiros culminou na construção de um analisador de voz, batizado de VOCODER (Voice Operated
reCOrDER), e de um sintetizador elétrico de voz, este denominado VODER (Voice Operating
3
DEmonstratoR). Dudley ainda pesquisou maneiras de codi�car o sinal de voz, levando à criação
de conceitos descrevendo o sistema de produção da voz humana (vide Figura 2.1), possibilitando
criação de técnicas de transmissão de voz via canais com largura de banda reduzida.
Figura 2.1: Manuscrito de Dudley mostrando seus estudos dosistema vocal.
Figura 2.2: Diagrama esquemático demonstrando o funciona-mento do VODER.
O voder, sintetizador de voz, era parte constituinte do vocoder de Dudley. Essencialmente, era
uma máquina falante governada por sinais de excitação com largura de banda estreita. Esses sinais
não eram, necessariamente, derivados de análise direta da voz humana. Funcionava com operação
humana, através de um teclado e pedais. Apesar da di�culdade de operação, a depender da habili-
dade do operador produzia elocuções razoavelmente inteligíveis. Foi posto para demonstração, vide
Figura 2.3, durante a Exposição Mundial de Nova Iorque e São Francisco, EUA, em 1939 (durante
a II Guerra Mundial), onde provocou certa agitação popular, além de permitir a demonstração de
novos princípios cientí�cos.
Figura 2.3: Estande dos Laboratórios Bell exibindo oVODER, na Exposição Mundial de Nova Iorque, 1939.
Figura 2.4: Detalhe do teclado utilizado para operação doVODER.
Dudley inventou o vocoder em 1928, nos Laboratórios Bell, inspirado pelo trabalho do Prof. C.
G. Kratzenstein, que ganhou um Stalin Prize, em 1779, pela construção do primeiro dispositivo
mecânico sintetizador de voz, na Academia Imperial de São Petersburgo.
Na concepção do vocoder, Dudley estabeleceu que o funcionamento da voz humana se dá, funda-
mentalmente, pelo uso de uma portadora, i.e., um sinal aproximadamente contínuo que é modulado
4
e formatado pelo trato vocal � boca, garganta e seios nasais � criando um som reconhecível. Posto
de outra forma, o sinal de voz é formado modulando-se (com a sutil mudança de ressonâncias vo-
cais) o formato do espectro do som produzido pelas cordas vocais. Os sons produzidos podem ser
periódicos, se produzidos por vibrações vocais, ou aperiódicos, se produzidos por um turbulento
�uxo de ar devido a constrições do trato vocal.
Dudley mostrou que as modulações promovidas no espectro de voz poderiam ser medidas em
termos de energia relativa presente em �ltros de banda, estreitos e contíguos, e os sinais periódicos
(vocalizados) e aperiódicos (não vocalizados) caracterizados por um detector de frequência. O sinal
seria reconstruído (sintetizado) a partir dos dados obtidos. Isto foi feito permitindo que os sinais de
energia espectral regulassem a amplitude das saídas de um banco de �ltros idêntico, excitado ou por
uma fonte de pulsos periódicos ou por uma fonte de ruído. Pelo fato do espectro e sinais de excitação
variarem lentamente com o tempo, ocupando, assim, pequena largura de banda, o vocoder poderia
ser utilizado como um dispositivo de compressão de largura de banda para transmissão de sinal de
voz. De fato, ele foi usado para transmitir voz por um canal com largura de banda de 300Hz, uma
redução de dez vezes do tamanho da largura de banda de um canal de voz convencional.
Uma das premissas originais para o desenvolvimento do vocoder foi a esperança de criar um
método para transmissão de voz via cabos de telégrafo transatlânticos, que apresentavam grande
limitação em largura de banda disponível. No entanto, mais tarde ele foi usado para aplicações em
encriptação de voz para garantir privacidade nas transmissões. E acabou servindo como instrumento
de defesa em comunicações para os Aliados (formado pelos EUA, Inglaterra, França, entre outros)
durante a II Guerra Mundial.
Nesta época, Dudley trabalhou em parceria com o matemático britânico, pioneiro da computação
Alan Turing no projeto secreto denominado Projeto X ou Sistema SIGSALY, Figura 2.5. Este
projeto usou das pesquisas iniciais feitas por Dudley sobre o vocoder e tinha como objetivo fazer
com que as transmissões de voz via cabos transatlânticos passassem por um processo de encriptação.
O sistema era composto por uma chave aleatória que era gravada como 12 funções separadas em
um disco fonográ�co. Um disco similar era usado, em sincronismo, no receptor, permitindo que os
sinais encriptados em cada canal fossem recuperados. Um exemplo interessante do uso do vocoder,
foi o usado pelo comandante supremo das Forças Aliadas e, mais tarde, Presidente dos EUA Dwight
D. �Ike� Eisenhower. O vocoder utilizado por ele ocupava o espaço de uma sala e o acompanhava
em viagens de estado transatlânticas. Outro presidente americano, John Kennedy, pelo fato de não
saber manusear o equipamento quase provocou, por inúmeras vezes, uma terceira guerra mundial
durante a crise dos mísseis de Cuba. Fatos interessantes sobre a história do vocoder podem ser
encontrados em [4].
Dessa forma, o vocoder encontrou campo de aplicação farto, sendo utilizado até hoje como
5
Figura 2.5: Terminal de escuta de Paris do sistema SIGSALY, constituído de 12 terminais, durante a II Guerra Mundial.
forma de codi�car o sinal de voz, na verdade, sendo ele próprio sinônimo desta aplicação. E, com
o advento de computadores digitais, tornou possível a criação de técnicas diversas de codi�cação e
posterior tratamento do espectro de voz no domínio digital.
Nas décadas que se seguiram, houve rápido desenvolvimento e barateamento de computadores
digitais, criação de ferramentas para uso em técnicas de simulação digital, entre elas �ltros digitais
(equivalentes digitais para �ltros de Butterworth, Bessel, sendo Kaiser um dos pioneiros nesses
estudos), transformada Z, conversão analógico digital e digital analógico. Baseados nas recentes
descobertas de Dudley acerca da economia de banda de frequência através do uso de vocoder,
outros pesquisadores buscavam meios de, no meio digital, criar técnicas de análise e codi�cação que
alcançassem a maior taxa de compressão possível.
Frentes de estudo foram criadas analisando diferentes parâmetros do espectro de voz. Estudando
a forma como detectar adequadamente a frequência fundamental da voz, ou tom (em inglês, pitch),
David, Schroeder e Logan propuseram, em 1960, um vocoder excitado pela voz como forma de
extrair o tom da mesma, que se altera de pessoa a pessoa.
Outro esforço no intuito de detectar o tom fundamental da voz foi levado a diante por Tukey,
usando o conceito de cepstrum (a transformada de Fourier do espectro em amplitude logarítmica).
Usando esta técnica ele conseguiu mostrar que o período fundamental da voz se manifestava como
um pico no cepstrum. Em 1964, A. M. Noll usou simulações computacionais de um sistema baseado
no vocoder de Tukey para mostrar as propriedades da detecção de tom usando o cálculo do cepstrum.
Os resultados foram promissores.
Também na década de 1960, um conceito de vocoder proposto anteriormente por Munson e
Montgomery foi testado através de simulações computacionais. Este vocoder era baseado na idéia
da divisão do espectro para detectar-se quais bandas eram mais importantes na formação da voz
(apresentavam maior magnitude), mantendo características que permitiam a identi�cação do in-
terlocutor. Esta idéia, por sua vez, estava de acordo com modelo proposto pelo professor sueco
Gunnar Fant que descrevia os componentes �siológicos da produção acústica da voz, embasado em
6
análises de raios-X de indivíduos produzindo sons vocais especí�cos. C. H. Coker conseguiu criar
um rastreador daquelas bandas e um sintetizador em hardware que fazia transmissões em tempo
real. Esta técnica baseada na detecção das maiores magnitudes do espectro obteve compressões da
ordem de vinte vezes a banda de voz original. Apesar de manter a inteligibilidade da voz, esse grau
de redução reduzia a naturalidade da voz.
Em 1965, J. L. Flanagan inventou e demonstrou o funcionamento do chamado vocoder de fase,
obtendo moderada compressão de banda e boa qualidade de transmissão. A sua implementação
digital conseguiu taxas de transmissão na faixa de 7,2 e 16 kilobits/s. Com esta implementação,
Flanagan conseguiu fazer modi�cações na escala temporal do sinal de voz por fatores arbitrários,
propriedade que mais tarde seria usada, também, em vocoders comerciais usados para produção
musical (usados até hoje).
Em 1967, Atal, Schroeder e Hanauer conceberam o método de predição linear (linear prediction)
como uma forma de caracterizar o espectro de amplitude do sinal de voz. Este método veio a se
chamar de método da predição linear de coe�cientes (LPC, na sigla em inglês) e foi base para a
criação de outro método, a codi�cação adaptativa preditiva (APC, sigla em inglês). Estes dois
métodos possibilitaram o desenvolvimento de vocoders de maiores taxas de transmissão e qualidade
de voz excepcionais. Tanto que mais tarde foram utilizados em comunicações militares.
Atualmente são inúmeros os vocoders existentes, entre eles se destacam alguns utilizados pela
Agência Nacional de Segurança estadunidense em sistemas criptográ�cos, descritos por normas ITU.
Há, ainda, vocoders utilizados em equipamentos de comunicação e em sistemas de armazenamento
de voz (referenciados por siglas como ACELP, MELPe, AMBE, TWELP, entre outros).
Vocoders também tem sido utilizados em pesquisas em áreas as mais diversas: linguística,
neurociência, desenvolvimento de implantes auditivos, reconhecimento automático de voz, entre
outros.
Figura 2.6: Vocoder encomendando pela banda alemãKraftwerk.
Figura 2.7: Exibição do vocoder produzido pelos LaboratóriosBell na Exposição Mundial de 1964.
Além das aplicações em telecomunicações, pesquisas cientí�cas e militares, os vocoders também
7
desempenharam um papel importante também em termos culturais, sendo utilizados no mercado
musical desde a década de 1950.
Após a visita de Homer Dudley, criador do vocoder, o então diretor do centro de estudos em
fonética da Universidade de Bonn, Alemanha, Werner Meyer-Eppler usou o dispositivo como inspi-
ração para seus escritos futuros, reconhecendo a importância das máquinas para o movimento mu-
sical. Estes escritos vieram a se tornar o manifesto do novo cenário musical alemão, �Elektronische
Musik�. Bandas como Kraftwerk utilizaram-se de vocoders para produzir seus tão característicos
sons, com um dos vocoders mostrado na Figura 2.6. Na Figura 2.7, mostra-se exibição do vocoder
que inspirou o compositor da trilha sonora do �lme Laranja Mecânica (Clockwerck Orange). Atu-
almente, são utilizados vocoders autônomos baseados em softwares, que produzem efeitos os mais
diversos na voz dos artistas.
2.2 Reconhecimento Automático de Locutor
A área de Reconhecimento Automático de Locutor (RAL) se funde com as pesquisas voltadas
para a área de comunicação/interface homem-máquina (IHM) e uso de características biométricas
com �nalidades de reconhecimento. Ela evoluiu juntamente com tecnologias de reconhecimento de
voz e sintetizadores de voz devido às características e desa�os similares associados a cada uma.
Portanto, boa parte do desenvolvimento cientí�co obtido acerca de vocoders, por exemplo, pode
estar associado de alguma forma a evoluções na área de RAL, i.e., avanços como um todo na área
de acústica tiveram desdobramentos tanto em vocoders quanto em RAL e tecnologias a�ns.
No início da década de 1970, tecnologias de comunicação em voz tiveram grande destaque.
Foram acumulados conhecimentos substanciais para o entendimento de análise e síntese de voz,
grande parte direcionadas para conservação de banda em transmissões de voz. Com os avanços em
microeletrônica, os computadores �caram mais rápidos e mais baratos, com poder de processamento
elevando-se em ritmo exponencial. Algoritmos cada vez mais complexos eram suportados pelos
recém inventados circuitos integrados. Com tal evolução, �cou claro que o próximo passo seria
tornar o contato humano com os computadores mais simples, direto e intuitivo. Um dos caminhos
adotado foi prover interação via voz.
Então, a partir de 1970 e durante os próximos cinco anos, J. L. Flanagan e sua equipe nos Lab-
oratórios Bell, dedicaram-se a pesquisas sobre IHM, mais especi�camente relacionadas à resposta
à voz pelo computador, veri�cação de locutor e reconhecimento automático de voz. As pesquisas
envolvendo veri�cação de locutor deram alicerces para o RAL.
A so�sticação dos computadores à época sugeria que estes deveriam, pela `escuta' de uma voz
humana e fazendo cálculos usando o seu espectro para caracterizar o indivíduo, ser capazes de
veri�car a suposta identidade do interlocutor. Uma das principais, senão a principal, motivação
8
para as pesquisas na área de veri�cação de locutor era a promessa da implementação de acesso
bancário via circuitaria eletrônica, decorrente do ideal de �checkless society�, uma noção de mundo
no qual todas as operações �nanceiras são efetivadas eletronicamente, eliminando a necessidade de
transações `físicas', usando papel; este é um objetivo central de muitas, ou mesmo todas, instituições
bancárias. Compras a crédito via telefone e cobrança de fatura de ligações de longa distância eram
outras aplicações de interesse, assim como autenticação automática para requisição de acesso a
informação privilegiada ou a local de acesso restrito.
Em 1973, G. R. Doddington, Lummis e Rosenberg, pesquisadores dos Laboratórios Bell, paten-
tearam um sistema experimental que utilizava tom e intensidade de voz e uma forma primitiva
de programação dinâmica. Este sistema foi posto a teste em conexões telefônica convencionais,
discadas, e alcançou uma precisão de mais de 90%, mesmo sob condições adversas. O sistema
era treinado para operar dependente de texto, vide Capítulo 4. Foi observado que a e�ciência no
reconhecimento poderia ser aumentada a depender do texto escolhido. Teste posteriores foram
realizados, mostrando que o sistema era relativamente imune a fraudes provocadas por habilidosos
pro�ssionais imitadores de voz e eram substancialmente melhores que humanos na tarefa de iden-
ti�car impostores.
Re�namentos posteriores foram feitos por Rosenberg, M. R. Sambur e S. Furui usando o método
de coe�ciente de predição linear e caracterização do espectro de voz usando janelas de curta duração.
Chegaram a precisão de mais de 95%.
Em 1976, a Texas Instrument construiu um sistema protótipo para uso da Força Aérea dos
EUA. Na década de 1980, o Instituto Nacional de Normas e Tecnologia (NIST, na sigla em inglês)
estadunidense criou um grupo de estudo especí�co para técnicas de processamento de voz e desde
1996 tem promovido encontros anuais de discussão para fomentar a crescente comunidade dedicada
ao RAL, encontros estes apoiados pela Agência Nacional de Segurança dos EUA.
9
Capítulo 3
Vocoder
Este capítulo apresentará uma explanação do vocoder utilizado na implementação do software para
Reconhecimento Automático de Locutor, produto deste Trabalho de Graduação.
O propósito da compressão de voz é obter uma concisa representação digital que possibilite a
otimização de métodos de transmissão e armazenamento de dados de voz. Com um processamento
adequado, um sinal de voz pode ser analisado, codi�cado a uma baixa taxa de dados e, posteri-
ormente, reconstruído a partir dos dados obtidos. Em muitas aplicações, a codi�cação digital da
voz é necessária para permitir a utilização de algoritmos de criptogra�a (por questão de segurança)
ou de técnicas de correção de erros (para compensar o ruído do canal de transmissão). Freqüente-
mente, a largura de banda disponível para a transmissão de voz digitalizada é de poucos kilohertz,
comparando-se com outros tipos de dados que exigem bandas muito maiores. A codi�cação de voz,
então, é uma técnica imprescindível para que tais dados possam ser transmitidos adequadamente e
devem atingir altas taxas de compressão.
Esses sistemas de codi�cação de baixa taxa de bits, no entanto, não conseguem reproduzir a
forma de onda da voz em seu formato original. Ao invés disso, um conjunto de parâmetros variáveis
são extraídos da voz, transmitidos e usados para gerar uma nova forma de onda no receptor . Essa
forma de onda recriada poderá não lembrar necessariamente a forma de onda original na aparência,
mas deverá apresentar certa similaridade.
O chamado vocoder, sinônimo de codi�cador de voz e termo também usado largamente para
referir-se a codi�cadores de análise/síntese em geral, se utiliza de características extraídas dos
sinais de voz para representá-la de uma maneira mais e�ciente, sem, no entanto, comprometer a
sua qualidade.
Os vocoders, como citado no Capítulo 2, baseiam-se no fato de que o trato vocal muda lentamente
e seu estado e con�guração podem ser representados por um conjunto de parâmetros. Tipicamente,
esses parâmetros são extraídos do espectro do sinal de voz e atualizados a cada 10�25ms.
Em geral, dada a sua complexidade no processo de geração da voz sintetizada, as modelagens,
10
simpli�cações e/ou aproximações utilizadas pelos vocoders introduzem perdas e/ou distorções que
acabam por tornar a qualidade de voz obtida inferior àquela obtida pelos codi�cadores de onda.
Duas propriedades da comunicação de voz são pesadamente exploradas pelos vocoders. A
primeira é a capacidade de restrição do sistema auditivo humano. Essas limitações auditivas fazem
os ouvintes insensíveis a várias imperfeições no processo de reprodução da voz.
A segunda diz respeito a �siologia do processo de geração da voz que coloca fortes restrições
sobre o tipo de sinal que pode ocorrer, e este fato pode ser explorado para modelar alguns aspectos
da produção da voz humana.
O vocoder encontrou, também, ampla aceitação como um princípio essencial para manipulação
de arquivos de áudio. Por exemplo, efeitos de áudio, como alongamento do tempo, mudança de
tom da voz, são facilmente conseguidos utilizando um vocoder.
Várias abordagens foram propostas ao longo do tempo para implementação desta tecnologia. A
implementação utilizada na elaboração do software para Reconhecimento Automático de Locutor
usa na análise do sinal de voz a abordagem em mascaramento pleno em frequência, fazendo uma
simpli�cação do espectro. Esta nova abordagem proposta em dissertação de mestrado do Pro-
grama de Pós-Graduação do Departamento de Eletrônica e Sistemas da UFPE por Roberto Sotero,
orientado pelo Prof. Hélio Magalhães, Docteur, reúne características como simplicidade de imple-
mentação, baixa complexidade computacional, baixa taxa de bits e qualidade aceitável de arquivos
gerados na síntese (propriedade que não é importante para os propósitos da atual implementação).
3.1 Percepção Humana do Som e Mascaramento
Os vocoders utilizam algumas características �siológicas do trato vocal e sistema auditivo hu-
mano para implementar modelos de compressão que, apesar de provocar perdas no sinal, permitam
a clara percepção do sinal quando este for reconstruído.
O vocoder utilizado faz uso de uma destas propriedades psico-acústicas da audição humana: o
mascaramento auditivo ou �audibilidade diminuída de um som devido à presença de outro�, podendo
este ser em frequência � caso deste vocoder � ou no tempo. O mascaramento auditivo em frequência
ocorre quando um som que normalmente poderia ser ouvido é mascarado por outro, de maior
intensidade, que se encontra em uma freqüência próxima. Ou seja, o limiar de audição é modi�cado
(aumentado) na região próxima à freqüência do som que causa a ocorrência do mascaramento, sendo
que isto se deve à limitação da percepção de freqüências do sistema auditório humano.
O mascaramento em frequência possui muitas aplicações práticas em engenharia de áudio, sendo
amplamente utilizado em sistemas de redução de ruído, uma vez que permite ao projetista supor que
o baixo nível de ruído que exista numa mesma banda de freqüência em relação a um sinal de música
de alto nível, será efetivamente mascarado pela sinal de música. É também usado em sistemas
11
de compressão de dados de áudio, possibilitando ao projetista o uso de uma menor resolução em
bandas de frequência, pois um ruído será efetivamente mascarado pelo sinal propriamente dito.
Colocando de outra forma, o mascaramento em frequência (também chamado mascaramento
simultâneo) está relacionado ao conceito de bandas críticas da audição. É um fenômeno pelo qual
um sinal de baixa amplitude (mascarado) se torna inaudível na presença simultânea e a frequências
próximas de um sinal com uma amplitude muito maior do que o primeiro (mascarador). Uma
explicação simpli�cada do mecanismo fundamental do fenômeno do mascaramento em frequência
(simultâneo) é que a presença de um ruído forte ou de um tom mascarador cria uma excitação de
força su�ciente sobre a membrana basilar, presente no ouvido humano, para bloquear, de forma
e�caz, a detecção de um sinal mais fraco.
Os efeitos do mascaramento simultâneo não estão exclusivamente concentrados aos limites de
uma única banda crítica. O mascaramento inter-banda também ocorre, ou seja, uma tom mas-
carador centrado numa banda tem algum efeito previsível no limiar de detecção de outras bandas
críticas. Este efeito é denominado de espalhamento do mascaramento. Para a presente implemen-
tação este efeito não foi levado em consideração, como mais tarde será melhor descrito.
3.2 Vocoder em Oitavas com Baixa Taxa para Sinais de Voz
Tal sistema é essencialmente baseado na técnica do Mascaramento Pleno em Frequência por
Oitava (MPFO). O intuito dessa nova aplicação, de codi�cação de voz, é reunir simplicidade de
implementação, baixa complexidade computacional, possibilitando trabalhar com uma reduzida
taxa de bits, mas não comprometendo em demasia a qualidade dos arquivos de voz gerados.
O sistema recebe os arquivos de voz no formato .wav (formatopadrão de arquivos de áudio da
Microsoft) com uma taxa de amostragem de 8 kHz e 8 bits de resolução, extrai as informações
apenas das amostras propriamente ditas do sinal, aplica a FFT para quadros janelados de 16 ms
(utilizando a janela de Hamming sem superposição), emprega a técnica do MPFO, quantiza e
codi�car as amostras de mascaramento e suas posições de ocorrência.
3.2.1 Pré-processamento do Sinal de Voz
O primeiro estágio do vocoder consiste no pré-processamento do sinal. Tal procedimento é
necessário em processamento de voz, visto que as características dos sinais de voz têm algumas
peculiaridades importantes que precisam ser previamente trabalhadas.
Como esse vocoder é exclusivo para sinais de voz, que possuem a maioria de suas energias con-
centradas numa faixa limitada de freqüências (entre 300Hz e 4kHz normalmente), faz-se necessário
limitar a largura de banda dos sinais dentro dessa faixa, fazendo uso de um �ltro passa-baixas.
Em seguida uma taxa de amostragem que respeite o teorema da amostragem de Shannon deve ser
12
adotada.
Do teorema de Shannon, sabe-se que para não haver perda de informação, o sinal banda limitada
na frequência fm deve ser amostrado a uma taxa de pelo menos 2fm amostras equiespaçadas por
segundo. Dessa forma deve-se escolher uma taxa aceitável para sinais de voz e que respeite esse
teorema. Como a �ltragem do sinal se deu em 4kHz, a taxa de amostragem escolhida foi 8 kHz.
Por questão de simplicidade, a taxa de todos os sinais de voz tratados por esse vocoder são antes
transformadas para 8 kHz.
Segmentação de Voz
Um sinal é dito estacionário quando suas características estatísticas não variam com o tempo.
Sendo o sinal de voz um processo estocástico, e sabendo-se que o trato vocal muda de forma muito
lentamente na voz contínua, muitas partes da onda acústica podem ser assumidas como estacionárias
num intervalo de curtíssima duração (entre 10 e 40ms). A segmentação consiste em particionar o
sinal de voz em segmentos, selecionados por janelas ou quadros (frames) de duração perfeitamente
de�nida. O tamanho desses segmentos é escolhido dentro dos limites de estacionariedade do sinal.
Janelamento
A utilização do janelamento é uma forma de se conseguir aumentar as informações espectrais de
um sinal amostrado. Esse "aumento"das informações é decorrente da minimização das margens de
transição em forma de ondas truncadas e de uma melhor separação do sinal de pequena amplitude
de um sinal de grande amplitude com freqüências muito próximas uma da outras. Algumas janelas
comumente utilizadas são descritas a seguir.
Janela retangular: Essa janela apenas particiona o sinal em blocos consecutivos de mesmo tamanho.
É como se o sinal fosse apenas fatiado (segmentado) em pequenos pedaços. Sua equação é
dada por:
ω[n] =
{1, 0 6 n 6M − 1
0, c.c.
Com M sendo o tamanho ou comprimento da janela.
Janela de Hamming: proporciona a manutenção das características espectrais do centro do quadro
e a eliminação das transições abruptas das extremidades [30]. Sua equação é dada por:
ω[n] =
{0, 54− 0, 46cos
(2πnM−1
), 0 6 n 6M − 1
0, c.c.
Janela de Kaiser: É uma janela mais �exível que as demais. Através do ajuste do parâmetro
β, sua forma pode ser convenientemente modi�cada. Dessa forma, dependendo da aplicação,
13
pode-se modi�car a forma da janela para controlar a perda espectral.
ω[n] =
{I0{β[1−((n−α)/α)2]1/2}
I0, 0 6 n 6M − 1
0, c.c.
onde α =M/2 e I0 é a função de Bessel modi�cada de ordem zero do primeiro tipo.
As Figuras 3.1 e 3.2 mostram, respectivamente as representações destas janelas no domínio do
tempo e da frequência (com β = 7 para a janela de Kaiser). As janelas de�nidas anteriormente são
comumente usadas para análise espectral e também para o projeto de �ltros de resposta ao impulso
�nita (FIR).
Figura 3.1: Representação de janelas no domínio do tempopara M = 128 e β = 7.
Figura 3.2: Representação de janelas no domínio da frequênciapara M = 128 e β = 7.
Pré-ênfase
A pré-ênfase objetiva eliminar uma tendência espectral de aproximadamente −6 dB/oitava na
fala irradiada dos lábios. Essa distorção espectral não traz informação adicional e pode ser eliminada
através da aplicação de um �ltro, de resposta aproximadamente +6 dB/oitava, que ocasionaria
um nivelamento no espectro. Sendo a audição menos sensível a frequências acima de 1 kHz do
espectro, a pré-ênfase ampli�ca esta área do espectro, auxiliando os algoritmos de análise espectral
na modelagem dos aspectos importantes do espectro da voz. A equação a seguir descreve o pré-
enfatizamento realizado no sinal que é obtido pela diferenciação da entrada,
y[n] = x[n]− a · x[n− 1], 1 < n 6M
onde M é o número de amostras do sinal amostrado, x[n] o sinal amostrado, y[n] o sinal pré-
enfatizado e a constante escolhida no intervalo entre 0, 9 e 1.
3.2.2 Análise da Voz pela técnica do MPFO
Como na maioria de sistemas de codi�cação de voz e�cientes, os vocoders fazem uso de certas
propriedades auditivas do sistema auditivo humano, tirando vantagem delas para reduzir as taxas
14
de bits. A técnica utlizada tomou como base para implementação do vocoder, duas importantes
características: o mascaramento em freqüência e a insensibilidade a fase. A função do estágio de
análise será, a priori, identi�car casos de mascaramento em freqüência no espectro do sinal (obtido
através da FFT de comprimento 128) particionado em oitavas, descartar sinais que �não seriam
audíveis�, devido ao fenômeno do mascaramento em freqüência, e desprezar totalmente a fase do
sinal.
A escolha do particionamento do espectro em oitavas, tem relação com as bandas críticas da
audição, que possuem larguras de banda não-uniformes como as oitavas. O intuito foi investigar o
efeito das amostras de mascaramento sobre as mascaradas dentro de uma oitava.
Insensibilidade à fase
O ouvido humano tem pouca sensibilidade à fase. O processo pode ser explicado examinando
como um som se propaga por um ambiente. Qualquer som que se propaga e que chega aos nossos
ouvidos atravessa diversos obstáculos e percorre caminhos distintos. Parte do som chega defasada
das demais, mas tal diferença é pouco sentida pelo nosso sistema auditivo. A informação, na
voz humana, é principalmente concentrada nas amplitudes das freqüências. Baseado nesse fato, o
vocoder utilizado descarta as características de fase do espectro, considerando apenas a amplitude
das amostras.
Simplificação do Espectro via Mascaramento em Frequência
De posse dos sinais pré-processados, pode-se iniciar a etapa de análise do sinal, que será descrita
a seguir.
Para cada segmento do arquivo de voz janelado, aplica-se uma FFT de comprimento 128 (número
de amostras contidas em um quadro de 16ms de voz), obtendo-se assim a representação frequencial
de cada quadro de voz. A partir daí, divide-se o espectro da magnitude do sinal em regiões de
in�uência (oitavas). A faixa de freqüências entre 32 e 64Hz é considerada na análise a primeira
oitava. A segunda oitava utilizada corresponderá à faixa de freqüências de 64�128Hz, a terceira
cobrindo a banda de 128�512Hz, e assim por diante. A sétima (última oitava) irá corresponder
à faixa de 2048�4000Hz (notando-se que em 4 kHz o espectro simétrico, produzido pela FFT,
começa a se repetir).
Como se está fazendo uso de uma taxa de amostragem de 8 kHz, cada amostra da magnitude
do espectro corresponderá a uma amostra espectral múltipla de 62, 5Hz, sendo que a primeira
amostra irá representar a componente DC de cada quadro de voz. Como essa amostra tem pouca
informação útil, ela será prontamente desconsiderada da análise.
Já que as raias espectrais caminham a passos de 62, 5Hz, a primeira oitava (de 32Hz a 64Hz),
será representada pela amostra espectral de 62, 5Hz, a segunda oitava (64Hz a 128Hz) pela
15
amostra de 125Hz, seguindo o mesmo raciocínio para as demais.
Terminado esse procedimento inicial, passa-se agora a buscar em cada oitava, em todas as sete
sub-bandas de voz do sinal, o ponto da FFT de maior magnitude, i.e., aquele que irá (potencial-
mente) mascarar os demais. Essa amostra espectral passará a ser o único representante dentro de
cada oitava (por opção de complexidade reduzida). As demais serão descartadas, assumindo valor
espectral nulo. O total de 63 freqüências oriundas da estimativa da DFT com N=128 é reduzido para
7 sobreviventes (retendo cerca de 10% das componentes espectrais). Portanto, cada quadro, agora,
será representado, no domínio frequencial, por 7 tons puros de mascaramento auditivo (Tabela 3.1,
um para cada oitava. Esta técnica foi denominada de mascaramento pleno em freqüência.
São esses quadros que serão codi�cados e utilizados para se recuperar o sinal pelo sintetizador.
Oitavas Número de componentes
32�64Hz 1
64�128Hz 1
128�256Hz 2
256�512Hz 4
512�1024Hz 8
1024�2048Hz 16
2048�4000Hz 31
Tabela 3.1: Número de amostras para cada oitava por janela de comprimento 128.
Importante destacar que o vocoder inicialmente proposto em [1], utilizou de comprimento de
janela de 160, modi�cando a complexidade das transformadas rápidas de Fourier, que deveria que-
brar o comprimento original em `vetores' de comprimento iguais a potências de 2 e, posteriormente
aplicar a FFT. No caso da implementação em software aqui desenvolvida, o comprimento utilizado,
128, sendo potência de 2, permitiu a aplicação do algoritmo butter�y ou algoritmo de Cooley-Tukey,
a mais comum FFT, de forma direta.
Esta alteração também modi�cou a distribuição das amostras por oitava de cada janela, dimin-
uindo o número de amostras a cada oitava correspondente, mas aumentando o número de janelas
correspondentes a cada arquivo de voz.
No entanto, não foi possível atestar o impacto desta modi�cação na execução do vocoder.
Foi deixada de lado na implementação em software, a parte de pré-ênfase do pré-processamento
do sinal, pelo fato de aumentar a complexidade do vocoder e de já ter sido atestado [2] que não
houve melhora na performance do vocoder proposto, quando da sua utilização.
O vocoder descrito em [1] apresenta ainda proposições de arquivo digital para voz e algoritmo
de síntese de voz a partir do arquivo gerado na análise utilizando MPFO.
16
Capítulo 4
Reconhecimento
Automático de Locutor
O processamento digital do sinal de voz tem como grandes objetivos três áreas que guardam simi-
laridades como também algumas características de estudo próprias; são elas:
Reconhecimento de Voz: procura identi�car o texto sendo pronunciado;
Reconhecimento de Linguagem: procura identi�car qual idioma está sendo utilizado;
Reconhecimento de Locutor: procura identi�car o indivíduo a falar.
Este capítulo fará uma rápida explanação sobre o atual entendimento pela comunidade acerca de
Reconhecimento de Locutor e detalhará o procedimento utilizado na implementação em software descrita
neste trabalho.
4.1 Introdução
Enquanto humanos, somos capazes de distinguir pessoas meramente ouvindo-as falar. Diferenças
(ainda que sutis) de timbre, sotaque e/ou entonação, habilitam-nos a distinguir uma pessoa de outra
apenas pela sua voz. Geralmente, curtos trechos de fala (2 a 3 segundos) são largamente su�cientes
para o reconhecimento de uma voz familiar.
A área de processamento de voz, que torna possível o reconhecimento de pessoas pela voz
por meio de máquinas é chamada de �Reconhecimento Automático de Locutor� (RAL). No RAL,
determina-se a identidade de uma pessoa através da voz, com o propósito de controlar/restringir o
acesso a redes, computadores, bases de dados, bem como restringir a disponibilização de informações
con�denciais para pessoas não autorizadas, dentre várias outras aplicações.
A voz é uma biometria que torna estas aplicações mais simples para o usuário pelo fato de
reunir características como: naturalidade para produção da fala, não requerer um dispositivo de
entrada muito so�sticado e de difícil manuseio e seu uso em larga escala pode tornar-se praticamente
17
onipresente, pois todos os computadores, telefones, por exemplo, vem equipados com microfone,
único dispositivo de entrada necessário.
Um sistema que trabalha com RAL calcula (por algum critério especí�co) a similaridade entre
as características da voz do locutor que se deseja reconhecer, com as características de voz de um
conjunto de locutores previamente armazenadas pelo sistema de reconhecimento ou de um conjunto
de locutores aberto, i.e., sobre os quais não há, previamente, nenhuma característica catalogada.
O RAL divide-se em Veri�cação Automática de Locutor (VAL) e Identi�cação Automática de
Locutor (IAL). Na VAL, faz-se uso de uma máquina para veri�car a identidade da voz de uma pessoa
que a reivindicou. Na literatura há outras denominações para a VAL, incluindo-se: veri�cação de
voz, autenticação de locutor e autenticação de voz. Na VAL pode haver erros de dois tipos: a falsa
aceitação (FA) de um locutor impostor, ou a falsa rejeição (FR) de um locutor verídico. O teste é
feito sobre um conjunto aberto de interlocutores, na verdade, faz um teste de um pra um, onde o
reivindicador da veri�cação pode ser, a priori, qualquer indivíduo.
Na IAL não há a reivindicação de autenticidade. O sistema é que deverá decidir, dentre um
determinado número N de locutores, qual o usuário correto ou se o mesmo é desconhecido dentre
N possíveis locutores cadastrados, i.e, o teste é realizado sobre um conjunto fechado de interlocu-
tores, conjunto salvo em base de dados previamente gravada. A IAL pode ser implementada com
rejeição ou sem rejeição. No primeiro caso, é estabelecido um limiar para cada usuário. Para o
locutor ser considerado autêntico, a similaridade entre as características de sua elocução teste e as
características extraídas de seu padrão deverão superar esse limiar. Em caso negativo, o locutor é
considerado um impostor. Este trabalho é focado exclusivamente na Identi�cação Automática de
Locutor sem rejeição.
O reconhecimento de locutor pode ser feito através do uso de um texto conhecido ou pode ser
feito através de um texto arbitrário. No primeiro caso (reconhecimento dependente de texto),
o texto ou frase é previamente conhecido pelo sistema que o utilizará para teste e para o treina-
mento. É usado em aplicações nas quais se tem alto controle sobre a interação do usuário com
o sistema e, consequentemente, a performance do sistema é bastante elevada. No segundo (re-
conhecimento independente de texto), não há especi�cação de texto. A tarefa de veri�cação é
realizada com a comparação de um texto falado no momento do reconhecimento, com outro texto
distinto, previamente gravado pelo sistema. Torna o sistema mais �exível mas, por outro lado, a
solução/implementação mais complexa. Pode ser utilizado em paralelo com sistema de reconheci-
mento de voz, de forma a se ter conhecimento do texto pronunciado.
Recentes pesquisas na área de reconhecimento de locutor visam reduzir a complexidade com-
putacional de métodos já existentes, e que invariavelmente requerem grande carga computacional
para o processamento. Trabalho publicado recentemente baseado em LS-SVM (The Least Square
18
Support Vector Machine), transforma um problema de programação quadrática, do convencional
Support Vector Machine (SVM), num problema de programação linear, reduzindo assim a complex-
idade computacional. Outras publicações recentes procuram aprimorar o desempenho dos métodos
de reconhecimento em ambientes ruidosos.
Procuram-se atualmente traços característicos do sinal de voz para implementação de sistemas
de RAL que aglutinem praticidade, robustez e segurança aos sistemas. Mais especi�camente, traços
que:
• Ocorram naturalmente e frequentemente durante a fala;
• Facilmente mensurável (gerando baixa complexidade computacional);
• Imutável no tempo, mesmo durante doença do locutor;
• Não afetado por ruído ou características impostas pela forma de transmissão;
• Não sujeito a fraudes por imitações.
Não encontrou-se, ainda, este traço. E aqueles sistemas de RAL que utilizam características da
voz extraídas do espectro do sinal, provaram ser mais efetivos.
Visando trabalhar com uma técnica de baixa complexidade e com alta simplicidade de imple-
mentação, este trabalho faz uso de técnicas de processamento digital de sinais para a identi�cação
automática de pessoas pela voz, baseado em uma técnica nomeada de �mascaramento em freqüência
por oitava�, derivada do vocoder baseado em MPFO descrito no Capítulo 3.
Observou-se que os sinais gerados por esse sistema (vocoder) apesar de simpli�car signi�cativa-
mente a quantidade de amostras do sinal de voz, mantinha algumas características fundamentais
para o reconhecimento, possibilitando o reconhecimento de uma maneira computacional mais e�-
ciente.
Na abordagem adotada, o vetor característico dos quadros do sinal de voz, ao contrário da
tendência predominante dos métodos mais tradicionais de utilizar coe�cientes obtidos do cepstrum
(citado no Capítulo 2), é representado pela média das amplitudes dos tons de mascaramento em
cada oitava, obtidos através do uso das técnicas de análise do vocoder baseado em MPFO. Adicional-
mente, o padrão extraído das características de cada locutor, será comparado com as características
extraídas das elocuções testes, substituindo o classicador padrão, usando cadeias de Markov es-
condidas (HMM) ou qualquer outra técnica citada, pela técnica simples de correspondência via
distância euclidiana entre os vetores (simples operação de subtração componente a componente do
vetor).
No RAL, o processo de reconhecimento é dividido em quatro fases principais: aquisição de
dados para o processamento, onde se inclui a gravação do sinal e a amostragem do sinal, o pré-
19
processamento do sinal de voz que inclui a pré-ênfase, detecção de pontos extremos, a segmentação
dos dados em quadros (frames) e o janelamento, e, ainda, as fases de geração do padrão de recon-
hecimento e a comparação do locutor desconhecido com a base de padrões.
Adiante serão descritas cada uma destas fases para o sistema de RAL utilizado na implementação
em software.
4.2 Aquisição da Voz
O processo de identi�cação do locutor tem início com a gravação das elocuções para o proces-
samento. Isso é realizado utilizando um microfone, cuja saída está conectada a uma placa de som
instalada em um computador. Essa tem a função de converter o sinal analógico de voz em amostras
igualmente espaçadas no tempo, a uma taxa que pode ser previamente escolhida.
Como já discutido, o teorema da amostragem de Shannon indica que para que não haja perda
de informação, um sinal de banda limitada na frequência fm deve ser amostrado a uma taxa, em
amostras (igualmente espaçadas no tempo) por segundo, de 2fm. Apesar de alguns sons vocáli-
cos apresentarem uma energia signi�cativa em componentes do espectro acima de 4 kHz, pode-se
desprezar essas contribuições, tratando-as como ruído, e considerar que a banda do sinal de voz
é limitada na frequência citada, de 4 kHz. Portanto, obedecendo o teorema da amostragem, na
implementação foi utilizada frequência de amostragem de 8000 amostras/s, com 8 bits de resolução
e 1 canal, mono.
4.3 Pré-processamento
Após adquirirem-se os dados e convertê-los em amostras digitais, passa-se à fase do pré-processamento
dos mesmos. Essa etapa compreende a pré-ênfase, a detecção de pontos extremos (endpoints), seg-
mentação dos dados em quadros (frames) e janelamento.
4.3.1 Pré-ênfase
Devido a características �siológicas do sistema de produção da fala, o sinal de voz irradiado pelos
lábios apresenta uma atenuação de aproximadamente 6 dB/oitava nas altas frequências. O �ltro de
pré-ênfase serve para compensar esta atenuação, antes da análise espectral, melhorando a e�ciência
da análise; sendo a audição menos sensível a frequências acima de 1 kHz do espectro, a pré-ênfase
ampli�ca esta área do espectro, auxiliando os algoritmos de análise espectral na modelagem dos
aspectos importantes do espectro da voz. A resposta em freqüência do �ltro pode ser representada
por:
H(z) = 1− a · z−1
20
Neste caso, a saída, y[n], de pré-ênfase está relacionado com a entrada, x[n], pela equação diferença:
y[n] = x[n]− a · x[n− 1], 1 6 n 6M
onde M é o número de amostras.
4.3.2 Detecção de Endpoints
Para se ter um bom desempenho no reconhecimento do locutor, é de extrema importância que
sejam determinados de forma e�ciente e precisa, o início e o �nal de uma locução, com a �nalidade de
excluir os silêncios que não trazem nenhuma informação adicional sobre a locução a ser reconhecida,
como também de reduzir o tempo de processamento, além de evitar que o ruído de fundo que ocorra
antes e depois do sinal de voz prejudique o reconhecimento.
Os pontos extremos são determinados pelo primeiro quadro (frame) no qual o sinal de voz
realmente se inicia e pelo último quadro do sinal de voz. Eles são importantes porque evitam o
processamento dos segmentos quando não há voz ativa, evitando carga computacional e econo-
mizando tempo, além de servir como marco de início e �m de um segmento de voz. Estes fatores
são de grande importância, pois minimizam a carga do sistema de reconhecimento automático de
locutor, uma vez que o mesmo não terá que processar atributos de reconhecimento de trechos sem
informação de voz.
A determinação dos pontos extremos deve ser feita de forma cuidadosa, pois os mínimos erros
nesta estimativa podem degradar o reconhecimento. A determinação dos endpoints é realizada
através de um classi�cador de voz que pode diferenciar entre sons sonoros, surdos ou silêncio. Neste
trabalho foi utilizado um classi�cador baseado nas características temporais do sinal. O escolhido
foi o algoritmo de Voice Activity Detection (VAD, ou detecção de atividade de voz, em português),
que se baseia em um dos algoritmos mais empregados para esta �nalidade (proposto por Rabiner
e Sambur em 1975) e que utiliza duas medidas do sinal de voz: energia do sinal e taxa de
cruzamento por zero, i.e., a taxa em que a amplitude do sinal muda de sinal entre duas amostras
consecutivas.
Neste caso, foi usada uma janela de duração de 10ms, com um período inicial de 100ms para
o algoritmo realizar um levantamento da estatística do ruído de fundo.
4.3.3 Segmentação em Quadros e Janelamento
Após a detecção dos pontos extremos, o sinal de voz deve ser particionado em pequenos seg-
mentos, quadros (frames) bem de�nidos, com o propósito de se obter trechos de voz razoavelmente
assumidos como estacionários. Sabe-se que as características dos sinais de voz, mudam muito lenta-
mente na voz contínua, e portanto muitas partes da onda acústica podem ser assumidas como
21
estacionárias num intervalo de curtíssima duração (entre 10 e 40 ms). Este intervalo caracteriza o
tamanho da janela a ser usada.
O janelamento do sinal tem o objetivo de amortecer o efeito do fenômeno de Gibbs, que surge
devido à descontinuidade das janelas.
Para o contexto da produção da voz, as características apresentadas, referentes ao janelamento
de Hamming, mostram que este tipo de janela é mais e�ciente quando comparada às janelas re-
tangular e de Kaiser, com uma aproximação da janela ideal. Assim sendo, esta janela foi adotada
inicialmente nesta implementação.
4.4 Geração do Padrão de Locutor
4.4.1 Extração das Características dos Quadros de Voz
O processo inicial de extração das características é basicamente igual ao processo de simpli�cação
do espectro via MPFO descrito no Capítulo 3. Segue-se a mesma divisão das amostras em oitavas,
e o mesmo comprimento de janela para uso da DFT usando o algoritmo butter�y. Portanto, cada
segmento/quadro de voz será representado no domínio da frequência por 7 amostras, cada uma
sendo a amostra de maior magnitude em cada oitava.
Figura 4.1: Exemplo de sinal antes e depois da simpli�cação do espectro.
De�ne-se o vetor inicial de amostras espectrais, para cada quadro de voz, oct(i)j , onde i representa
o i-ésimo quadro e j o índice da oitava. O vetor é representado como segue:
oct(i)j =
[a(i)j,1 a
(i)j,2 . . . a
(i)j,Nj
], i = 1, . . . ,n; j = 1, . . . ,7
onde a(i)j,k é a amplitude da transformada de Fourier no k-ésimo ponto, na janela i e na oitava j, Nj
é o número de amostras desta oitava e n é o número de quadros/segmentos do áudio. Buscando-se
a amostra de maior amplitude, mantendo-a e zerando as demais para cada oitava de cada quadro,
obtém-se o novo vetor, modi�cado, newoct(i)j , contendo Nj − 1 zeros, sendo a única componente
22
representada por max(a(i)j,k
).
newoct(i)j =
[0 0 . . . max
(a(i)j,k
). . . 0 0
], k = 1, . . . ,Nj
Com todos os vetores modi�cados, newoct(i)j , calculados, o algoritmo cria, para cada oitava,
uma matriz, Mj , cujas linhas são formadas por todos os n vetores newoct(i)j do arquivo. Este
procedimento é feito para o cálculo da média do tons de mascaramento, i.e., média de cada oitava.
Mj =
newoct
(1)j
newoct(2)j
...
newoct(n)j
Calculando-se a média de cada coluna da matriz Mj (de dimensão n × Nj), obtém-se a partic-
ipação média de cada amostra espectral de mascaramento (múltiplos de 62, 5Hz), no sinal de voz,
resultando no vetor:
mj =[mj,1 mj,2 . . . mj,Nj
]onde mj,k =
1n
∑ni=1max
(a(i)j,k
)e k indica posição entre as Nj amostras de cada oitava na qual há
amostra espectral diferente de zero. Em seguida, todas as componentes do vetor mj são somadas.
Essa soma representará a participação média dos tons de mascaramento dentro de sua respectiva
oitava.
sj =
Nj∑k=1
mj,k
Tais valores formarão o vetor stotal, como segue,
stotal =[s1 s2 . . . s7
]Os parâmetros obtidos pela etapa anterior são diretamente proporcionais aos níveis de energia
dos sinais coletados, fator que pode deturpar a classi�cação. Para realizar a normalização dessas
amplitudes, faz-se a divisão do vetor stotal pela soma de todas as suas componentes.
Normalizando, o vetor stotal encontra-se, en�m, o vetor característico do sinal de voz, com
apenas 7 componentes, representantes do número de oitavas, o qual será usado para a comparação
com as locuções testes:
snorm =1∑7j=1 sj
[s1 s2 . . . s7
]4.4.2 Obtenção do padrão
O padrão de cada locutor é obtido calculando-se a média entre cada componente dos vetores
característicos extraídos de um conjunto determinado de elocuções. Seja C o número de elocuções
23
realizadas para obtenção do padrão de determinado locutor. Este padrão será dado por:
spadrao =1
C
C∑l=1
snorm,l
onde a soma é vetorial (entre elementos de mesmo índice) e snorm,l representa o vetor característico
da l-ésima elocução, de um total de C elocuções.
4.5 Comparação com Padrão de Voz
Como última etapa do processo de identi�cação, tem-se a comparação entre dois vetores. A
comparação é realizada através do cálculo da distorção entre eles. Há várias medidas de distorção
entre vetores que podem ser utilizadas em reconhecimento de locutor. A medida de distorção
mínima ou euclidiana, a medida mais conhecida, foi aquela utilizada. Seja p = [p1 p2 . . . p7] o vetor
padrão e x = [x1 x2 . . . x7] o vetor característico da elocução do locutor desconhecido, então, a
distância euclidiana entre eles, d(x,p) será dada por:
d(x,p) =
√√√√ 7∑i=1
(xi − pi)2
O padrão armazenado que obtiver o menor valor para d(x,p) será o selecionado, e o locutor que
for o detentor desse padrão será o escolhido.
A seleção do locutor foi, portanto, realizada com base na técnica simples de template matching
via distância euclidiana entre o vetor característico de uma elocução teste e os vetores padrão de
voz armazenados para os locutores cadastrados.
Na Figura 4.2, está mostrado o diagrama de blocos do sistema de RAL utilizado na implemen-
tação em software e proposto em [2]. Alguns dados estão distintos dos utilizados na implementação,
mas o ideal do �uxo de programa é o mesmo.
24
Capítulo 5
Implementação
em Software
Este capítulo tem por objetivo documentar o processo de criação do código produzido para gerar
o programa aplicativo do sistema de Reconhecimento Automático de Locutor, como forma de facilitar
modi�cações e melhoramentos que venham a ser feitos no programa, adicionando funcionalidades e
alterando algoritmos.
5.1 Introdução
O programa gerado a partir da compilação recebeu o nome de RecLoc. Portanto, quando
este for citado, entenda-se como a implementação em software do sistema de Reconhecimento
Automático de Locutor descrito no Capítulo 4.
A idéia principal que motivou a criação do RecLoc foi transformar em realidade um sistema
que pudesse ser utilizado dentro das dependências do Departamento de Engenharia e Sistemas, i.e.,
criar um produto terminado, fruto de tecnologia e esforços dos próprios alunos do departamento.
Dessa forma, o RecLoc foi desenvolvido.
Alguns atributos do RecLoc são:
• Uso de técnicas de codi�cação e tratamento do espectro dos sinais de voz desenvolvidas por
aluno de mestrado do Departamento;
• Automatização de todo o processo para funcionamento de um sistema de RAL;
• Programado em linguagem Java, a qual permite rodar o aplicativo em serviços de Internet,
browsers (funcionalidade ainda não adicionada ao programa), transparente à plataforma;
• Execução em máquinas simples, sendo necessário uso de microfone acoplado à entrada de
áudio.
26
5.2 Linguagem Java
A linguagem de programação Java surgiu como fruto de um projeto da empresa de computa-
dores, semicondutores e software Sun Microsystems, no início da década de 1990.
Ela é baseada no paradigma de análise de sistemas de software denominado de orientação
a objetos. Este paradigma baseia-se na interação entre unidades bem delimitadas de software;
tais unidades são comumente conhecidas como objetos. Estes chamados objetos são agrupados em
classes, que representam um conjunto de objetos de características similares. Fazendo um paralelo
com a linguagem C, a classe, de Java, seria uma struct, de C, a qual de�ne um novo tipo de objeto
(um inteiro � int �, por exemplo, é um exemplo de objeto comum às duas linguagens). Ou seja,
qualquer ente do mundo real pode ser abstraído em uma classe de Java e por ela representada.
Ainda nas unidades de classe são de�nidos os comportamentos e estados dos objetos. Um tipo de
comportamento é de�nido em Java como um método, que afeta somente um objeto dentro daquela
classe. Os estados que o objeto é capaz de manter são de�nidos pelos seus atributos, i.e., dados que
vão caracterizar o objeto. Os métodos podem alterar estes atributos ou retornar seus valores para
uso na execução do código.
Há, ainda, uma entidade onde são agrupadas classes que, juntas, modelam um sistema. Esta
entidade, à qual se dá o nome de pacote, é utilizada para organizar o projeto de software e, oca-
sionalmente, exportá-lo para uso em outros projetos.
Na Internet �ca disponibilizada uma biblioteca de pacotes Java, as Application Programming
Interfaces (APIs). Há APIs que executam as mais diversas funções, desde matemáticas até trata-
mento de sinais, acesso a componentes de hardware ou para construção de interfaces grá�cas. Além
dessa biblioteca, pode-se encontrar outras APIs em sites de universidades que implementam fun-
cionalidades mais especí�cas para o ambiente cientí�co, voltadas à áreas como estatística, física,
processamento digital de sinais e uma vasta gama de aplicações.
O paradigma da orientação a objetos permite o modelamento do mundo real em sistemas de
software com maior facilidade, tornando mais natural o processo de abstrair o mundo real, a partir
de conceitos, em objetos o mais �eis possíveis ao domínio que se quer representar. Além disso,
permite modularizar o código, facilitando a depuração (debug) do código, o entendimento das
funções e, por conseguinte, modi�cações posteriores.
5.3 Modelagem do RecLoc
Usando do paradigma de orientação a objetos da linguagem Java, a construção do código seguiu
a modelagem para o Reconhecimento Automático de Locutor descrita no Capítulo 4. O processo
para a elaboração do sistema de RAL é, como apresentado, constituído de quatro etapas ou fases
27
bem de�nidas, quais sejam: aquisição do sinal de voz, pré-processamento, geração do padrão e
comparação de locutor desconhecido com base de padrões.
Portanto, obedecendo a estas etapas, o código foi construído procurando modularizar ao máximo
a criação de classes representativas de cada objeto abstraído do mundo real.
Além disso, foram criadas classes de objetos auxiliares para a execução do processamento das
variáveis e criação de funcionalidades para o programa. A Tabela 5.1 mostra uma listagem dos
pacotes e classes do código.
Pacote Classe
AD_VOZ Captacao
ARQUIVO Arquivo; TratarBD
PROCESSAMENTO CompLoc; Espectro; VetorLoc; PadraoLoc; VoiceActivityDetection
GUI Fachada; Janelas diversas
Tabela 5.1: Listagem de pacotes e classes de RecLoc.
O código está disponível na versão virtual deste trabalho, Apêndice A, no site ...
5.3.1 Aquisição de Sinal
Para a aquisição de um sinal de áudio usando a linguagem Java, a solução encontrada foi
importar para o projeto a API Java Sound. Esta API possui objetos, os quais possuem métodos,
que permitem acessar a placa de áudio do computador. A classe criada no projeto do RecLoc para
concentrar métodos de aquisição de áudio foi nomeada Captacao, a qual está inserida no pacote
AD_VOZ, que congrega duas classes: a já citada e uma que implementa gravação de arquivos de
áudio a partir de vetor de objetos do tipo double (representação de números reais).
A partir do objeto TargetDataLine da API Java Sound foi obtido acesso à placa de áudio. Este
objeto permite a observação da entrada de áudio e recuperação dos dados, aquisitados como um
vetor (array) de bytes. Este vetor pode ser modi�cado dependendo das características de formato
de áudio escolhidas. Para tal escolha, usa-se a classe AudioFormat. No caso da implementação do
RecLoc foram utilizadas as seguintes características para obtenção dos bytes de áudio:
• Frequência de amostragem de 8000 amostras por segundo;
• Resolução de 8 bits;
• Canal mono.
A obtenção desses bytes de áudio se dá através de um streaming, i.e., uma corrente de pacotes
de bytes com tamanhos pré-�xados pela próprio pacote Java Sound. Portanto, a classe Captacao
deve `escutar' continuamente a entrada de áudio e acrescentar os pacotes de forma concatenada a um
28
único vetor de bytes que irá representar a captação de som para aquele espaço de tempo determinado
pelo usuário. Para tanto, esta classe faz uso do objeto Thread, disponibilizado em mais uma das
APIs Java. Este objeto permite que vários processos possam ser executados simultaneamente pelo
processador da máquina. Neste caso, os processos simultâneos são aquisição de bytes de áudio e
concatenar estes bytes para que não sejam perdidos quando da ocorrência do próximo streaming.
Feita a especi�cação do formato de áudio e construído o vetor de bytes de áudio que representam
a elocução feita, a classe Captacao disponibiliza, através de um de seus métodos, o uso de tal
vetor. Iremos chamar este atributo da classe de audioBytes.
O vetor audioBytes é formando por um conjunto de objetos byte. O comprimento dele indica
o tamanho do arquivo de áudio gerado a partir dele, a menos de um cabeçalho de bytes que são
concatenados ao vetor para indicar para o sistema operacional de qual extensão de arquivo se trata,
entre outras propriedades.
Abre-se um parêntese para deixar claro que, até o presente momento e no programa como um
todo, não é necessário salvar arquivos de áudio, seja de que formato for (.wav, .au, .ai�, .mp3).
Ou seja, o atributo audioBytes da classe Captacao é continuamente reutilizada na execução do
programa.
Então, a funcionalidade principal desta classe é captar o áudio quando exigido e retornar para
uma classe de hierarquia maior um vetor de objetos do tipo byte para ser processada. Então, tem-
se o áudio digitalizado, após passar pelo processo de conversão análogico/digital feita pela placa de
áudio. A representação deste vetor segue:
audioBytes =
b7,0 b6,0 . . . b1,0 b0,0b7,1 b6,1 . . . b1,1 b0,1...
.... . .
......
b7,N−1 b6,N−1 . . . b1,N−1 b0,N−1
(5.1)
onde bi,j indica o i-ésimo bit de um byte de áudio, do j-ésimo byte do vetor de bytes e N indica o
número de bytes do vetor.
5.3.2 Pré-processamento
Esta etapa do sistema de RAL inclui outras três sub-etapas documentadas no Capítulo 4: pré-
ênfase, detecção de endpoints e segmentação/janelamento. Devido à constatação em [2] de que
a e�ciência do sistema foi deteriorada com o uso de pré-ênfase do sinal, esta sub-etapa não foi
implementada no RecLoc.
Tratamento de audioBytes
Antes de esclarecer o funcionamento das demais sub-etapas, há um tratamento anterior a se
executar. É preciso tratar o vetor audioBytes e transformá-lo em vetor de outro tipo de objeto
29
para que se possam realizar processamentos dos dados. Mais especi�camente, o vetor de bytes
deverá transformar-se em vetor de objetos do tipo double. Para executar esta transformação faz
necessário entender de que forma é feita a conversão analógico/digital que gera o vetor audioBytes.
Observando-se a representação de audioBytes na Equação 5.1 vê-se que para cada byte, o bit
mais signi�cativo, i = 7, está posicionado na primeira posição de cada linha da matriz; e o bit
menos signi�cativo, i = 0, na última posição de cada linha, como mostrado na Figura 5.1. E o
byte que aparece na primeira posição do vetor corresponde à primeira amostra digitalizada, sendo
concatenadas com as amostras que aparecessem consecutivamente no domínio do tempo.
Figura 5.1: Organização dos bits em arquivo de áudio.
Portanto, o vetor de bytes deve ser rotacionado, para direita ou esquerda, para que cada byte
(ou amostra) do sinal de áudio tenha, durante a execução do processamento, a amplitude adequada.
Necessário notar que a representação destes bytes pelo sistema operacional usa complemento a
dois, portanto, tomando os valores na representação decimal, temos:
−128 6 Bj =(b7,jb6,jb5,jb4,jb3,jb2,jb1,jb0,j
)10
6 127
Então, para obter-se as amostras transformadas para valores reais (representados pelo tipo
double) dentro da faixa entre −1 e +1, deve-se primeiro rotacionar os bits de cada byte e depois
dividir por 27 = 128.
dj =Bj − 128
128
onde dj é o valor da j-ésima amostra representada pelo tipo double.
Agora, tem-se um vetor de double, denominado amostra.
Importante destacar que este tratamento é implementado na classe Espectro, presente no
pacote PROCESSAMENTO. Foi feito como um método (getWave()) do objeto, o qual recebe
audioBytes de um objeto do tipo Captacao e retorna amostra, representado como segue:
amostra =(d0 d1 d2 . . . dN−1
)T(5.2)
Detecção dos endpoints
A sub-etapa de detecção de endpoints, a exemplo do exposto também no Capítulo 4 foi imple-
mentada utilizando o algoritmo de VAD proposto em 1975 por Rabiner e Samur. Importante para
o entendimento da execução do programa é que a função deste algoritmo é retirar de um vetor
representativo de áudio as partes `silenciadas' do início e �m do vetor. Ou seja, se a elocução em
30
si demorar alguns segundos para ocorrer após o usuário exigir a captação, o algoritmo irá retirar
do áudio este silêncio inicial. No entanto, se dentro de uma mesma captação houver duas ou mais
elocuções diferentes com intervalos de silêncio entre elas, o algoritmo não irá retirá-los.
Este algoritmo foi implementado na classe VoiceActivityDetection. Ela recebe o vetor
amostra, faz o tratamento através de um de seus métodos e retorna para o programa um vetor
modi�cado, denominado amostraVAD, onde o comprimento deste vetor, i.e., o número de elementos,
é sempre menor ou igual ao comprimento de amostra. Como já discutido anteriormente, esta
operação melhora a performance do RecLoc pelo fato de tomar somente amostras da elocução
propriamente dita e diminui o tempo de execução, já que a quantidade de cálculos, FFTs, entre
outros processamentos, será reduzido.
A Equação 5.3 mostra como �ca o vetor modi�cado. A equação mostra que a amostra inicial
passa a ser dx e a amostra �nal do arquivo de áudio dy, sendo x e y representações de índices do
vetor original amostra. Neste caso, o comprimento total passa a ser NV AD = y−x+1. Para efeito
de simpli�cação, façamos x = 0 e y = NV AD − 1 e, portanto, as amostras serão representadas por
d0, d1 e assim por diante.
amostraVAD =(dx dx+1 . . . dy−1 dy
)T(5.3)
Segmentação
A implementação da segmentação implica na divisão das amostras em segmentos de compri-
mento pré-�xados. Este comprimento terá impacto direto na complexidade de cálculo para obtenção
do espectro através de transformadas rápidas de Fourier no tempo discreto (DFTs). Portanto, tendo
em mente este fator foi escolhido um comprimento cujo valor fosse uma potência de 2. No caso,
128. Para tal comprimento de janela, calculando o período de amostragrem, T = 1/8000 = 125µs,
então, chega-se ao tempo de duração da janela, 128 · T = 16ms.
Assim escolhido o comprimento, foi criado um método dentro da classe Espectro (a qual,
basicamente, congrega todos métodos de processamento de amostras, cálculo de espectro e obtenção
do vetor característico) para `quebrar' o vetor amostraVAD em uma matriz de vetores (segmentos de
áudio) de comprimento 128. Foi criado, então, o atributo do objeto do tipo Espectro denominado
amostraJan para receber o resultado desta segmentação, como segue:
amostraJan =
d0 d1 . . . d126 d127...
.... . .
......
d128i d128i+1 . . . d128i+126 d128i+127...
.... . .
......
d128(L−1) d128(L−1)+1 . . . d128(L−1)+126 d128(L−1)+127
(5.4)
onde L = NV AD/128 é o número de segmentos de áudio de comprimento 128 e NV AD representa o
comprimento total do arquivo de áudio após o algoritmo VAD. Vamos tratar esse valor como N .
31
Para o caso em que a divisão resulta em resto, L é incrementado de 1 e o último segmento é
preenchido com as amostras restantes e com zeros.
Janelamento
Dando prosseguimento à implementação do sistema de RAL, após a obtenção das amostras de
áudio divididas em L segmentos de comprimento �xo, 128, o próximo passo é o janelamento destas
amostras. Isso signi�ca que cada segmento será multiplicado por uma janela de comprimento
correspondente. No caso, foi escolhido janelamento usando janela de Hamming, cuja expressão já
foi mostrada no Capítulo 3.
Para implementação deste janelamento, foi utilizada uma biblioteca de pacotes de Java, volta-
dos para aplicações cientí�cas, disponibilizada no site do Prof. Michael Thomas Flanagan, do
Departamento de Engenharia Eletrônica e Elétrica da University College London (constituinte da
University of London). Esta biblioteca contém uma classe denominada FourierTransform.
A classe FourierTransform correspondeu às necessidades do projeto, pois a base de dados
com a qual ela faz os seus cálculos também é um vetor de objetos do tipo double, pelo qual se
representa o arquivo de áudio na presente implementação.
Para usá-la, esta foi importada para a classe Espectro e lá foi criado um objeto do tipo
FourierTransform. Na verdade, como são L janelamentos e DFTs a se executar, o que foi criado foi
um vetor de objetos FourierTranform de comprimento L, sendo cada um referente a um segmento
de áudio.
Para efetuar o janelamento, a primeira etapa foi inserir dados em cada objeto do vetor, através
do método correspondente, que recebe um vetor de double. Em seguida, para aplicar o janela-
mento foi chamado o método para setar a função de janela de Hamming para cada objeto do tipo
FourierTransform do vetor, denominado fft. A operação �cou:
ffti ←− amostraJani (5.5)
ffti ←− amostraJani × w(128)HAM (5.6)
Ou seja, o objeto da posição i do vetor de objetos FourierTranform recebe (através de métodos)
um vetor de comprimento 128 de double, referente ao i-ésimo segmento do arquivo de áudio. E, em
seguida, recebe a multiplicação deste por uma janela de Hamming de comprimento 128. Posto de
outra forma a operação �ca:
fft←−
d0 . . . dj . . . d127...
. . ....
. . ....
d128i . . . d128i+j . . . d128i+127...
. . .... . . .
...d128(L−1) . . . d128(L−1)+j . . . d128(L−1)+127
×w0...wj...
w127
(5.7)
Todas estas operações estão implementadas como métodos da classe de objetos Espectro.
32
5.3.3 Geração do Padrão
Até agora, o código do programa RecLoc já implementou as etapas de aquisição de voz e pré-
processamento do sinal. A próxima etapa, geração de padrão de locutor, é implementada ainda na
classe Espectro, onde, como o próprio nome indica, haverá métodos para obtenção do espectro do
sinal e, mais ainda, para o cálculo do vetor característico de cada elocução. Fique claro que nesta
classe não é obtido o padrão do locutor que é gerado a partir de um número pré-determinado de
elocuções do mesmo locutor para `treinamento' do sistema. A partir dos vetores característicos de
cada um desta elocuções faz-se cálculo para obtenção de um vetor característico que representará
o padrão do locutor na base de dados.
Para geração do padrão, usa-se a técnica do Mascaramento Pleno de Frequência por Oitava
(MPFO) que se traduz numa técnica que explora uma característica psico-acústica do sistema
auditivo humano já indicada no Capítulo 3.
Para extrair esta característica do arquivo de áudio já segmentado e janelado, o próximo passo
é aplicar a cada janela a transformada de Fourier, para obtenção dos respectivos espectros. No
caso, utiliza-se novamente o vetor de objetos do tipo FourierTransform fft que recebeu, em cada
posição, o segmento janelado do arquivo de voz, com cada amostra representada por um objeto do
tipo double. Teremos:
(v0 v1 . . . vj . . . v127
) F←−−→(V0 V1 . . . Vj . . . V127
)(5.8)
Apesar do mesmo número de amostras de cada vetor, os índices representam grandeza diferentes.
Uma sendo o tempo discretizado e outra a frequência discretizada. A discretização no tempo faz
com que a amostra na posição n represente um valor quantizado amostrado no tempo contínuo nT .
A discretização na frequência impõe que a amostra na posição k represente um valor quantizado
do espectro amostrado na frequência contínua knT . No presente caso, a frequência quantizada tem
passo de 62, 5Hz.
Como mostrado nas discussões acerca do vocoder, o número de amostras para cada oitava está
indicado na Tabela 3.1.
A implementação da DFT para cada janela é feita usando um método da classe Fourier-
Transform. Este método exige que o comprimento do vetor a ser transformado tenha como valor
uma potência de 2, de forma a aplicar o algoritmo de Cooley-Tukey na base 2 ou butter�y. Como
este é o caso, não houve maiores problemas. O resultado da execução deste método pode ser aquisi-
tado por outro método da classe, que retorna um vetor de comprimento 128 de objetos de uma
classe também disponível na biblioteca do Prof. Flanagan. Esta classe de objetos é denominada
Complex e pretende modelar os número complexos.
Agora o código disponibiliza uma matriz, denominada complexo, de amostras representadas por
33
objetos do tipo Complex de dimensão L× 128. Como segue:
complexo =
A0 + jC0 . . . A127 + jC127
.... . .
...A128i + jC128i . . . A128i+127 + jC128i+127
.... . .
...A128(L−1) + jC128(L−1) . . . A128(L−1)+127 + jC128(L−1)+127
(5.9)
Em seguida, é criada a matriz amostraFourier que toma a magnitude de cada amostra da
matriz complexo. Sendo rm a m-ésima amostra da matriz amostraFourier, tem-se
rm =√A2m + C2
m
Faz-se uma busca na matriz guardando-se a posição da amostra de maior magnitude de cada
oitava de cada janela, de forma a zerar as demais componentes de cada janela. Em seguida, faz-se
a soma dessas magnitudes por oitava de todas as janelas, portanto,
mq =1
L
L−1∑l=0
max (rql) (5.10)
onde mq representa a média da q-ésima oitava e ql a posição na oitava q de cada l-ésima janela da
amostra de maior magnitude.
Finalmente, tem-se as componentes do vetor característico, vetor de double de comprimento 7
(número de oitavas), armazenado no atributo vetorCaracteristico da classe de objetos Espec-
tro:
vetorCaracteristico =1∑6
q=0mq
(m0 m1 m2 m3 m4 m5 m6
)(5.11)
=(v0 v1 v2 v3 v4 v5 v6
)Agora que está calculado o vetor característico para um única elocução, usa-se a classe PadraoLoc
para calcular o padrão do locutor, o qual é salvo no atributo padrao. Isto é feito pela simples mé-
dia entre as componentes correspondentes dos M vetores característicos gerados das M elocuções
pré-determinadas pelo usuário para formação do padrão.
padrao =1
M
M−1∑i=0
(v0,i v1,i . . . v5,i v6,i
)(5.12)
5.3.4 Comparação com Base de Dados
Esta comparação é implementada com o uso das classes VetorLoc e CompLoc. A segunda
instancia objetos da primeira.
A primeira classe tem como atributos uma String que permite identi�car o locutor e um vetor de
double de comprimento 7, representando o vetor característico padrão associado. Esta classe busca
34
modelar/abstrair o conceito de representação do indivíduo via uso de características extraídas pela
técnica de MPFO.
A classe CompLoc recebe como parâmetro de um de seus métodos o vetor característico do
locutor desconhecido e tem como atributo um vetor de objetos do tipo VetorLoc. Este vetor tem
comprimento determinado pelo número de cadastros presente na banco de dados, o qual é acessado
através de métodos da classe auxiliar TratarBD do pacote ARQUIVO.
Então, o template matching é realizado calculando-se a menos distância euclidiana entre as
componentes das oitavas do vetor característico do locutor desconhecido e os vetores da base de
dados. Aquele que apresentar menor distância terá seu atributo String apresentado para o usuário
do RecLoc.
5.4 GUI e Funcionalidades
35
Referências
[1 ] R. F. B. Sotero Filho � Codi�cação de Voz e Reconhecimento Automático de Locutor Projetadas
Via Mascaramento Pleno em Frequência por Oitava � Dissertação de Mestrado, Programa de
Pós-Graduação em Engenharia Elétrica, UFPE, Recife, 2009.
[2 ] R. F. B. Sotero Filho, H. M. de Oliveira � Reconhecimento de Locutor baseado no Mascaramento
Pleno em Frequência por Oitava � 7o Congresso de Engenharia de Áudio (AES), São Paulo,
26-28 de maio 2009.
[3 ] S. Milmann � A History of Engineering and Science in the Bell System, Communications
Sciences (1925�1980) � AT&T Bell Laboratories, 1984.
[4 ] D. Tompkins � How to Wreck a Nice Beach: The Vocoder from World War II to Hip-Hop, The
Machine Speaks � Stop Smiling Books, 2010.
[5 ] H.M. de Oliveira � Análise de Fourier e Wavelets, Sinais Estacionários e não Estacionários �
1a ed., Recife : Editora Universitária da Universidade Federal de Pernambuco, p.343, 2007.
[6 ] D. Tonidandel � Decifrando a Transformada Z � Congresso Brasileiro de Automática (CBA)
2010, Bonito.
[7 ] R.J. Vanderbei � Linear Programming: Foundations and Extensions � 2a ed., p.466, 2001.
[8 ] R.W. Hamming � Digital Filters � 3a ed., Dover, 1989.
[9 ] R. Kurzweil � The Age of Spiritual Machines � Viking Adult, p.400, 1999.
[10 ] P.S.R. Diniz, E.A.B. Da Silva, S.L. Netto � Digital Signal Processing, System Analysis And
Design � Cambridge University Press, Fevereiro de 2006.
[11 ] N.S. Jayant, P. Noll � Digital Coding of Waveforms: Principles and Applications to Speech
and Video � Prentice Hall, p.688, 1990.
[12 ] G. E. Moore � Cramming more Components onto Integrated Circuits � Electronics Magazine,
vol. 38, no 8, Abril, 1965.
37
[13 ] Oliveira, M.P.B. � Veri�cação Automática de locutor, Dependente do Texto, Utilizando Sis-
temas Híbridos MLP/HM � Dissertação de Mestrado, Instituto Militar de Engenharia (IME),
2001.
[14 ] Campbell Jr, J.P. � Speaker Recognition: A Tutorial � Proceedings of the IEEE, Setembro,
vol. 85, no 9, 1997.
[15 ] Atal, B.S. � Automatic Recognition of Speakers from Theirs Voices � Proceedings of the IEEE,
Abril, vol. 64, no 64, pp. 460-475, 1976.
[16 ] Rosemberg, A.E. � Automatic Speaker Veri�cation: A Review � Proceedings of the IEEE,
Abril, vol. 64, no 4, pp. 475-487, 1976.
[17 ] Dan, Z. Zheng, S. Sun S. and Dong, R. � Speaker Recognition based on LV�SVM � The Third
International Conference on Innovative Computing Information and Control (ICICIC'08),
2008.
[18 ] Wang, N. Ching, P.C. Zheng N.H. and Tan Lee � Robust Speaker Recognition Using Both Vocal
Source and Vocal Tract Features Estimated from Noisy Input Utterances � IEEE International
Symposium on Signal Processing and Information Technology, 2007.
[19 ] Shao Y. and Wang D. � Robust Speaker Recognition Using Binary Time-Frequency Masks �
IEEE International Conference on Acoustic, Speech and Signal Processing (ICASSP), 2006.
[20 ] De Oliveira, H.M. � Análise de sinais para Engenheiros: Uma Abordagem via Wavelets �
Brasport, 2007.
[21 ] Diniz, S.S. � Uso de Técnicas Neurais para o Reconhecimento de Comandos à Voz � Dissertação
de Mestrado, IME, Rio de Janeiro, 1997.
[22 ] Rabiner, L.R., Schafer, R.W. � Digital processing of speech signals � New Jersey, Prentice
Hall, 1978.
[23 ] Silva, D.D.C � Desenvolvimento de um IP Core de Pré-Processamento Digital de Sinais de
Voz para Aplicações em Sistemas Embutidos � Dissertação de Mestrado, UFCG, Campina
Grande, 2006.
[24 ] Petry, A., Zanuz, A. e Barone, D.A.C. � Reconhecimento Automático de Pessoas pela Voz
usando técnicas de Processamento Digital de Sinais � SEMAC, Semana de Computação da
UNESP, 2000.
38
[25 ] Rabiner, L., Juang, B.H. � Fundamentals of Speech Recognition � New Jersey, Prentice Hall,
p507, 1993.
[26 ] Bezerra, M.R. � Reconhecimento Automático de Locutor para Fins Forenses, Utilizando Téc-
nicas de Redes Neurais � Dissertação de Mestrado, IME, Rio de Janeiro, 2001.
[27 ] Oppenheim, A.V., Schafer, R.W. � Digital-Time Signal Processing � New Jersey, Prentice
Hall, 1989.
[28 ] Ferguson, T. � Mathematical Statistics: a Decision Theoretic Approach � New York, Academic
Press, 1967.
39