There were a few sources of inspiration for this project:
- Much of the internet is in English, which can sometimes be an accessibility issue. I wanted to work on this project as a way to help more people access information and content that they might not be able to otherwise.
- On another accessibility note, some people have trouble reading screens. This could help them by providing audio information.
What it does
Playbric is a Chrome extension that scrapes a website for meaningful text. Then, based on a language and gender selection, it will generate an audio transcription of the text and will allow you to play that audio right from your browser. It is most useful on blog-like websites.
How I built it
I wrote a Chrome extension that provides a UI via Google Chrome. The Chrome extension then and submits the data to an AWS Lambda function that extracts "meaningful text" from the website data of the specified URL. Then, the Lambda function calls AWS Polly to transcribe that text to audio. AWS Polly then stores the audio output in an S3 bucket. The Chrome extension asynchronously waits for the AWS Lambda and Polly jobs to finish so that it can grab the audio file stored in S3 so that the user can listen to the audio.
Challenges I ran into
- Restrictions with Chrome extensions that required me to offload more functionality elsewhere (move a lot of functionality and logic to an AWS Lambda function)
- Deploying. My. Lambda. Function. Working with an AWS Lambda function wasn't too complicated until I started working with more dependencies and my files started growing in size. I
Accomplishments that I'm proud of
I'm most proud of finishing! I wasn't sure if I could finish the project by myself, and there were definitely some hairy moments. I'm really glad it all came together.
What I learned
- How to make a Chrome extension
- How not to deploy AWS Lambda functions
- How to work with a variety of AWS services (Lambda, Cloudwatch, S3, IAM, API Gateway, Cloudformation)
What's next for PLAYBRIC
- Incorporate AWS Translate to translate between different languages before providing a transcription
- Save link between website URLs and transcription audio files in a database to prevent duplicate transcription
- Allow people to register/login with OAUTH and save their account info.