Trabalho de Graduaçãode.ufpe.br/~hmo/TG_RAL.pdf · Resumo Este trabalho vem ... A primeira metade...

47

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

Figura 4.2: Diagrama de blocos do sistema de RAL proposto em [2].

25

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

Capítulo 6

Conclusões e discussões

36

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

Apêndice A

Código

40