C. Janela de Verificação.
A janela de comando está situada no lado superior esquerdo e possuí vários botões. O nome de cada botão descreve a sua função. A janela gráfica situada no lado direito da tela é reservada para a visualização dos gráficos dos sinais amostrados, gravados ou reconhecidos. No lado inferior esquerdo da tela está a janela de verificação, destinada à visualização do sinal amostrado para conferência visual do usuário.
Figura 9.1: Tela do programa Parlato.
A figura 9.2 mostra a janela de comando do sistema Parlato. Esta janela possui os seguintes botões de comando:
- [AQUISIÇÃO DO SINAL]: executa o subprograma AQS que é responsável pela aquisição do sinal de voz, cálculo da FFT e a visualização do sinal.
- [ESPECTROGRAMA]: mostra na tela o espectrograma do sinal, ou seja, mostra todas as freqüências existentes nos sinais original e filtrado.
- [WAVELET DO SINAL]: apresenta na tela os gráficos das wavelets do sinal.
- [OUVIR SOM]: através deste botão o usuário pode ouvir o som amostrado,
verificar se o sinal foi adquirido corretamente e se o mesmo serve para ser gravado como padrão.
- [INICIA >>]: Este botão de comando é responsável pelo inicio do reconhecimento de voz.
Figura 9.2: Janela de Comando do sistema Parlato
Pode-se ver ainda na janela de comando um quadro com o título CONTROLE
DAS AMOSTRAS. Esse quadro será mostrado posteriormente no item referente à
gravação de amostras.
No lado superior direito da janela de comando existe um espaço com o título
RESULTADOS. Esse espaço é reservado para a apresentação dos resultados obtidos no
A figura 9.3 mostra a Janela de Verificação. Nesta janela pode-se visualizar o
sinal amostrado, a FFT e a densidade espectral de potência deste sinal, bastando apenas
clicar no botão desejado. Existe ainda uma opção com marcador “ Grade” que serve para acionar ou desligar a impressão das linhas de grade no sinal.
A Janela de Verificação mostra sempre o último sinal adquirido pela função AQS.
Figura 9.3: Janela de Verificação do sinal amostrado do sistema “Parlato”
A Janela Gráfica será descrita no próximo item, referente à aquisição de um sinal de som.
$48,6,d®2'(806,1$/'(620
A aquisição do sinal de voz, é a primeira etapa do sistema de reconhecimento de voz. Para realizar a aquisição do sinal de voz precisa-se de um bom microfone, de uma placa de som e do software adequado. Todos estes fatores devem ser considerados pois influem diretamente na qualidade do som adquirido e conseqüentemente nos resultados obtidos.
20LFURIRQH$GHTXDGRj$TXLVLomRGH6RP
Um dos melhores modos para aumentar precisão do reconhecimento da fala é ter o microfone certo. Diferentes tipos de microfones e suas características são apresentados abaixo:
- Microfone embutido no computador ou no monitor: Microfones embutidos
em computadores ou nos monitores de um computador trabalham bem em funções de comando e controle no reconhecimento de fala, mas não trabalham bem para o ditado, porque ficam longe da boca do locutor e detectam muito barulho do ambiente.
- Microfone de teclado: Microfones localizados nos teclados não trabalham bem
para reconhecimento de fala porque também ficam longe do locutor e detectam muito barulho do ambiente, além de não estarem direcionados ao locutor.
- Microfone “Clip-on”: São microfones colocados sobre a camisa (roupa) do locutor. Apesar de estar localizado perto da boca do locutor este tipo de microfone não tem um bom desempenho, pois não está direcionado ao locutor, adquirindo assim muito barulho do ambiente.
- Microfone “Close-Talk”: Este tipo de microfone geralmente está associado a um fone de ouvido. O fone de ouvido é colocado sobre a cabeça e o microfone é aproximado bem perto da boca do locutor. Estes microfones são os melhores para o reconhecimento de fala e ditado porque eles são unidirecionais, captando diretamente o som da fala e, conseqüentemente, pouco barulho de fundo (ambiente). Infelizmente, o cabo deste tipo de microfone às vezes é um pouco curto.
- Microfone de Mesa: Microfones de mesa normalmente descansam em um posto de microfone. Para funcionar bem deve ser apontado para o locutor e ficar a aproximadamente 15cm de sua boca. São muito sensíveis a ambientes barulhentos.
- Microfone de “Orelha”: São parecidos com o “Close-talk”, pois também
possuem fone de ouvido (apenas um). Possui uma haste em forma de um gancho, e esta haste descansa sobre a orelha do locutor. Estes microfones trabalham bem para reconhecimento de fala e ditado. Infelizmente, o cabo deste tipo de microfone também às vezes é um pouco curto.
- Microfones Segurados na Mão: Apesar de detectar pouco barulho externo, os microfones de mão possuem o inconveniente de serem segurados pelo locutor. Eles devem ser segurados a aproximadamente 10 cm longe da boca do usuário. Manter esta distância torna-se cansativo, o que dificulta o uso deste tipo de microfone.
Portanto, os microfones mais adequados ao reconhecimento de voz são os “Close-
Talk” e os de “Orelha”, pois permitem que o microfone fique o mais próximo da boca do
locutor. Estes microfones são unidirecionais e, conseqüentemente, captam pouco barulho do ambiente.
O microfone está para o reconhecimento de voz como um termopar está para um sistema de controle de temperatura, ou seja, a escolha do microfone correto é decisiva para os próximos passos do sistema de reconhecimento de voz.
Para desenvolver o sistema Parlato foram testados vários microfones e finalmente foi optado pelo uso do “Close-Talk”, pois o mesmo possui as qualidades necessárias para um bom desempenho. O microfone utilizado foi da marca Clone , com fone de ouvido,
com as seguintes características:
Fone de Ouvido: - Impedância 32 Ohms
- Freqüência de resposta: 20 – 20.000 Hz - Sensibilidade: 105 dB ± 4 dB Microfone: - Omni-Direcional - Freqüência de resposta: 20 – 16.000 Hz $3ODFDGH6RPXWLOL]DGD
Como o sistema Parlato foi desenvolvido no MATLAB, a escolha da placa de
som adequada levou em conta a compatibilidade com este software. A caixa de ferramentas “Data Aquisition Toolbox” do MATLAB possui ferramentas para aquisição
de som de placas compatíveis com a SoundBlaster.
Todo o sistema foi desenvolvido utilizando uma placa de som “Plug and Play” do tipo DJ(ππππ) 4100 fabricado pela Tsunami com as seguintes características:
Placa de Som: - Entrada para Microfone 3,5mm - Saída para fone de ouvido
- Saída paralela para caixas de som do computador - 16 bits por canal
- Impedância de 32 Ohms.
- Drive (software de operação): C-Media CM8738 - Compatível com o sistema da SoundBlaster.
O MATLAB provê todas as informações sobre a placa de som instalada no
computador através da função “daqhwinfo”. Ao executar esta função na janela de comando do Matlab tem-se:
Das características retornadas na janela de comando vale salientar: - Resolução da placa de som = 16 Bits
- Faixa de tensão do sinal de entrada = [-1 a 1] Volt
- Máxima taxa de amostragem = 44100 Hz
- Mínima taxa de amostragem = 8000 Hz
- Canais disponíveis = 2 (stéreo)
$$TXLVLomRGR6RPQR0DWODE
Para adquirir uma amostra de som no Matlab deve-se seguir os passos:
a) Declarar uma variável que esteja ligada ao adaptador da placa de som. Isto é
feito através da função “analoginput”:
Ai = analoginput ('winsound'); Ai= variável
>> daqhwinfo
>> ans =
% respostas fornecidas pela função daqhwinfo % (propriedades da aquisição de som)
AdaptorName: 'winsound' Bits: 16
DeviceName: 'C-Media Audio Record (D000)' InputRanges: [-1 1] MaxSampleRate: 44100 MinSampleRate: 8000 NativeDataType: 'int16' SampleType: 'SimultaneousSample' SingleEndedIDs: [1 2] SubsystemType: 'AnalogInput' TotalChannels: 2
VendorDriverDescription: 'Windows Multimedia Driver'
A variável “Ai” (Analog input) possui todas as características de ligação entre o Matlab e a placa de som. A ligação é feita através do objeto “winsound”.
b) Definir as propriedades de pertinentes ao adaptador conforme abaixo:
Existem várias maneiras de se fazer a aquisição de um sinal de som. Cada maneira é escolhida definindo as propriedades do adaptador “winsound”. Na configuração acima foi definido que:
- A amostragem será feita em apenas um canal (utiliza menos memória).
- A taxa de amostragem será de 22050 (metade da capacidade máxima da placa, pois utiliza menos memória do que em 44100 Hz).
- A amostragem terá a duração de 0,7 segundos. (tempo suficiente para adquirir amostra de palavras com até três sílabas).
- O disparo do início da aquisição será controlado pelo software (não automática).
- A condição de disparo da aquisição é sinal de voz > 0,1 volts. Isto significa que pequenos ruídos externos não fazem disparar a aquisição de dados.
Uma vez definidas as propriedades, executa-se a função “getdata(Ai)”, a qual será responsável pela aquisição do sinal de som.
Os dados do som amostrados são armazenados na variável “dados” e o tempo de aquisição, na variável “tempo”.
>> canal= addchannel(Ai,1:1); % Adiciona um canal da placa de som “ai”.
>> set(Ai,'SampleRate',22050); % Taxa de amostragem em 22050 Hz
>> taxa_atual = get(Ai,'SampleRate'); % taxa_atual = o valor da taxa de amostragem
>> set(Ai,'SamplesPerTrigger',taxa_atual*0,7); % define duração da amostragem em 0,7 segundos >> set(Ai,'TriggerChannel',canal) % define o canal para o disparo da aquisicao >> set(Ai,'TriggerType','Software') % define o controle do disparo através do software >> set(Ai,'TriggerCondition','Rising') % define disparo da aquis. com voltagem >0 Volts
>> set(Ai,'TriggerConditionValue',0.1) % define voltagem >0.1Volts para iniciar aquisição
O Subprograma desenvolvido “AQ_S”, faz todo este procedimento de aquisição dos dados do som e ainda utiliza estes dados para calcular a FFT do sinal.
Por fim este subprograma mostra na tela o gráfico do sinal amostrado, a FFT do sinal e a densidade espectral do sinal em dB.
A figura 9.4 mostra a parte direita da tela do sistema Parlato (Janela Gráfica) com os gráficos do sinal de som, da FFT e da densidade espectral da palavra “Pare”.
Figura 9.4: Gráficos do sinal de som, FFT e densidade espectral em dB da palavra “Pare” gerados pelo sistema Parlato, através da sub-função AQ_S
$),/75$*(0'26,1$/120$7/$%
O próximo passo após a aquisição do sinal é a filtragem. Como um sinal de voz compreende a faixa frequências de 100 a 6.000 Hz, deve-se filtrar todas as freqüências acima deste patamar. A função “filter” executa o processo de filtragem no MATLAB.
No entanto, esta função precisa de dados de entrada como o tipo de filtro usado, frequência de corte, freqüência de aquisição, e a ordem do filtro.
3URSULHGDGHVGRILOWURXWLOL]DGR
7LSRV GH )LOWURPara esta filtragem foi utilizado um filtro FIR (mais adequado ao reconhecimento de voz, como visto no capítulo 6), passa baixa, tipo Butterworth, cuja resposta em freqüência é mostrada na figura 9.5.
2UGHPGR)LOWURA função “buttord” calcula a ordem do filtro a ser usado. Para tanto deve-se fornecer a freqüência de corte do filtro (Wp), o ondulação(rp) em dB, a atenuação em dB (rs) da freqüência acima do corte desejada (Ws).
Neste caso especifico a freqüência de corte do filtro é 6.000 Hz com atenuação de 60 dB em 8.000 Hz e a ondulação de 3 dB. A freqüência de aquisição do sinal é 22.050 Hz. Assim a freqüência de Nyquist fica em 11.025 Hz, praticamente o dobro da maior frequência do sinal de voz, que gira em torno de 6.000 Hz .
O filtro tipo Butterworth, mencionado anteriormente é implementado pela função
“butter”, com os devidos coeficientes calculados e fornecidos pela função “buttord”.
Após a definição do tipo de filtro e suas características a filtragem é feita através da função “filter”. Os passos para a execução destas funções são mostrados no quadro abaixo. 2&É/&8/2'$))7120$7/$%
Para se obter o espectro de freqüência do sinal amostrado optou-se pela utilização direta da FFT por dois motivos:
- A simplicidade no uso e a rapidez da resposta.
Para calcular a FFT de um sinal no MATLAB utiliza-se a função “fft”, a qual
calcula os coeficientes de amplitude da freqüência do sinal desejado (discreto). No quadro abaixo vê-se a função sendo usada para calcular o espectro de freqüência do sinal de voz previamente filtrado.
% dados iniciais:
>> Wp= 6000 Hz; % frequência de corte
>> Ws= 8000 Hz; % frequência onde a atenuação é de 60dB
>> rp =3 dB; % máximo ripple
>> rs=60 dB; % atenuação na frequência de 8000 Hz
% calcula a ordem e os coeficientes do filtro
>> [n,Wn] = buttord(Wp,Ws,rp,rs) % Calcula a ordem do filtro % valores calculados:
>> n = 11; % n= ordem do filtro
>> Wn = 0.5472; % Wn= Coef. Referente a freq. de corte % Implementação do filtro tipo Butterworth:
[b,a] = butter(n,Wn); % b, a = Coeficientes do filtro.
% Sinal de voz armazenado na variável = dados % Filtragem do sinal de voz
Os valores fornecidos pela função “fft” geralmente são complexos e dispostos de forma seqüencial. Para uma melhor apresentação gráfica deste sinal utiliza-se o valor absoluto dos coeficientes e a visualização do gráfico é feita com o sinal centralizado. Na figura 9.4 o segundo quadro mostra a FFT do sinal de voz .
*5$9$d®2'(80$$02675$'(620
Uma vez definida a amostra do sinal que se deseja gravar como padrão, basta apenas gravar esta amostra em arquivo. O sistema de banco de dados escolhido foi o de arquivos binários pois este tipo de arquivo ocupa menos espaço na memória.
Provavelmente o ponto mais difícil nesta etapa seja a escolha do sinal a ser gravado como padrão. O sinal padrão será a base para o reconhecimento de um sinal qualquer. Neste caso utilizou-se a escolha visual e auditiva, a qual é feita da seguinte maneira:
- Utilizando o programa Parlato [botão AQUISIÇÃO DE SINAL], pronuncia-se várias vezes a palavra desejada.
- Através da Janela de Visualização (figura 9.3) procura-se visualizar qual é o padrão gráfico da FFT destes sinais.
- O padrão visual que mais se repetir (ou aproximado) é o escolhido.
- Através do botão “OUVIR SOM” da janela de comando do sistema Parlato, pode-se ouvir o som amostrado e verificar se o mesmo possuí uma boa qualidade para gravação.
Portanto, a escolha da amostra padrão a ser gravada é feita pelo usuário visualmente no software, com a ajuda da audição do sinal gravado.
A figura 9.6 mostra a parte da janela de comando do sistema Parlato, onde se vêem os botões para gravação (GRAVAR AMOSTRA) e visualização (LER AMOSTRAS) das amostras gravadas. Além disso existe um botão para apagar a amostra gravada (APAGAR AMOSTRA), pois a escolha da amostra padrão pode não ter sido a melhor. Neste caso o usuário pode apagar esta amostra e gravar uma nova. Pode-se ainda apagar todo o banco de dados de amostras com o botão (APAGAR TODAS AMOSTRAS).
% O sinal filtrado está contido na variável “dados_f”
% Calculo da FFT
A opção “ Ver Wavelet da Amostra”, (vista em um pequeno quadrado na tela) é responsável pela visualização da wavelet do sinal.
Figura 9.6: Parte da tela do sistema “Parlato” responsável pela gravação de amostras de som
Ao clicar no botão “GRAVAR AMOSTRA” o sistema pedirá ao usuário que digite o
nome da palavra pronunciada. Este nome será gravado juntamente com o sinal amostrado. O objetivo aqui é ter uma palavra escrita que identifique o sinal gravado. Posteriormente esta palavra será usada no reconhecimento do sinal.
5(&21+(&,0(172'(92=$75$9e6'(3$'5¯(6'(5(&21+(&,0(172
Com as amostras padrões gravadas, o sistema está pronto para efetuar o reconhecimento das palavras pronunciadas.
Para executar o subprograma AQR (subprograma que faz o reconhecimento de voz continuadamente) o usuário deve clicar no botão [ INICIA >>] situado no canto inferior esquerdo da janela de comando.
O subprograma de reconhecimento é programado para fazer a leitura do sinal de voz continuadamente. Para fazer com que o reconhecimento seja interrompido é necessário clicar no botão usado para começar o reconhecimento. O usuário deve notar que este botão agora tem a inscrição de ( >>>[PARE] ) e está com desenho aprofundado conforme figura 9.7. Vale salientar que durante a execução do reconhecimento de voz o sistema impede a execução de qualquer outra tarefa.
A figura 9.7 mostra botão responsável pelo reconhecimento (janela de comando do sistema Parlato) nas suas duas posições: iniciar o reconhecimento e parar o reconhecimento.
Figura 9.7: Botão que executa o Reconhecimento de Voz. à esquerda Inicia, à direita pára o Reconhecimento.
$,GHQWLILFDomRGRVLQDO5HFRQKHFLPHQWR
Ao clicar no botão “iniciar” o usuário executa o subprograma AQR, que por sua vez faz um trabalho semelhante ao subprograma AQS, ou seja, faz a aquisição de um sinal (amostragem), filtra este sinal, calcula a FFT, calcula a Densidade Espectral e mostra os gráficos na tela. Agora o título da janela gráfica do sistema Parlato descreve que o sinal amostrado é destinado ao reconhecimento de voz.
Em seguida o subprograma AQR executa automaticamente um outro subprograma chamado CCorr. O subprograma CCorr calcula os coeficientes de correlação da FFT, da Densidade Espectral e das Wavelets entre o sinal amostrado e os sinais previamente gravados no banco de dados. Além disso este subprograma também decide se o sinal corresponde ou não a alguma amostra gravada.
/LPLWHV([SHULPHQWDLVGD&RUUHODomR
Usada freqüentemente em operações de radar, sonar, comunicação digital, entre outras. A correlação mede a similaridade entre dois sinais [23]. Se os sinais forem totalmente diferentes a correlação retorna 0. Se a correlação retornar um valor igual a 1, então os sinais são idênticos. Portanto a correlação tem como resposta um valor sempre entre 0 e 1.
Experimentalmente (capítulo 10) notou-se que os valores de correlação acima de 0.9 (90%) são valores onde existe uma alta probabilidade do sinal amostrado corresponder ao gravado. Assim, o sistema foi programado para afirmar que a palavra reconhecida é correta se a correlação da FFT for maior que 0.9 (90%).
Também é demonstrado na parte experimental (Capítulo 10) que com valores de correlação abaixo de 0.6 (60%) não se pode afirmar nada sobre o sinal amostrado. Neste
caso o sistema foi programado para dar como resposta a palavra “VAZIO”, ou seja, não houve reconhecimento do sinal.
Para valores de correlação da FFT entre 0.6 e 0.9 o sistema apresenta uma probabilidade média do sinal amostrado corresponder ao gravado (Capítulo 10). Neste caso não se pode afirmar com certeza que o sinal de voz reconhecido é realmente o sinal correto (pronunciado).
Devido ao grau de incerteza obtido nos experimentos práticos (capítulo 10), decidiu-se que somente a correlação da FFT não produz uma certeza de que o reconhecimento esteja correto. Em mais de 64% dos casos de reconhecimento de palavras, a correlação tem um grau de certeza considerado médio, ou seja, o coeficiente de correlação da FFT ficou entre 0.6 e 0.9.
Com a maioria dos casos de reconhecimento sendo efetuados com a correlação entre 0.6 e 0.9 (reconhecimento pela média) foi necessário adicionar um método à FFT para que o sistema pudesse afirmar com certeza (ou com menor erro) que o sinal reconhecido é realmente a palavra pronunciada pelo interlocutor.
A partir deste ponto é que se adiciona ao cálculo da correlação da FFT o cálculo da correlação da densidade Espectral e das Wavelets (método alternativo de obtenção do espectro de frequência de um sinal, como visto no capítulo 7).
$9LVXDOL]DomRGRV5HVXOWDGRVGR5HFRQKHFLPHQWRGH9R]
Após o cálculo das correlações faz-se a decisão se o sinal foi ou não reconhecido e com que grau de certeza. A resposta é apresentada na tela em um espaço da janela de comando do sistema Parlato.
A figura 9.8 mostra a parte da janela de comando onde são apresentados os resultados do reconhecimento de voz.
Neste caso específico o reconhecimento foi efetuado com um valor de correlação médio (entre 0.6 e 0.9).
A palavra reconhecida foi “PARE”, com os coeficientes de correlação da FFT igual 0.74332, da Densidade Espectral de Potência igual a 0.81143 e da Wavelet igual 0.62421.
Figura 9.8: Parte da janela de comando do sistema Parlato que exibe os resultados do Reconhecimento de Voz.
$75$16)250$'$:$9(/(7
A transformada Wavelet é utilizada no sistema Parlato como auxiliar à FFT. No subprograma Ccorr, além da correlação da FFT, é feita também a correlação dos coeficientes da transformada Wavelet entre o sinal amostrado e o gravado. O objetivo é aumentar a confiabilidade da resposta do reconhecimento de voz.
Os coeficientes cA1 , cD1 , cA2 , cD2 , ... cA10 , cD10 , são obtidos através da
função “wavedec” do MATLAB. Esses coeficientes são usados para auxiliar a
identificação dos sinais no reconhecimento de voz através da correlação.
A função wavedec decompõe um sinal de dados (variável = dados_f) utilizando a transformada Wavelet. Para tanto é necessário informar quantos níveis (n) de decomposição serão efetuados e qual o tipo de Wavelet utilizada .
No sistema Parlato foi utilizada a decomposição com 10 níveis e Wavelet tipo “db10”.
$&,21$0(172'((48,3$0(1726(/e75,&26
Após o reconhecimento positivo de uma palavra, ou seja, um comando de voz reconhecido corretamente, chega-se ao objetivo final que é o acionamento de um sistema eletro-eletrônico através deste comando de voz.
% decomposição de um sinal filtrado “dados_f” % pela transformada Wavelet
>> n= 10; % níveis
Para fazer o acionamento o sistema deve:
- Reconhecer corretamente a palavra falada pelo “locutor”.
- Identificar a palavra reconhecida.
- Executar o acionamento do sistema conforme a palavra reconhecida.
Como exemplo de reconhecimento pode-se citar as palavras “ANDE” e “PARE” as quais poderiam ordenar a um robô que ande ou pare, respectivamente.
Para identificar a palavra reconhecida o sistema Parlato utiliza-se da palavra gravada juntamente com o sinal de voz na opção “gravar amostra”, e compara com a palavra reconhecida.
Uma vez reconhecida e identificada a palavra, o sistema deve emitir um comando