IEEE LATIN AMERICA TRANSACTIONS, VOL. 12, NO. 6, SEPTEMBER 2014
1127
Closed-set Speaker Identification in Speech
Gateways
J. Neiva, A. Guimaraes and H. Macedo
Abstract— It has been observed an ever increasing need to
access infor- mation whenever and wherever you want,
regardless the means by which it is achieved. A speech gateway
proves to be an important tool to reduce the gap between
information source and the individual. However, current
implementations lack authentication modules for verifying the
identity of system’s users, which is an enjoyable feature for a sort
of applications. This paper presents the construction of a speaker
identification module and its integration to VoiceXML-enabled
speech gateways. Feature extraction has been made with
Cepstrum and Vector Quantization has been used to per- form
properly recognition. Experiments have shown an accuracy rate
of 87% in the identification of the speaker.
Keywords— Speaker Identification, Speech
VoiceXML, Cepstrum, Vector Quantization.
Gateways,
I. INTRODUÇÃO
C
OMPUTAÇÃO pervasiva é o termo utilizado para
designar o acesso à computação onde e quando se deseja,
não importando qual a forma de acesso. Este paradigma se
tornou possível através das inovações tecnológicas recentes e
da universalização do acesso à Internet, em especial.
Entretanto, apesar dos enormes avanços tecnológicos, ainda
existem empecilhos importantes à sua massificação. O
principal deles é imposto pelas limitações físicas de
dispositivos móveis, como aparelhos de celular e PDAs: as
dimensões reduzidas do visor e do teclado destes dispositivos
dificultam a navegação por busca de informação ou
comunicação na Web. Além disso, a comunidade de pessoas
com limitações motoras e/ou visuais permanece à margem de
todo este processo.
Uma possível solução para superar estes obstáculos é a
utilização de tecnologias que possibilitem o acesso à
informação através de interação vocal. De fato, o uso da
linguagem falada reduz ainda mais a distância entre o
conteúdo e a pessoa, configurando-se em um mecanismo
social de grande importância e protagonista do processo de
inclusão.
Existem dois conceitos recentes bastante relacionados ao
contexto de aplicação de tecnologias de voz: VoiceXML e
gateway de voz. Este último também pode ser chamado de
browser de voz ou portal de voz, e é responsável por manter
um diálogo com o usuário, além de estabelecer uma
comunicação com a aplicação VoiceXML [1]. O primeiro
termo consiste numa linguagem de marcação (markup
J. Neiva, Universidade Federal de Sergipe (UFS), Sao Cristovao,
Sergipe, Brasil, [email protected]
A. Guimarães, Universidade Federal de Minas Gerais (UFMG),
Belo Horizonte, Minas Gerais, Brasil, [email protected]
H. Macedo, Universidade Federal de Sergipe (UFS), Sao
Cristovao, Sergipe, Brasil, [email protected]
language) criada pela W3C (World Wide Web Consortium)
que permite o desenvolvimento de aplicações de voz
avançadas de maneira simplificada [2].
Um browser de voz é composto essencialmente por três
módulos: (1) um interpretador de arquivos VoiceXML, (2) um
sintetizador de voz (TTS -Text To Speech) e (3) um
reconhecedor de voz (ASR - Automatic Speech Recognition).
Este último módulo realiza o reconhecimento das sentenças
pronunciadas pelo usuário através da correta identificação dos
fonemas envolvidos na construção das palavras, composição
de fonemas e casamento com módulo linguístico apropriado,
responsável pela validação sintática da sentença.
A aplicabilidade de gateways de voz pode ser aumentada
com a adição de um módulo para reconhecimento do locutor
[3],[4] and [5]. O objetivo do reconhecimento de locutor é
extrair, caracterizar e reconhecer as informações sobre a
identidade do usuário do sistema. Reconhecedores de locutor
não fazem parte do conjunto de módulos tradicionais de um
gateway. A idéia de se implementar essa nova interface, até
então não encontrada em soluções existentes, vem da
importância que este módulo tem para o desenvolvimento de
aplicações que necessitem de autenticação do usuário como,
por exemplo, as providas por instituições financeiras. Isso se
deve ao fato de que a voz é uma característica biométrica que
não é passível de "esquecimento", "perda" ou "roubo", como
acontece não raramente quando do manuseio de logins e
senhas de acesso, ou uso de cartões de banco.
Este trabalho descreve a implementação de um módulo de
reconhecimento de locutor e sua integração com um gateway
de voz que interpreta documentos VoiceXML. O processo de
extração de características da fala foi implementado com o
algoritmo Cepstrum. A técnica de Vector Quantization foi
utilizada para realizar o posterior casamento dessas
características.
O restante do artigo está organizado como se segue. A
seção 2 apresenta um levantamento dos gateways de voz
existentes e descreve em detalhes seu princípio de
funcionamento. O estado da arte do reconhecimento de locutor
é realizado em seguida, na seção 3. A seção 4 descreve a
construção do módulo de reconhecimento de locutor e sua
integração com o gateway de voz BUG (Brazilian Usercentered Gateway). Alguns experimentos são descritos na
seção 5, bem como a discussão acerca dos resultados obtidos.
Por fim, algumas conclusões são apresentadas na seção 6.
II. GATEWAYS DE VOZ
O princípio de funcionamento de um gateway de voz é
semelhante ao de um browser Web: arquivos VoiceXML (ao
invés de (X)HTML) provenientes de uma aplicação servidora
são interpretados. A seqüência de atividades de uma aplicação
VoiceXML típica consiste de:
1128
IEEE LATIN AMERICA TRANSACTIONS, VOL. 12, NO. 6, SEPTEMBER 2014
1.
o gateway recebe uma chamada do usuário (que pode
ser iniciada a partir de uma chamada telefônica ou
diretamente através do computador);
2. o gateway executa o arquivo default da aplicação
VoiceXML;
3. o browser possibilita a interação do usuário com a
aplicação fazendo a sintetização e o reconhecimento
de voz;
4. este processo continua até que a chamada seja
finalizada.
Os principais componentes de um gateway de voz são: o
interpretador de VoiceXML, o sintetizador de voz (TTS ou
Text To Speech) e o reconhecedor de voz (ASR ou Automatic
Speech Recognition).
A função do interpretador é ler as tags da linguagem
VoiceXML e interpretar seu significado. Este módulo,
normalmente, é o responsável pelo controle da aplicação e
pela interação entre os outros módulos. O sintetizador de voz é
o módulo responsável por transformar texto em fonemas
pronunciáveis a fim de sintetizar a voz humana. Já o módulo
reconhecedor pode ser entendido de duas formas diferentes:
uma responsável pelo reconhecimento de fala e outra pelo
reconhecimento de locutor. O primeiro consiste em interpretar
o áudio recebido e transformá-lo em palavras, frases ou dígitos
correspondentes. O segundo consiste em reconhecer quem é a
pessoa que fala.
O reconhecedor de locutor não é um componente padrão de
gateway de voz e mesmo tendo sua aplicação direta para
sistemas que necessitem de autenticação biométrica, poucas
soluções para tal é encontrada na literatura. Muita da
dificuldade de se incluir um módulo de reconhecimento de
locutor em um gateway de voz está na falta de especificação
formal da linguagem VoiceXML para tal funcionalidade.
A W3C propôs uma mudança neste cenário com o
lançamento da primeira versão da especificação da liguagem
VoiceXML 3.0 [6]. Neste documento foram determinadas
diversas especificações para a inclusão de um módulo
denominado SIV (Speaker Identification and Verification). No
entanto, tal especificação ainda se encontra em revisão e não
se pode ter a garantia de que será realmente aceita como uma
especificação formal da W3C. Tal inclusão também foi
bastante discutida em um Workshop reallizado pela própria
W3C em 2009.
No entanto, pouco se viu em termos de avanços na
especificação formal por parte da W3C até então. Mesmo
assim, algumas propostas e estudos relacionados a inclusão de
um reconhecedor de locutor podem ser encontrados como é o
caso do RecoMadeEasy Speaker Recognition [7]. Solução
proprietária para reconhecedo e identificador de locutor.
Uma outra iniciativa na linha de reconhecimento e
identificação de locutor é o Gateway BeVocal Cafe da Nuance
[8]. O gateway apresenta uma proposta de identificação de
locutor. Para tal, foi necessária a criação de tags e
modificações específicas no gateway para tal. No entanto, o
projeto opensource da Nuance foi substituído por uma
proposta propietária [9].
Em relação aos demais componentes, a literatura é
relativamente ampla. Existem implementações opensource e
proprietárias. O OpenVXI [10] e o JVoiceXML [11] são as
duas maiores iniciativas opensource para interepretação de
arquivos VoiceXML. O FreeTTS [12] e o Sphinx-4 [13] são
exemplos de implementações opensource para síntese e
reconhecimento de voz, respectivamente. Existem algumas
soluções que implementam o gateway de voz por completo,
como é o caso do Tellme Studio [14], e que tem como
principal característica o fato de permitir o acesso aos seus
arquivos VXML através do Skype. O VOXEO [15], apesar de
ser proprietário, possui uma versão gratuita com algumas
limitações. Pode ser encontrado tanto na versão Web quanto
desktop. O NUANCE [9], como citado, é uma proposta
proprietária e uma das primeiras iniciativas da área. Tem como
principal característica um amplo número de idiomas
suportados. Com exceção desta última todas as outras
implementações não possuem suporte para a língua
portuguesa.
VoiceXML é uma linguagem de marcação criada pela W3C
que permite a criação de aplicativos de voz seguindo a mesma
metodologia da criação de aplicativos tradicionais para a web.
Ela é projetada para a criação de diálogos de áudio provendo
as seguintes características: síntese de voz, áudio digitalizado,
reconhecimento de voz e de entradas DTMF, além de
gravação de entrada de voz. Todas essas funcionalidades são
previstas e descritas por um conjunto de tags fornecidas pela
VoiceXML. É interessante notar a semelhança da estrutura
entre um código VXML e HTML, mas os pontos em comum
das duas arquiteturas vão além da especificação da linguagem,
uma vez que o principal objetivo da linguagem VXML é fazer
uso das vantagens do desenvolvimento Web para as aplicações
por voz.
III. RECONHECIMENTO DE LOCUTOR
De acordo com [16], reconhecimento de locutor é o
processo de identificação de uma pessoa, baseado nas
informações fisiológicas contidas em sua fala. Este processo
pode ser subdividido em diversas categorias.
A primeira dimensão de divisão do reconhecimento
categoriza este processo em (1) atividade de verificação do
locutor, ou (2) atividade de identificação do locutor. A
verificação do locutor é caracterizada pela realização de uma
decisão binária, determinando se a pessoa que fala é, de fato,
quem ela afirma ser através da pronúncia de um número de
cartão de acesso, da pronúncia de seu próprio nome, etc [17],
[18], [19]. Ao tentar se autenticar, as características extraídas
de sua voz serão comparadas com as que o sistema possui
previamente relativo àquele usuário, tendo duas alternativas
como resposta: autorizado ou rejeitado.
Já a identificação do locutor se caracteriza pela comparação
da fala da pessoa a ser reconhecida com o conjunto de todos os
usuários cadastrados no sistema, identificando-a [20].
Um sistema de identificação pode ser classificado como
closed-set ou open-set. Quando se tem certeza de que o
usuário está entre o grupo de pessoas autorizadas, realiza-se
uma identificação do tipo closed-set, identificando-o pela
pessoa com maior similaridade. A segunda opção é um
sistema open-set, no qual existe a possibilidade de afirmar que
o usuário não está autorizado a utilizar o sistema caso não
exista nenhum indivíduo na base de dados com características
vocais similares às suas.
Por fim, é possível identificar um sistema de
NEIVA et al.: CLOSED-SET SPEAKER IDENTIFICATION
1129
reconhecimento como sendo dependente ou independente do
texto [21]. A diferença entre os dois reside no fato de que,
enquanto no primeiro é necessário que se pronuncie uma
palavra específica, no segundo o locutor pode falar o que
desejar. A independência do texto falado é mais difícil de ser
alcançada, mas ao mesmo tempo promove maior flexibilidade
[3]. Esta flexibilidade permite, por exemplo, a verificação do
locutor enquanto ele realiza outras interações vocais. A Fig. 1
representa a organização geral de um sistema de
reconhecimento.
Figura 1. Organização de um sistema de reconhecimento de locutor.
O reconhecimento de locutor é um processo de dois
estágios distintos [16]. O primeiro estágio é o cadastro do
usuário e treinamento. Podemos considerar o sinal de áudio
adquirido como uma seqüência de características que
representam o orador. A extração de características é definida
como o processo de reduzir a quantidade de dados utilizados,
preservando as informações contidas na fala do locutor. Após
a coleta das amostras é então realizada a extração das
características relevantes ao sistema, tendo como resultado um
vetor de características. Em seguida, o vetor obtido passa por
um processo de modelagem e, só então, o modelo do usuário é
definido.
O segundo estágio corresponde ao reconhecimento em si. A
extração das características do áudio coletado é realizada para,
então, se efetuar a comparação do vetor de características com
os modelos de usuários cadastrados no sistema. Esta
comparação é baseada nas mesmas técnicas utilizadas na
criação dos modelos de usuários e está intimamente
relacionada ao tipo de reconhecimento desejado: verificação
ou identificação.
O sinal de voz pode ser representado como um sinal-fonte
de rápida variação em convolução com uma resposta de
impulso de curta variação. Quando estes componentes estão
combinados através de operações não-lineares, como a
convolução, sua separação torna-se um problema de difícil
resolução, mas quando eles estão combinados linearmente,
diversas técnicas de separação podem ser utilizadas.
Cepstrum é a representação do sinal quando ocorre a soma
destes dois componentes. A técnica é bastante eficiente, apesar
de se mostrar sensível a ruídos do ambiente. O Cepstrum de
um sinal é dado pela equação 1.
(1)
Para comparação entre a amostra de autenticação e as
amostras do banco de dados, a literatura relaciona algumas das
técnicas mais utilizadas. Template Matching, Nearest
Neighbor, Redes Neurais [19], [4] e Hidden Markov Models
[21].
Em [16] uma técnica denominada de Vector Quantization é
utilizada em um protótipo de reconhecimento de locutor. Ela
modela características específicas do orador e funciona através
do mapeamento de um conjunto de vetores de características
de cada usuário em um pequeno número de regiões finitas
dentro do espaço vetorial por eles criado. Este processo
encontrará aglomerados de vetores com valores similares, cada
um com um valor central associado, o centroid. Os centros são
utilizados na criação de um codebook, ou livro de códigos, o
qual define o espaço vetorial representado pelo conjunto de
vetores. Para cada usuário existe um codebook particular
formado pelas características de suas amostras de voz.
Existem dois fatores que afetam diretamente a precisão dos
resultados quando se aplica a técnica de Vector Quantization:
o tamanho do codebook (normalmente com 64, 128 ou 256
vetores) e o algoritmo utilizado para sua geração. Geralmente,
quanto maior o tamanho do codebook, menores as taxas de
erro. Entretanto, um codebook com um número muito grande
de vetores pode se tornar específico demais, correspondendo
apenas àquelas amostras de treinamento já definidas, em
detrimento da capacidade de generalização das características
de voz que defininem o usuário.
Um dos algoritmos mais utilizados em Vector Quantization
é o algoritmo de Lloyd [16], cujo funcionamento ocorre de
forma simples e eficaz. A Fig. 2 ilustra sua forma de criar os
codebooks.
Figura 2. Algoritmo de Lloyd.
O primeiro passo é a inicialização do codebook, que
corresponde a uma seleção aleatória de algumas janelas do
vetor de características, os centroids. Em seguida, todas as
amostras são codificadas, ou seja, cada janela é comparada a
este codebook inicial, calculando sua distância até cada
centroid. A janela é então associada ao centroid menos
distante.
O segundo passo corresponde à atualização do codebook.
Cada centroid do novo codebook corresponde à média
aritmética dos valores de todas as janelas associadas a este.
Para determinar se o codebook criado é uma boa representação
das amostras de treinamento, calcula-se a distorção entre cada
janela do vetor de características e o centroid ao qual ela mais
1130
IEEE LATIN AMERICA TRANSACTIONS, VOL. 12, NO. 6, SEPTEMBER 2014
se aproxima. Para se encontrar o valor da distorção, foi
utilizado o cálculo da Distância Euclidiana entre as amostras e
o codebook. Ela é utilizada para determinar se a criação do
codebook está completa ou não.
Quando o critério de parada é alcançado, o codebook é
gravado na base de dados, finalizando o treinamento do
usuário em questão. Alguns diferentes critérios de parada
podem ser considerados para o algoritmo de Lloyd: (1)
nenhuma mudança entre a distorção da iteração anterior e a
atual, (2) número máximo de iterações excedido e (3) variação
da distorção menor que um valor definido pela equação 2.
(2)
Este algoritmo possui uma desvantagem. Algumas vezes a
distorção pode convergir para um mínimo local próximo ao
codebook inicial ao invés de um mínimo global. Por isso, as
decisões iniciais podem influenciar o resultado final.
Para realizar experimentos e avaliações nos sistemas de
reconhecimento de locutor utilizam-se bases de vozes, ou
speech corpora. O desenvolvedor do sistema pode utilizar as
bases existentes disponíveis à comunidade acadêmica ou criar
a sua própria. Existem quatro fatores que influenciam a
adequação dessas bases aos sistemas de reconhecimento de
locutor: (1) quantidade e diversidade de pessoas, (2) intervalo
de tempo entre as sessões, (3) tipo de fala e (4) variações de
microfone e ambiente de gravação.
IV. IDENTIFICAÇÃO DE LOCUTOR EM
GATEWAYS DE
parâmetro rec da tag record não existe na definição padrão da
linguagem VXML. Foi necessário modificar a gramática da
linguagem para que o parse aceitasse esta nova tag para então
o gateway realizar a comunicação com o reconhecedor de
locutor. O parser do JVoiceXML também precisou sofrer
alterações para que a tag modificada pudesse ser interpretada
apropriadamente.
Figura 3. Trecho de um arquivo VoiceXML contendo o novo parâmetro rec
paraa tag record.
O primeiro passo foi adicionar ao parser a nova tag. Para
isso, modificamos o classe Record que implementa a tag
record do VXML. A Fig. 4 mostra os principais métodos e
variáveis adicionados.
VOZ
Como dito anteriormente, o módulo de reconhecedor de
locutor não faz parte dos principais componentes de um
gateway de voz e, até então, poucas iniciativas foram
apresentadas como solução para tal problema. Sendo assim,
esse trabalho apresenta a integração do identificador de locutor
com o BUG, implementação do gateway de voz baseada no
interpretador JVoiceXML [11]. A grande vantagem de se
utilizar o JVoiceXML é a possibilidade de integrar diferentes
bibliotecas de terceiros ao interpretador. A implementação
disponível já vem integrada com o sintetizador FreeTTS [12] e
o reconhecedor de voz Sphinx-4 [13]. O reconhecedor de
locutor foi integrado ao gateway da mesma maneira como o
sintetizador, por exemplo.
A integração do gateway foi possível através da adição de
um novo parâmetro à tag record da linguagem VoiceXML,
que é responsável pela gravação de uma entrada de voz do
usuário. Quando o parâmetro criado possui o valor true, o
gateway faz com que aquela entrada de voz seja processada
pelo módulo de identificação de locutor, caso contrário, este
processamento não é feito, ocorrendo apenas a gravação de um
arquivo no formato wav. O trecho de código VoiceXML da
Fig. 3 ilustra a tag modificada coma adição do parâmetro rec
(linha 7).
Os arquivos gerados com a criação da nova tag são
armazenados e processados pelo reconhecedor de locutor.
Uma vez processada o sistema retorna sobre a identificação do
usuário e a mesma pode ser processada dentro do arquivo
VXML de acordo com a aplicação.
Desta forma, o maior custo dentro do processo de
integração foi a criação da nova tag na linguagem. O
Figura 4. Trechos da classe Record.java modificados para inclusão do
novoparâmetro rec para a tag record.
O passo seguinte foi alterar o interpretador JVoiceXML
para chamar os métodos do identificador de locutor. A classe
RecordingEventStrategy implementa a chamada de evento
para a tag record. A Fig. 5 mostra os princiapis métodos da
classe. O primeiro passo é criar uma instância do identificador
(linha 3) e verificar o valor do parâmetro rec (linha 8). Se true,
a classe chama o método de autenticação do identificador
(linha 9).
O módulo de identificação de locutor desenvolvido e
integrado ao gateway de Voz é um sistema de identificação
closed-set dependente do texto. Ou seja, o usuário do sistema
necessariamente será identificado como um daqueles
previamente cadastrados que apresentem a menor
similaridade.
Para realizar a gravação das amostras foi implementado um
módulo que utiliza a API Java Sound, ou JSAPI. Este módulo
grava arquivos no formato wav e os transforma em um array
de bytes a ser manipulado nas etapas seguintes.
NEIVA et al.: CLOSED-SET SPEAKER IDENTIFICATION
1131
amostra em janelas, que se sobrepõem em algumas partes. Em
seguida, aplica-se a janela de Hamming em cada janela e então
o Cepstrum, obtendo como resultado uma matriz contendo as
cinco amostras de treinamento pré-processadas. Por fim,
através do método denominado Vector Quantization, utiliza-se
o algoritmo de Lloyd para criar um modelo do usuário e,
então, gravá-lo na base de dados, finalizando a fase de
treinamento do sistema. A Fig. 7 mostra um digrama do
processo de treinamento.
Figura 5. Trechos da classe RecordingEventStrategy.java modificados para
achamada do identificador de locutor.
A extração de características foi realizada com o Cepstrum.
Na fase de criação dos modelos de usuários e de
comparação de padrões foi utilizado o método Vector
Quantization, que tem como resultado a criação de um
codebook, ou livro de códigos. Este codebook representa um
determinado usuário e através dele é possível calcular a
distorção entre uma amostra de teste e as amostras de
treinamento. A Fig. 6 representa a metodologia utilizada para
a criação do sistema.
Figura 7. Treinamento.
A próxima fase, a autenticação do usuário (Fig. 8), ocorre
de forma similar ao treinamento. Primeiro divide-se a amostra
em frames e aplica-se a janela de Hamming para, então, extrair
suas características através do Cepstrum. Este vetor de
características será comparado a todos os codebooks existentes
na base, tendo suas distorções calculadas utilizando a mesma
equação do algoritmo de Lloyd. Por fim, o sistema compara as
distorções obtidas, identificando o dono da amostra como o
usuário cujo codebook resultou na menor distorção.
Figura 8. Autenticação.
Figura 6. Metodologia utilizada para confecção do módulo de identificação.
Duas bases de vozes foram criadas, de forma que para cada
usuário cadastrado foram gravadas cinco amostras de
treinamento e cinco de teste utilizando um microfone comum.
A primeira base conta com 22 pessoas, sendo 18 do sexo
masculino e 4 do sexo feminino. Foi orientado que cada uma
delas pronunciasse seu próprio nome. Numa segunda base, 12
pessoas (8 do sexo masculino e 4 do sexo feminino) foram
orientadas a pronunciar o termo "Ciência da Computação".
Após a aquisição das amostras o sistema foi treinado para
reconhecimento dos usuários. O primeiro passo é dividir cada
V. EXPERIMENTOS E RESULTADOS
Apesar de ser desenvolvido para utilização em um ambiente
vocal sem recursos visuais, o sistema de reconhecimento de
locutor implementado possui uma interface visual composta
de duas partes: a primeira permite a gravação das amostras e a
segunda torna possível a realização de diversos testes de
autenticação. Esta interface foi criada para otimizar o tempo
de gravação e testes, pois permite uma melhor análise dos
resultados, além de facilitar o cadastro de novos usuários.
Diversos testes foram realizados utilizando esta janela de
1132
autenticação, divididos em duas fases. Na primeira, utilizou-se
um valor fixo para o tamanho do codebook, 64, variando os
tamanhos das janelas e a sobreposição entre elas,
windowLength e windowSlide, respectivamente. Na segunda
fase, os valores de windowLength e windowSlide com
melhores resultados foram selecionados, enquanto se variou o
tamanho do codebook entre 64 e 256 vetores.
Como existem duas bases de vozes, esses experimentos
foram realizados duas vezes, uma para cada base. Os
resultados para a base contendo os 12 usuários pronunciando
as palavras "Ciência da Computação" estão listados na tabela
I, lembrando que esta base possui um total de 60 amostras de
teste, cinco de cada usuário.
A última coluna indica a porcentagem de acertos em relação
à quantidade total de amostras testadas. Quanto maior a
porcentagem, melhor o desempenho da configuração utilizada.
Observou-se que, quanto maior o WindowSlide, ou seja,
quanto menor a sobreposição, maior a precisão do sistema.
Observou-se também que, ao aumentar o tamanho da janela e
o windowSlide proporcionalmente, a quantidade de acertos
permaneceu constante, porém o desempenho do sistema
melhorou em relação ao tempo de processamento. Essa
melhora se deve à menor quantidade de janelas obtidas na
divisão da amostra e, consequentemente, menos comparações
são necessárias, criando os codebooks de forma muito mais
rápida.
Os próximos valores são os resultados da segunda fase de
testes. Os valores com melhores desempenhos na fase anterior
foram utilizados com o objetivo de verificar se a variação no
tamanho do codebook realmente influencia a precisão do
sistema.
Observando os resultados obtidos, não foi encontrada uma
diferença significativa na precisão do sistema ao se aumentar o
tamanho do codebook de 128 (Tabela II) para 256 (Tabela III),
mas durante a realização dos testes foi possível verificar um
aumento significante no tempo de autenticação à medida que o
tamanho do codebook aumentou. Isto se deve à maior
quantidade de comparações necessárias para se definir o
centroid ao qual a janela pertence. Dessa forma, optou-se por
utilizar o codebook de tamanho intermediário, 128, que é um
meio termo entre a precisão e o tempo de processamento.
De acordo com os valores encontrados, optou-se por utilizar
os valores 64 e 54 para WindowLength e WindowSlide,
respectivamente.
Os resultados dos testes realizados com a segunda base de
vozes não foram tão satisfatórios quanto os da primeira. A
base a ser testada é composta por 110 amostras pertencentes a
22 pessoas, cada uma falando seu próprio nome 5 vezes. Na
tabela IV estão os dados referentes à primeira fase de testes.
É possível observar que, no melhor caso, apenas 54,5% das
amostras foram reconhecidas corretamente.
A segunda fase de testes utilizou codebook de tamanho 256
e 128 para verificar a influência da quantidade de centroids na
precisão dos resultados. Os testes realizados nesta etapa
tiveram resultados um pouco melhores, porém ainda não
foram satisfatórios, como indica a tabela V.
Diversos fatores contribuíram para a diferença entre os
resultados dos testes das duas bases de vozes. O primeiro está
relacionado ao conteúdo das amostras, e não do ambiente.
Ambas foram gravadas em um mesmo local, contendo um
IEEE LATIN AMERICA TRANSACTIONS, VOL. 12, NO. 6, SEPTEMBER 2014
pouco de ruído, além de possuírem amostras de pessoas na
mesma faixa etária, na maioria homens.
Elas diferem na frase falada pelos usuários. Como na
primeira base todas as pessoas pronunciaram as mesmas
palavras, o sistema conseguiu identificar mais facilmente a
diferença entre as vozes de cada um. Na segunda amostra cada
usuário pronuncia um nome diferente, tornando menos óbvia a
diferença entre as características específicas de cada usuário.
Além disso, a segunda base de dados possui quase o dobro
de usuários e, por ser utilizada em um sistema de identificação
que compara os codebooks de todas as pessoas cadastradas,
quanto maior a quantidade de usuários, maior a complexidade
do sistema e menor a sua precisão.
O gráfico da Fig. 9 mostra a relação entre o tamanho do
codebook e a porcentagem de acertos.
NEIVA et al.: CLOSED-SET SPEAKER IDENTIFICATION
Figura 9. Tamanho do Codebook X porcentagem de acertos.
VI. CONCLUSÃO
Neste artigo foi descrito a construção de um sistema de
identificação de locutor closed-set dependente do texto,
integrado a um gateway de voz. Este sistema utiliza o
Cepstrum como método de extração de características e o
Vector Quantization com o algoritmo de Lloyd para a criação
dos modelos de usuários, ou codebooks.
Foram realizados alguns testes com a intenção de encontrar
valores que melhorem tanto a porcentagem de autenticações
corretas quanto a velocidade de processamento do sistema. O
resultado obtido foi bastante satisfatório, identificando a
pessoa corretamente em quase 89% dos testes realizados com
janelas contendo 64 valores de amostragem do sinal, sendo
que os dez últimos valores de uma janela são os dez primeiros
da janela seguinte. WindowSlide é a quantidade de valores
percorridos para se começar a nova janela e o melhor tamanho
obtido foi 54, o que deixa uma sobreposição de 10 valores de
amostragem entre cada janela.
A integração do módulo de reconhecimento com o gateway
de voz desenvolvido foi realizada com sucesso através de uma
modificação na tag record da linguagem VoiceXML utilizada
pelo reconhecedor.
Possibildades de trabalhos futuros incluem a implementação
de um módulo de verificação de locutor.
AGRADECIMENTOS
Os autores agradecem ao auxílio financeiro concedido pelo
CNPq [Universal 14/2012, Processo 483437/2012-3].
REFERÊNCIAS
[1] Jorge A. Quiané Ruiz and Jorge R. Manjarrez Sánchez, “Design of a
voicexml gateway,” in ENC ’03: Proceedings of the 4th Mexican
International Conference on Computer Science, Washington, DC, USA,
1133
2003, p. 49, IEEE Computer Society.
[2] W3C, “Voice Extensible Markup Language (VoiceXML) Version 2.0,”
2004.
[3] D. A. Reynolds, “An overview of automatic speaker recognition
technology,” in ICASSP ’02: Proc of the IEEE International
Conference on Acoustics, Speech, and Signal Processing, USA, 2002,
pp. IV–4072– IV–4075 vol.4, IEEE Computer Society.
[4] Andre Caricatti and LiWeigang, “Reconhecimento de locutores em
língua portuguesa com modelos de redes neurais e gaussianos,” in V
Congresso Brasileiro de Redes Neurais, Rio de Janeiro, Brasil, 2001,
pp. 25–30.
[5] J. P. Campbell, “Speaker recognition: a tutorial,” Proc of the IEEE, vol.
85, no. 9, pp. 1437–1462, 1997.
[6] W3C, “Voice Extensible Markup Language (VoiceXML) 3.0,” 2010.
[7] Recognition Technologies Inc., “RecoMadeEasy Speaker Recognition
(SPKR) - SIV System,” 2010.
[8] Nuance Café, “BeVocal Café Nuance,” 2007.
[9] Nuance Communications, “NUANCE,” 2002.
[10] Vocalocity, “Open VXI - Open Source Voice Interpreter,” 2005.
[11] Dirk Schnelle, “JVoiceXML -Open Source VoiceXML Interpreter,”
2006.
[12] Willie Walker, Paul Lamere, and Philip Kwok, “FreeTTS 1.2 - A speech
synthesizer written entirely in the Java programming language,” 2001.
[13] CMU, “Sphinx-4 - A speech recognizer written entirely in the Java
programming language,” 1999.
[14] Tellme Networks, “Tellme Studio,” 2006.
[15] Voxeo Corporation, “VOXEO - IVR plataform / IVR hosting / IVR
development,” 2000.
[16] David M. G. Watts, “Speaker identification - prototype development and
performance,” 2006.
[17] Quin Jin, Stan Jou, and Tanja Schultz, “Whispering speaker
identification,” Carnegie Mellon University, EUA, 2007.
[18] Peter Day and Asoke Nandi, “Robust text-independent speaker
verification using genetic programming,” in IEEE Transactions on
Audio, Speech and Language processing, 2007.
[19] Urs Niesen and Beat Pfiester, “Speaker verification by means of anns,”
in Proceedings of ESANN, Brugges, Bélgica, 2004.
[20] Jose B. Sanchez, “Speaker identification based on an integrated system
combining cepstral feature extraction and vector quantization,” M.S.
thesis, Tese (Mestrado em Ciência daComputação). Florida State
University, Estados Unidos, 2005.
[21] Svetoslav Marinov, “Text dependent and text independent speaker
verification systems: Technology and applications.,” 2003.
Juliana Ferreira Neiva nasceu em Brasília/DF, Brasil, em 1986.
Graduou-se em Ciência da Computação pela UFS em 2009. De
outubro de 2008 até o presente momento, atua como Analista de
Sistemas do Tribunal de Justiça do Estado de Sergipe. Na
graduação trabalhou na área de Computação Inteligente
participando do Grupo de Pesquisa em Inteligência e Imagens
(Pii/CNPq).
Adolfo Pinto Guimarães nasceu em Aracaju/SE, Brasil, em
1984. Graduou-se em Ciência da Computação pela Universidade
Federal de Sergipe em 2009. Obteve o título de Mestre em
Ciência da Computação pela UFMG em 2013, atuando na área
de Recuperação de Informação. Atualmente, é professor na UFS
e pesquisador colaborador no Grupo de Pesquisa em Inteligência
e Imagens (Pii/CNPq).
Hendrik Teixeira Macedo nasceu em Aracaju/SE, Brasil, em
1977. Graduou-se em Ciência da Computação pela UFS em
1998. Obteve o título de Mestre em Ciência da Computação pela
UFPE em 2001 e o título de Doutor em Ciência da Computação
também pela UFPE em 2006,, tendo realizado estágio de
doutoramento “sandwich” pela Universidade de Paris VI no ano
de 2002. De julho de 2006 até o presente momento, atua como
professor efetivo Adjunto do DCOMP/UFS e como membro permanente dos
Programas de Pós-Graduação em Ciência da Computação (PROCC/UFS) e
Pós-Graduação em Engenharia Elétrica (PROEE/UFS). Como líder do Grupo
de Pesquisa em Inteligência e Imagens (Pii/CNPqs), atua principalmente na
investigação sobre interfaces naturais vocais e personalizáveis.
Download

PDF Full-Text - IEEE Entity Web Hosting