“We all need a personal assistant, and we’ll all have one”
In this series of blog posts, I’ll walk you through building and designing a basic virtual assistant like Apple’s Seri.
Before delving into the details of how to build such an assistant, lets first explore what virtual assistants are and what are the players in the market.
Virtual assistants are software tools integrated into smart devices such as smartphones that are useful for carrying out various tasks such as playing music, retrieving information, answering generic questions and much more. The following platforms are the most known in the market:
- Siri: one of the first and very advanced personal assistants with lots of features and capabilities. Developed by Appel and can be found in almost all Appel’s computing devices.
- Google Assistant: Developed by Google. It can run on computer systems with the Google Chrome web browser.
- Cortana: Developed by Microsoft and runs on Windows for desktop and mobile. It also runs on both Android and iOS. Cortana seems less advanced than Siri or google now.
- Alexa is an intelligent personal assistant developed by Amazon, made popular by the Amazon Echo and the Amazon Echo Dot devices.
There are much more players in this field. I will describe the landscape in another article.
For now, let’s concentrate on a very practical approach.
Overview of the system.
This figure shows an overview of the whole system.
The system comprise 3 main components.
- Speech to text system. The STT system convert the user’s spoken words into text. This step is simple and we will use already existing software to achieve this task.
- Text to speech: the TTS component convert the engine’s output into speech. TTS is crucial for giving our system a human touch. This step is also simple enough and we will use ready-made component to achieve this functionality.
- The engine: Is the main component of the system and where nearly all the effort will go. This module is responsible for handling all the logic of the interaction with the user.
In this project we will be using python as the main programming language.
This is not a python tutorial. So I’ll assume that the reader is familiar with this language. If the reader is not familiar with python, there are plenty of available ressources online.
As I’ll be developing the assistant while writing the blogs, there will be certainly few updates to these posts.