SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Reconhecimento de Fala
em Português Brasileiro
Fabiano Weimar dos Santos
xiru@xiru.org
1
quarta-feira, 9 de dezembro de 2009
Eu sou...
• “Apenas um rapaz latino americano...”
• Mestre em Computação pela UFRGS (2009), Bacharel em
Computação pela UCS (2004)
• Envolvido com IA desde 1999
• Consultor e Desenvolvedor Python, Zope e Plone desde
2000
• Core-developer do Plone
• Contribuidor em diversos Plone Products
• Sysadmin do provedor PyTown.com
2
quarta-feira, 9 de dezembro de 2009
Roteiro
• Introdução
• O que é Reconhecimento de Fala
• Como funciona?
• E o idioma Português Brasileiro...
• Dicas: como implantar
• Jabá...
3
quarta-feira, 9 de dezembro de 2009
Introdução
• Nossa interface natural com o mundo é a
fala (não um teclado e mouse)
• A área de reconhecimento de fala é
pesquisada desde a década de 80
• Não é uma tarefa simples!
• Reconhecimento de Fala = Processamento
de Sinais + Fonética + Linguística
Computacional + Inteligência Artificial
4
quarta-feira, 9 de dezembro de 2009
O que é
Reconhecimento de Fala
• Não é “reconhecimento de voz”
• Preocupada em reconhecer o que está
sendo dito
• Reconhecer quem está falando é uma outra
área: reconhecimento de locutor
• Reconhecimento de fala contínua sem
restrições é ainda um problema em aberto
5
quarta-feira, 9 de dezembro de 2009
Síntese x
Reconhecimento
• Todo leigo confunde:
• Síntese: Conversão de Texto para “Fala”
• Reconhecimento: Conversão de Fala para
“Texto”
• Se comparada ao reconhecimento, a síntese
é trivial
6
quarta-feira, 9 de dezembro de 2009
Aplicações
• Para Câmaras: Apoio na Taquigrafia
• Indexação e busca de conteúdo no que é
dito em comissões em plenário,TV e rádio
• URA
7
quarta-feira, 9 de dezembro de 2009
Como Funciona?
Respire fundo...
8
quarta-feira, 9 de dezembro de 2009
Fundamentação Teórica
Consideremos A como a representação de um
evento acústico;W como uma string de n
palavras. Se P(W|A) denota a probabilidade
que as palavras W foram faladas, dado os
eventos acústicos A observados, então o
reconhecedor deve decidir em favor de uma
palavra W que satisfaça
Wmax = argmaxw P(W|A)
9
quarta-feira, 9 de dezembro de 2009
Fundamentação Teórica
Podemos reescrever a equação como
P(W|A) = (P(W)P(A|W)) / P(A), onde P(W) é a
probabilidade da palavra W ser dita,
P(A|W) é a probabilidade que quando a palavra
W é dita o evento acústico A será observado e
P(A) é a probabilidade de A ser observado
10
quarta-feira, 9 de dezembro de 2009
Fundamentação Teórica
Como a maximização é feita com a variável
A fixa (pois o evento acústico observado é
determinado), temos:
Wmax = argmaxw P(W)P(A|W)
Essa fórmula define que processos um
reconhecedor de fala deve solucionar...
11
quarta-feira, 9 de dezembro de 2009
Fundamentação Teórica
• Um Modelo Acústico para calcular P(A|W)
•HMM, Rede Neural, DTW
•Um Modelo de Linguagem para calcular P(W)
•n-gram, CFG
•Busca de hipótese para Wmax
•Não trivial, pois o espaço de busca é muito
grande e tempo real pode ser “desejável”
12
quarta-feira, 9 de dezembro de 2009
Fundamentação Teórica
• Um Modelo Acústico para calcular P(A|W)
•HMM, Rede Neural, DTW
•Um Modelo de Linguagem para calcular P(W)
•n-gram, CFG
•Busca de hipótese para Wmax
•Não trivial, pois o espaço de busca é muito
grande e tempo real pode ser “desejável”
13
Trifones “tied state” com
múltiplas Gaussianas
quarta-feira, 9 de dezembro de 2009
Fundamentação Teórica
• Um Modelo Acústico para calcular P(A|W)
•HMM, Rede Neural, DTW
•Um Modelo de Linguagem para calcular P(W)
•n-gram, CFG
•Busca de hipótese para Wmax
•Não trivial, pois o espaço de busca é muito
grande e tempo real pode ser “desejável”
14
Modelos estatísticos
baseados em 3-gram
suavizados por algorítmos de
desconto e interpolação
quarta-feira, 9 de dezembro de 2009
15
Aúdio
Transcrições
Ortográficas
Modelos Acústicos
Modelos de
Linguagem
Modelo G2P Reconhecedor
quarta-feira, 9 de dezembro de 2009
16
Reconhecedores
• HTK (Hidden Markov Model Toolkit)
• Sphinx (CMU Sphinx Open Source Speech
Recognition Engine)
• Julius (Open-Source LargeVocabulary CSR
Engine Julius)
quarta-feira, 9 de dezembro de 2009
Linguística
Computacional
• Autenticidade
• Adequação
• Representatividade
• Extensão
17
quarta-feira, 9 de dezembro de 2009
Modelos de Linguagem
• Geralmente adota-se modelos estatísticos
de linguagem, baseados em n-grams
• Quanto maior a ordem do n-gram, melhor
é a representação do contexto, mas mais
esparso torna-se o espaço de busca
• Necessidade de grandes quantidades de
dados para a criação de modelos
representativos
18
quarta-feira, 9 de dezembro de 2009
Modelos de Linguagem
• Representatividade limitada pela extensão
• Modelos de linguagem pequenos são eficientes,
mas tem aplicabilidade restrita
• Modelos de linguagem com grande vocabulário
tem maior aplicabilidade, mas são menos
eficientes (alta perplexidade)
• Modelos de linguagem realmente grandes
(teóricos) são eficientes e “irrestritos”, mas são
difíceis de manter (limitações computacionais)
19
quarta-feira, 9 de dezembro de 2009
Modelos Acústicos
• Em condições ideais, usa-se todo o texto
disponível para criar os modelos de linguagem e
os respectivos áudios para criar os modelos
acústicos
• Geralmente isso não é tão simples pois:
• A quantidade de áudio costuma ser limitada
• A aquisição de corpus textuais costuma ser
mais “simples”
20
quarta-feira, 9 de dezembro de 2009
Modelo Acústico - Trifones “tied state”
21
80,0
83,6
87,2
90,8
94,4
98,0
tied tied-iw tied-iw-3gram
89,7
88,3
82,9
Taxa Média de Reconhecimento (%)
85,0
81,1
89,9
86,7
95,7
85,7
quarta-feira, 9 de dezembro de 2009
Múltiplas Misturas Gaussianas
22
88,00
89,00
90,00
91,00
92,00
93,00
94,00
1 2 4 6 8 10 12 14 16 18 20
3-gram 2-gramTaxa Média de Reconhecimento (%)
Número de Misturas Gaussianas
quarta-feira, 9 de dezembro de 2009
GrandeVocabulário - CETEN-Folha
23
65
68
71
74
77
80
2gram-iw-6G 2gram-id-6G 3gram-iw-12G 3gram-id-12G
71,37
71,07
73,00
73,27
Taxa Média de Reconhecimento (%)
75,24
71,33
74,87
71,33
76,95
66,17
76,98
66,27
quarta-feira, 9 de dezembro de 2009
24
Dicas: como implantar
• Organize seus dados
• Armazene o áudio de tudo que é dito
• Armazene as transcrições ortográficas
• Cuidado com soluções prontas
• Sistema de Reconhecimento deve aprender
com erros (e não apenas confiar na
adaptação de locutor)
quarta-feira, 9 de dezembro de 2009
25
Dicas: como implantar
Não seja otimista demais.
Bons resultados requerem muito trabalho (e tempo).
quarta-feira, 9 de dezembro de 2009
Jabá...
26
quarta-feira, 9 de dezembro de 2009
Obrigado!
Fabiano Weimar dos Santos
xiru@xiru.org
27
quarta-feira, 9 de dezembro de 2009

Mais conteúdo relacionado

Mais de Fabiano Weimar

Faça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFaça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFabiano Weimar
 
Adaptando o Plone para plataformas móveis
Adaptando o Plone para plataformas móveisAdaptando o Plone para plataformas móveis
Adaptando o Plone para plataformas móveisFabiano Weimar
 
Plone Yak Shaving and Bikeshedding
Plone Yak Shaving and BikesheddingPlone Yak Shaving and Bikeshedding
Plone Yak Shaving and BikesheddingFabiano Weimar
 
Otimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesOtimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesFabiano Weimar
 
Understanding Plone Security
Understanding Plone SecurityUnderstanding Plone Security
Understanding Plone SecurityFabiano Weimar
 
Tips and Tricks about Plone Development for Mobile Platforms
Tips and Tricks about Plone Development for Mobile PlatformsTips and Tricks about Plone Development for Mobile Platforms
Tips and Tricks about Plone Development for Mobile PlatformsFabiano Weimar
 
Dicas e truques de otimização de websites python
Dicas e truques de otimização de websites pythonDicas e truques de otimização de websites python
Dicas e truques de otimização de websites pythonFabiano Weimar
 
Conhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UECConhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UECFabiano Weimar
 
Sistema de protocolo de documentos - SPDO
Sistema de protocolo de documentos - SPDOSistema de protocolo de documentos - SPDO
Sistema de protocolo de documentos - SPDOFabiano Weimar
 
Plone na plataforma mobile
Plone na plataforma mobilePlone na plataforma mobile
Plone na plataforma mobileFabiano Weimar
 

Mais de Fabiano Weimar (15)

Faça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFaça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.caching
 
Adaptando o Plone para plataformas móveis
Adaptando o Plone para plataformas móveisAdaptando o Plone para plataformas móveis
Adaptando o Plone para plataformas móveis
 
Plone Yak Shaving and Bikeshedding
Plone Yak Shaving and BikesheddingPlone Yak Shaving and Bikeshedding
Plone Yak Shaving and Bikeshedding
 
Otimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websitesOtimização de infra estrutura para hospedagem de websites
Otimização de infra estrutura para hospedagem de websites
 
Understanding Plone Security
Understanding Plone SecurityUnderstanding Plone Security
Understanding Plone Security
 
Tips and Tricks about Plone Development for Mobile Platforms
Tips and Tricks about Plone Development for Mobile PlatformsTips and Tricks about Plone Development for Mobile Platforms
Tips and Tricks about Plone Development for Mobile Platforms
 
Segurança no plone
Segurança no ploneSegurança no plone
Segurança no plone
 
Dicas e truques de otimização de websites python
Dicas e truques de otimização de websites pythonDicas e truques de otimização de websites python
Dicas e truques de otimização de websites python
 
Conhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UECConhecendo o ubuntu enterprise cloud - UEC
Conhecendo o ubuntu enterprise cloud - UEC
 
Sistema de protocolo de documentos - SPDO
Sistema de protocolo de documentos - SPDOSistema de protocolo de documentos - SPDO
Sistema de protocolo de documentos - SPDO
 
Novidades do plone 4
Novidades do plone 4Novidades do plone 4
Novidades do plone 4
 
O novo plone 4
O novo plone 4O novo plone 4
O novo plone 4
 
IPv6
IPv6IPv6
IPv6
 
Plone na nuvem
Plone na nuvemPlone na nuvem
Plone na nuvem
 
Plone na plataforma mobile
Plone na plataforma mobilePlone na plataforma mobile
Plone na plataforma mobile
 

Reconhecimento de fala em português brasileiro

  • 1. Reconhecimento de Fala em Português Brasileiro Fabiano Weimar dos Santos xiru@xiru.org 1 quarta-feira, 9 de dezembro de 2009
  • 2. Eu sou... • “Apenas um rapaz latino americano...” • Mestre em Computação pela UFRGS (2009), Bacharel em Computação pela UCS (2004) • Envolvido com IA desde 1999 • Consultor e Desenvolvedor Python, Zope e Plone desde 2000 • Core-developer do Plone • Contribuidor em diversos Plone Products • Sysadmin do provedor PyTown.com 2 quarta-feira, 9 de dezembro de 2009
  • 3. Roteiro • Introdução • O que é Reconhecimento de Fala • Como funciona? • E o idioma Português Brasileiro... • Dicas: como implantar • Jabá... 3 quarta-feira, 9 de dezembro de 2009
  • 4. Introdução • Nossa interface natural com o mundo é a fala (não um teclado e mouse) • A área de reconhecimento de fala é pesquisada desde a década de 80 • Não é uma tarefa simples! • Reconhecimento de Fala = Processamento de Sinais + Fonética + Linguística Computacional + Inteligência Artificial 4 quarta-feira, 9 de dezembro de 2009
  • 5. O que é Reconhecimento de Fala • Não é “reconhecimento de voz” • Preocupada em reconhecer o que está sendo dito • Reconhecer quem está falando é uma outra área: reconhecimento de locutor • Reconhecimento de fala contínua sem restrições é ainda um problema em aberto 5 quarta-feira, 9 de dezembro de 2009
  • 6. Síntese x Reconhecimento • Todo leigo confunde: • Síntese: Conversão de Texto para “Fala” • Reconhecimento: Conversão de Fala para “Texto” • Se comparada ao reconhecimento, a síntese é trivial 6 quarta-feira, 9 de dezembro de 2009
  • 7. Aplicações • Para Câmaras: Apoio na Taquigrafia • Indexação e busca de conteúdo no que é dito em comissões em plenário,TV e rádio • URA 7 quarta-feira, 9 de dezembro de 2009
  • 9. Fundamentação Teórica Consideremos A como a representação de um evento acústico;W como uma string de n palavras. Se P(W|A) denota a probabilidade que as palavras W foram faladas, dado os eventos acústicos A observados, então o reconhecedor deve decidir em favor de uma palavra W que satisfaça Wmax = argmaxw P(W|A) 9 quarta-feira, 9 de dezembro de 2009
  • 10. Fundamentação Teórica Podemos reescrever a equação como P(W|A) = (P(W)P(A|W)) / P(A), onde P(W) é a probabilidade da palavra W ser dita, P(A|W) é a probabilidade que quando a palavra W é dita o evento acústico A será observado e P(A) é a probabilidade de A ser observado 10 quarta-feira, 9 de dezembro de 2009
  • 11. Fundamentação Teórica Como a maximização é feita com a variável A fixa (pois o evento acústico observado é determinado), temos: Wmax = argmaxw P(W)P(A|W) Essa fórmula define que processos um reconhecedor de fala deve solucionar... 11 quarta-feira, 9 de dezembro de 2009
  • 12. Fundamentação Teórica • Um Modelo Acústico para calcular P(A|W) •HMM, Rede Neural, DTW •Um Modelo de Linguagem para calcular P(W) •n-gram, CFG •Busca de hipótese para Wmax •Não trivial, pois o espaço de busca é muito grande e tempo real pode ser “desejável” 12 quarta-feira, 9 de dezembro de 2009
  • 13. Fundamentação Teórica • Um Modelo Acústico para calcular P(A|W) •HMM, Rede Neural, DTW •Um Modelo de Linguagem para calcular P(W) •n-gram, CFG •Busca de hipótese para Wmax •Não trivial, pois o espaço de busca é muito grande e tempo real pode ser “desejável” 13 Trifones “tied state” com múltiplas Gaussianas quarta-feira, 9 de dezembro de 2009
  • 14. Fundamentação Teórica • Um Modelo Acústico para calcular P(A|W) •HMM, Rede Neural, DTW •Um Modelo de Linguagem para calcular P(W) •n-gram, CFG •Busca de hipótese para Wmax •Não trivial, pois o espaço de busca é muito grande e tempo real pode ser “desejável” 14 Modelos estatísticos baseados em 3-gram suavizados por algorítmos de desconto e interpolação quarta-feira, 9 de dezembro de 2009
  • 16. 16 Reconhecedores • HTK (Hidden Markov Model Toolkit) • Sphinx (CMU Sphinx Open Source Speech Recognition Engine) • Julius (Open-Source LargeVocabulary CSR Engine Julius) quarta-feira, 9 de dezembro de 2009
  • 17. Linguística Computacional • Autenticidade • Adequação • Representatividade • Extensão 17 quarta-feira, 9 de dezembro de 2009
  • 18. Modelos de Linguagem • Geralmente adota-se modelos estatísticos de linguagem, baseados em n-grams • Quanto maior a ordem do n-gram, melhor é a representação do contexto, mas mais esparso torna-se o espaço de busca • Necessidade de grandes quantidades de dados para a criação de modelos representativos 18 quarta-feira, 9 de dezembro de 2009
  • 19. Modelos de Linguagem • Representatividade limitada pela extensão • Modelos de linguagem pequenos são eficientes, mas tem aplicabilidade restrita • Modelos de linguagem com grande vocabulário tem maior aplicabilidade, mas são menos eficientes (alta perplexidade) • Modelos de linguagem realmente grandes (teóricos) são eficientes e “irrestritos”, mas são difíceis de manter (limitações computacionais) 19 quarta-feira, 9 de dezembro de 2009
  • 20. Modelos Acústicos • Em condições ideais, usa-se todo o texto disponível para criar os modelos de linguagem e os respectivos áudios para criar os modelos acústicos • Geralmente isso não é tão simples pois: • A quantidade de áudio costuma ser limitada • A aquisição de corpus textuais costuma ser mais “simples” 20 quarta-feira, 9 de dezembro de 2009
  • 21. Modelo Acústico - Trifones “tied state” 21 80,0 83,6 87,2 90,8 94,4 98,0 tied tied-iw tied-iw-3gram 89,7 88,3 82,9 Taxa Média de Reconhecimento (%) 85,0 81,1 89,9 86,7 95,7 85,7 quarta-feira, 9 de dezembro de 2009
  • 22. Múltiplas Misturas Gaussianas 22 88,00 89,00 90,00 91,00 92,00 93,00 94,00 1 2 4 6 8 10 12 14 16 18 20 3-gram 2-gramTaxa Média de Reconhecimento (%) Número de Misturas Gaussianas quarta-feira, 9 de dezembro de 2009
  • 23. GrandeVocabulário - CETEN-Folha 23 65 68 71 74 77 80 2gram-iw-6G 2gram-id-6G 3gram-iw-12G 3gram-id-12G 71,37 71,07 73,00 73,27 Taxa Média de Reconhecimento (%) 75,24 71,33 74,87 71,33 76,95 66,17 76,98 66,27 quarta-feira, 9 de dezembro de 2009
  • 24. 24 Dicas: como implantar • Organize seus dados • Armazene o áudio de tudo que é dito • Armazene as transcrições ortográficas • Cuidado com soluções prontas • Sistema de Reconhecimento deve aprender com erros (e não apenas confiar na adaptação de locutor) quarta-feira, 9 de dezembro de 2009
  • 25. 25 Dicas: como implantar Não seja otimista demais. Bons resultados requerem muito trabalho (e tempo). quarta-feira, 9 de dezembro de 2009
  • 26. Jabá... 26 quarta-feira, 9 de dezembro de 2009
  • 27. Obrigado! Fabiano Weimar dos Santos xiru@xiru.org 27 quarta-feira, 9 de dezembro de 2009