/translate

:checkered_flag: Alexa translate skill using IBM Watson and High Availability microservice architecture design

Primary LanguageHTMLMIT LicenseMIT

Alexa transtion skill using Machine Learning services

This Alexa Skills Kit microservice combines the AWS Polly and IBM Watson to translate phrases into foreign languages. Skill was built in 10 hours.

Youtube Demo

Youtube Demo

Challenge and Approach

Our approach for satisfying the Machine Learning challenge was to:

  1. Utilize Amazon Alexa's IoT skills to develop a natural language processing (NLP) API
  2. Utilize IBM Watson to improve translation services using Deep Learning for unknown languages
  3. Increase scability and availability by utilization of Redis as a caching mechanism
  4. Render natural voice text-to-speech reponses with Amazon Polly

Our team is comprised of:

  • @loudest - Spent 2016 traveling to 12 countries.

Microservices architecture

architecture

Technologies, APIs, and Datasets Utilized

I made use of:

  • Flask python RESTful microservice
  • Alexa Skills Kit for interaction with Alexa IoT device
  • AWS Polly to generate dynamic natural voice text-to-speech MP3 files
  • IBM Watson for language identification and translation services
  • AWS Lambda NoOps cloud hosting with horizontal auto-scaling and load-balancing capabilities
  • AWS ElastiCache / Redis in-memory noSQL data store to enable low latency look-ups of datasets

Microservice REST API explained

Flask service listens to the following REST endpoints:

  1. /voices - return AWS Polly natural voice text-to-speech synthesis choices
  2. /read/voiceId/outputFormat - returns English MP3 text of obtained from /voices in outputFormat[mp3,ogg,pcm]. text=string as GET input variable
  3. /translate/language - returns translated MP3 text of from text=string as GET input variable
  4. /alexa - Alexa Skill service. Utilizes the following utterance: what is {text} in {language}.

License

The code is licensed under the MIT License. Pull requests will be accepted to this repo, pending review and approval.