Pedro Franceschi

  • Archive
  • RSS
  • Ask me anything

Siri em Português no iPhone 4S

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.

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.

Então surgiu a questão: como fazer o Siri detectar áudio em Português, usando como base o reconhecimento de voz do Dragon Dictation?

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 ( :P ), 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 o@amagus 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.

Sabendo o áudio mais confiável, bastava enviar o novo áudio, agora gravado em inglês, para a Apple, e enviar o resultado para o aparelho, simulando uma requisição normal do Siri.

O resultado é esse:

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! :)

    • #siri
    • #iphone 4s
    • #projeto
    • #Projeto novo
  • 1 month ago
  • 19
  • Permalink
  • Share
    Tweet

Projeto novo: FaceTrash

De uns tempos pra cá o Facebook vem se tornando mais uma filial do 9gag.com do que uma rede social. As pessoas só postam memes engraçadinhos, piadinhas e coisas do gênero. E isso vem irritando muita gente que acredita que o Facebook é uma rede social. Ponto. Se eu quero ver rage comics, entro no 9gag, se eu quero saber como estão meus amigos, entro no Facebook. E essa diferença tem cada vez mais sumido.

Inspirado pelo post de sucesso que o amigo Izzy Nobre fez no Hoje é Um Bom Dia, resolvi deixar de ficar sentado assistindo a tudo isso e resolvi fazer alguma coisa. E foi no que eu trabalhei na última madrugada: o FaceTrash.

O FaceTrash é um bookmarklet em Javascript que se acopla a interface web do Facebook e elimina grande parte dos posts envolvendo rage comics, 9gag, Jo Suado, Risos no Face, Melhores do Mundo e afins. Dessa forma, você pode focar no que interessa: os seus amigos.

O algoritmo por trás dele procura por padrões nos nomes dos usuários e no conteúdo dos posts. Depois de encontrar esses possíveis posts detestáveis, o script pergunta se o usuário quer excluí-los da página, marcando os posts em vermelho. Então é possível confirmar a ação, removendo os posts da sua página, ou então cancelá-la, fazendo voltar ao Facebook normal.

Para instalar o FaceTrash no seu browser, basta arrastar o link abaixo para o menu de bookmarklets.

FaceTrash

Aproveite e ajude a combater essa praga do Facebook ensinando aos seus amigos como limpar o Facebook também.

Observações:

  • O FaceTrash não coleta nenhum tipo de conteúdo do seu Facebook. Ele roda somente no seu browser, e nada sai dele.
  • Ele não é perfeito. É impossível de detectar certos tipos de conteúdo (como por exemplo uma rage comic que o usuário faz o upload da imagem, logo, não tem nenhum padrão de número de shares/conteúdo)
  • O FaceTrash é melhorado o tempo todo. O script foi desenvolvido de forma que possa ser atualizado remotamente, de forma que a medida que eu encontrar novas formas de bloquear conteúdos indesejáveis, a sua “instalação” do FaceTrash já vai conter essa melhoria sem que você faça nada :)
    • #projeto
    • #Projeto novo
    • #facetrash
    • #facebook
  • 2 months ago
  • 4
  • Permalink
  • Share
    Tweet

Projeto novo: PhyScroll

Nas últimas semanas desenvolvi um novo projeto para o iPhone, iPod touch e iPad chamado PhyScroll. O PhyScroll é um tweak para iOS que permite ao usuário dar scroll em qualquer aplicativo usando o acelerômetro do aparelho (inclinando-o) ou através dos botões de volume.

É complicado fazer uma descrição exata de como ele funciona, então nada melhor do que uma vídeo-demonstração:

O PhyScroll está disponível na Cydia Store por US$1,99. Compra lá! :)

    • #projeto
    • #projeto novo
    • #physcroll
  • 3 months ago
  • Permalink
  • Share
    Tweet

Projeto novo: iUsers

Um grande problema que os usuários de iPad enfrentam é a falta de um sistema multi-usuários nele. O iOS não suporta nativamente esse tipo de coisa, por razões que a Apple não especifica.

Entretanto, durante os últimos meses, procurei criar uma solução multi-usuários para o iPad. O resultado você pode ver no vídeo abaixo:

O sistema funciona efetuando cópias de arquivos do Filesystem do iOS, além de algumas modificações internas do sistema para manter os dados internos dos aplicativos nativos e os baixados da App Store.

O que é mantido para cada usuário são os dados de aplicativos e as preferências do iPad. O que não é mantido são arquivos como músicas e vídeos sincronizados pelo iTunes, mas estou trabalhando num update para que isso seja suportado.

Para quem quiser testar, adicione o repositório (source) http://cydia.iblogeek.com/ enquanto o pessoal que gerencia o Cydia não libera o pacote oficialmente para que todos o tenham sem precisar adicionar nenhum source.

Espero que gostem.

  • 7 months ago
  • 4
  • Permalink
  • Share
    Tweet

PhySwitch na Cydia Store!

O meu projeto novo (PhySwitch) já está disponível na Cydia Store por US$1.99! Ele funciona em iPhones (3G/3GS/4) e iPod touches (2g, 3g e 4g) no Firmware 4.0 ou superior.

Confira a vídeo demonstração abaixo:

Compra lá! :)

    • #physwitch
    • #cydia store
    • #iphone
    • #jailbreak
  • 9 months ago
  • 3
  • Permalink
  • Share
    Tweet
← Newer • Older →
Page 1 of 3

About

Lorem ipsum sit dolor amet. Hello World. White and Nerdy. That's what you will find here.
pedrohfranceschi@gmail.com

Twitter

loading tweets…

  • RSS
  • Random
  • Archive
  • Ask me anything
  • Mobile

Effector Theme by Carlo Franco.

Powered by Tumblr