Brasileiro desenvolvedor de 15 anos consegue fazer aplicativo Siri do iPhone 4S entender português, além disso mostra as resposta escritas também em português.

Brasileiro faz Siri do iPhone 4S entender Português

Brasileiro desenvolvedor de 15 anos consegue fazer aplicativo Siri do iPhone 4S entender português, além disso mostra as resposta escritas também em português.



Pedro Franceschi, um jovem brasileiro de apenas 15 anos, desenvolvedor de iOS, conseguiu fazer com que o aplicativo mais novo e mais comentado da Apple, o Siri, entendesse o português brasileiro. Além de entender os comandos na nossa língua ele também mostrar as respostas traduzidas, foi usada muita engenharia reversa e cálculos matemáticos para que esse feito fosse realizado, Pedro explicou em seu blog o que foi feito para chegar a esse resultado.

O jovem iniciou seu trabalho devido a falta de entendimento do Siri para o nosso português.


Então a Apple lançou o Siri, o fantástico assistente de voz do iPhone 4S, mas mais uma vez esqueceu dos brasileiros. Conversando com alguns amigos, inclusive gringos, sobre a viabilidade de fazer um port do Siri para Português, a maioria achou que seria difícil, ou até impossível, visto que a Apple colocou bastante protocolos de comunicação em cima do Siri, para garantir a velocidade nos reconhecimentos. E muitos desses protocolos são privados.

fonte: Blog do Pedro - http://pedrofranceschi.com/post/15040124592/siri-em-portugues-no-iphone-4s

Depois disso o ele passou a ver quais as alternativas que tinha para tentar chegar a esse feito.

Até que na terça-feira a noite, me veio uma idéia. O aplicativo Dragon Dictation, da Nuance, faz reconhecimento de voz, e muito bem feito, por sinal, do Português brasiliero. Por que então não temos o Siri na nossa língua? Talvez devido a uma questão burocrática, talvez devido a falta de agilidade da Apple Brasil, talvez ambos.

fonte: Blog do Pedro - http://pedrofranceschi.com/post/15040124592/siri-em-portugues-no-iphone-4s

Falando de forma simplificada Pedro Franceschi usou APIs do aplicativo Dragon Dictation para passar o áudio capturado pelo iPhone para texto. Esse texto é então traduzido para inglês e passado para o formato de aúdio novamente, para que o Siri entenda. Após esse processo o aúdio é enviado normalmente aos servidores do Siri na Apple através de um proxy. É recebida então a resposta em texto em inglês, que é traduzido para português e mostrado na tela.



Devido a esse vários processos ocorre uma demora na resposta do aplicativo, porém existe uma total coerência com as resposta em outras línguas. Para entender mais especificamente ele descreve o que fez em seu blog.

Todo o trabalho do Siri em Português foi feito usando o SiriProxy, excelente proxy para o Siri desenvolvido pelo usuário plamoni, em Ruby, que redireciona todo o tráfego dos servidores do Siri para o seu computador, permitindo assim, modificá-lo. Mas antes de tudo, precisava conseguir transformar o áudio que o Siri envia para os servidores da Apple em um arquivo de áudio convencional.

Descobri que o áudio é enviado utilizando diversos codecs diferentes para otimizar o tamanho. Consegui transformar todos os bytes enviados para a Apple num arquivo de áudio, mas faltava um comando do ffmpeg ainda para poder torná-lo audível. Com a ajuda do Micael Silva, mestre do ffmpeg ( 😛 ), consegui fazer isso, e aqui ficam meus agradecimentos a ele! 🙂

Com o arquivo de áudio que o Siri envia para o servidor, “só” faltava reconhecer o conteúdo dele. Para isso, precisava reverter a API do Dragon Dictation. Liguei o Wireshark, mas devido ao HTTPS utilizado na comunicação, ele não me ajudou muito. Até que [email protected] me deu a idéia de decompilar a API do Dragon Dictation em Java e entender o protocolo, e aqui ficam meus agradecimentos a ele também por essa ideia! 🙂

Porém, mesmo entendendo a comunicação, ainda passei uma madrugada com problemas de reconhecimento por parte da Nuance. Faltava um certificado de segurança, único para cada aparelho. Mas no final, consegui obter a resposta do significado do áudio.

Com isso, bastava traduzir o áudio para inglês, regravá-lo em inglês, e enviar para a Apple. Mas ainda assim, nem sempre o áudio regravado em inglês, com a API de Text->Speech do Mac OS X, tinha um conteúdo aceitável pela Nuance (muitas vezes o áudio era incompreensível para o reconhecimento de voz).

Então foi necessário usar um pouco de matemática para isso. Primeiro eu gravava o áudio em inglês usando várias variáveis diferentes (velocidade, pitch, etc). Depois, rodava um algoritmo que eu bolei, baseado nas anotações abaixo, para comparar os padrões e calcular quais deles são estatisticamente mais confiáveis.

Basicamente, o algoritmo pega o sinal de áudio, aplica a Transformada de Fourier, faz uma ordenação progressiva das séries harmônicas e compara dois sinais utilizando o método da similaridade do cosseno em dimensão-N.

fonte: Blog do Pedro - http://pedrofranceschi.com/post/15040124592/siri-em-portugues-no-iphone-4s

Confira no vídeo abaixo como ficou o reconhecimento do Siri em português.

[youtube]jMMN5keGNXU[/youtube]


Apesar de seu feito ser realmente de grande utilidade para todos os usuários brasileiros de iPhone 4S ele ainda não tem como disponibilizar para que todos possam usar por questões técnicas, porém ele promete que assim que for possível estará sendo compartilhado com todos.

O hack, no momento, não tem como ser disponibilizado para o público por questões técnicas. Existem umas 10 integrações com diferentes APIs e modelos matemáticos para obter esse resultado, e é muito difícil encontrar uma forma de disponibilizar isso no momento.

Porém, assim que o Jailbreak do iPhone 4S estiver disponível, trabalharei arduamente para fazer o Siri em Português brasileiro funcionar no iPhone 4S, não dependendo assim da Apple para isso! 🙂

fonte: Blog do Pedro - http://pedrofranceschi.com/post/15040124592/siri-em-portugues-no-iphone-4s

Para ver o texto completo de Pedro Franceschi sobre o Siri em português confira o seu blog no link abaixo.

http://pedrofranceschi.com/post/15040124592/siri-em-portugues-no-iphone-4s