I love to browse online discussion forums, to not just read about the trending topics but read comments and discussion from other people. I feel it gives a broader view and real-life insight into topics. During lockdown in the last two years using the Alexa device helped to alleviate loneliness when working in the home office or when driving. However, the options for chat were limited to podcasts which tended to ramble off-topic, radio which would have ads and music and having Alexa read news headlines. The experience of lockdown mirrors the isolation many older people feel on a regular basis and I think Teatime Chat can help.

What it does

The skill allows the user listen to discussions around popular topics and latest news as well as find any discussion for any keywords they can think of. It finds discussions and converts them into a turn-by-turn audio speech using voices mixed to appear as if in a tearoom atmosphere, with gentle piano music and a calming rainy atmosphere. The conversation is built in real-time and presented to the user as an audio playlist which they can control using the usual Alexa voice actions.

How we built it

The front-end of the skill uses the nodeJS Alexa Skill SDK, hosted on AWS Lambda to handle the intent utterances and slots captured by the voice model. It presents to the user using voice as well as multi-modal APL for all device types. The back-end is multi-faceted. The main Lambda function handles incoming skill requests and utilises helper lamdba functions to interrogate the API and build audio playlists. For example, if the user requests the latest news the lambda handler will call another lambda to retrieve search results, then present these to the user as voice and APL list. The user selects an option and the skill immediately sends a progressive response whilst simultaneously calling an internal lambda to begin building the items for the audio playlist. As the first playlist item is created it will update the database and the skill will begin playing the playlist. Each playlist item is appended in real-time and acted intermissions are used in place of any buffering. Additionally a daily set of trending topics are pre-generated and compiled.

Challenges we ran into

The skill uses the API for a popular online community which is already heavily moderated but I have built further moderation and filtering methods on top of this to maintain alexa skill content guidelines. These are further adjusted through manual moderation and curation. There can be instances where the API is slow to respond and I have implemented graceful handling of these situations.

Accomplishments that we're proud of

The ease with which the skill finds discussions from just a few steps and plays them back is something I am particularly proud of. It was a difficult development process and the resulting audio is rather calming and almost could substitute a 'rain noise' type of skill!

What we learned

I used Python primarily for the development of all helper lambda functions, as opposed to the nodeJS I usually use for backends. The use of audio directives in Alexa was new to me and using them as method to obfuscate buffering challenges was intriguing.

What's next for TeaTime Chat!

The skill backend is designed in a modular fashion so in the future other sources for discussions can be used or even a more personalised option where multiple users can create there own chat group (much like group chats on smartphones) and then chats can be listened to by any user within the group. A more natural sounding speech source could also be utilised to provide further immersion.

Share this project: