1. 程式人生 > >Aprendizagem de Máquina é Divertido: Parte 6

Aprendizagem de Máquina é Divertido: Parte 6

Nossa rede neural prediz que provavelmente foi falado “HHHEE LL LLLOOO”. Mas também não descarta a possibilidade de que tenha sido dito “HHHUU LL LLLOOO”, ou até mesmo “AAAUU LL LLLOOO”.

Ainda é necessário organizar melhor a saída. Primeiro, vamos substituir caracteres repetidos por um único caractere:

  • HHHEE_LL_LLLOOO torna-se HE_L_LO
  • HHHUU_LL_LLLOOO torna-se HU_L_LO
  • AAAUU_LL_LLLOOO torna-se AU_L_LO

Depois vamos remover os brancos:

  • HE_L_LO torna-se HELLO
  • HU_L_LO torna-se HULLO
  • AU_L_LO torna-se AULLO

O resultado são treis possíveis transcrições — “Hello”, “Hullo” e “Aullo”. Se você pronunciar em voz alta [em inglês], estas três palavras se parecem com “Hello”. Como ela está predizendo um caractere por vez, a rede neural produzirá transcrições muito próximas do som pronunciado. Por exemplo, se você disser “He would not go”, ela poderá gera um possível transcrição como “He wud net go”.

O pulo do gato é combinar estas predições baseadas em pronúncias com probabilidades baseadas em grandes bases de texto escrito (livros, notícias, etc). Assim, podemos descartar transcrições que sejam menos prováveis de ocorrer em um texto e mantém as transcrições que pareçam mais realistas.

Dentre as transcrições possíveis “Hello”, “Hullo” e “Aullo”, é óbvio que “Hello” vai aparecer mais frequentemente em uma base de textos (e também no áudio original utilizado no treinamento) e por isso é provavelmente correto. Assim, escolhemos “Hello” como nossa transcrição final em detrimento das outras opções. Pronto!

Não! Espera aí!

Você pode estar pensando “Mas e se alguém disser ‘Hullo’? É uma palavra válida. Quem sabe ‘Hello’ é a transcrição errada!

“Hullo! Who dis?”

Claro, é possivel que alguém realmente diga “Hullo” ao invés de “Hello”. Mas um sistema de reconhecimento de voz como este (treinado em inglês americano) provavelmente nunca irá produzir “Hullo” como transcrição. Simplemente algo tão improvável de se dizer comparado com “Hello” que sempre irá preferir “Hello” não importa o quanto você enfatize o som do ‘U’.

Tente você mesmo! Se seu telefone pode ser configurado para Inglês Americano, tente fazer com que o assistente digital no seu smartphone reconheça a palavra “Hullo”. Não dá! Ele se recusa! Ele sempre irá entender como “Hello”.

Não compreender “Hullo” é um comportamento razoável, mas algumas vezes você ficará irritado quando seu smartphone se recusar a reconhecer algo válido que você esteja dizendo. Por isso que modelos de reconhecimento de voz estão constantemente sendo retreinados para corrigir estes casos extremos.

Posso Implementar meu Próprio Sistema de Reconhecimento de Voz?

Uma das coisas mais legais em aprendizagem de máquina é como ás vezes tudo parece ser tão simples. Você pega um punhado de dados, treina um algoritmo de aprendizagem de máquina e magicamente tem um sistema de IA de altíssima qualidade rodando na placa de vídeo do seu notebook de jogos … certo?

Pode ser verdade em alguns casos, mas não para voz. Reconhecimento de voz é um problema muito difícil. Você tem uma infinidade de desafios a superar: má qualidade de microfones, ruído de fundo, reverberação e eco, variações de sotaques, e assim por diante. Todos estes problemas devem estar presentes na sua base de treinamento para garantir que a rede neural será capaz de lidar com eles.

Aqui vai outro exemplo: você sabia que quando você fala em uma sala barulhenta você inconscientemente aumenta o tom da sua voz para poder ser compreendido em meio ao barulho? Humanos não tem dificuldade para compreender uns aos outros em qualquer situação, mas redes neurais precisam ser treinadas para cada caso especial. Por isso, você precisa de dados de treinamento de pessoas gritando em meio ao barulho!

Para implementar um sistema de reconhecimento de voz que tenha o nível de performance da Siri, Google Now!, ou Alexa, você precisará de uma enorme quantidade de dados — muito mais dados do que você poderá conseguir sem contratar centenas de pessoas para gravá-los para você. E como usuários tem pouca tolerância à sistemas de reconhecimento de voz de baixa qualidade, você não pode economizar nisto. Ninguém quer um sistema de reconhecimento de voz que acerte apenas 80% das vezes.

Para uma compania como a Google ou a Amazon, centenas de milhares de horas de áudio falado gravado em situações da vida real é ouro. Este é o item fundamental que separa os sistemas de reconhecimento de voz de primeira linha deles de um sistema amador. O principal objetivo ao colocar Google Now! e Siri em cada smartphone de graça, ou vender unidades de Alexa por $50 sem taxa de assinatura para que você os use o máximo possível. Cada coisa que você diz para estes sistemas é gravado para sempre e utilizado depois como dados de treinamento para versões futuras de sistemas de reconhecimento de voz. Esta é a grande verdade!

Você pode acessar a mesma coisa na Amazon com seu aplicativo Alexa. A Apple, infelizmente, não permite que você acesse os dados de sua voz na Siri.

Se você está procurando uma ideia para uma start-up, eu não recomendaria tentar construir seu próprio sistema de reconhecimento de voz para competir com a Google. Ao invés disto, tente descobrir como fazer as pessoas te entregarem áudios delas mesmas falando por horas. Esta based de áudio pode ser seu produto.

Onde Aprender Mais

  • O Algoritmo (superficialmente) descrito aqui para lidar com áudio de tamanho variado é chamado de Classificação Temporal Conexionista ou CTC. Você pode ler o paper original de 2006.
  • Adam Coates da Baidu deu uma excelente palestra sobre Deep Learning para reconhecimento de voz na Bay Area Deep Learning School. Você pode assistir ao vídeo no YouTube (a sua palestra inicia em 3:51:00). Altamente recomendado.