I don’t usually do Halloween related posts but this one was on my mind for some time. Ever since I figured out how much fun you could get with AlexaRemoteV2 – I had a plan to turn Alexa into a creepy speaker just for one day! What’s a better day than Halloween – meet Creepy Alexa – your slightly rude and nightmarish companion that will scare the heck out of everyone in the household.
Creepy Alexa has two extra skills!
There are 2 special features that you can’t get on “normal Alexa” devices. Creepy Alexa does two things. It has an ability to talk back in a rude and creepy way and play scary noises at random time intervals on random devices.
All talkback texts can be customized and expressed with the range of SSML markup for Alexa. This means that you can make the Alexa sound disappointed, creepy, upset or evil with its whisper mode!
These settings can be modified. You can create multiple dialogues, triggering on selected voice queries. An action triggering lights in the kitchen would give you another reply than a talkback issued by a weather query.
Alexa, turn the lights on! A: Next time, do it yourself Alexa Set the heating to 18! A: what if I'd turn it off at night and let you freeze?
The possibilities are endless and Alexa talkback is sent to the device queried! Imagine all possible options and terrified housemates!
One of the fun things that you can do with SSML is to intertwine short sound files with text. Alexa dev docs have a list already available sounds, and the list has probably a couple of thousands of sounds with several variations per each type.
There a sounds for knocking, steps, ghosts, doors even prison ambience sounds! If you want to make the Halloween extra creepy – enable this and Creepy Alexa will play these for you!
NodeRED and AlexaRemotev2
I covered the use of the plugin already. Alexa Routine node will send speech commands to correct devices and Alexa Event node will handle the voice triggers. From there, it’s just a little bit of JS to process random responses.
To send SSML text, use Regular speech option – I’m not sure why but the formatted option isn’t working. Regular option identifies the markup and makes the Alexa speak correctly. When a voice query is triggered, a transcribed version is available under
msg.payload.description.summary and the serial number of the device you have spoken to under
The helper node creates an array where each talkback is stored. These are picked at random once the condition from the switch node are met. The function node composes a response and frames it into a SSML formatted response.
<speak> <amazon:effect name="whispered">I am not a real human.</amazon:effect>. </speak>
Every minute, a random number is generated and a switch node estimates a chances of the random sound to happen. To play it randomly, we have to do a couple of things. The sound references are stored in this article.
For each link, take the link without the sound number and everything that follows it.
<audio src="soundbank://soundlibrary/magic/amzn_sfx_ghost_spooky_01"/> //becomes <audio src="soundbank://soundlibrary/magic/amzn_sfx_ghost_spooky_"
and check the number of clips in each section – the spooky ghost has 4 sounds – 01 to 04 – this use the add node to add the src and number of sounds to the array. NodeRED. You will also need an array made of all serial numbers for each Alexa. You can get that in AlexaRemote2 config.
Once we have all that information, the flow will select a random device, random chance of playing the sound and random sound number.
Perhaps it might be too late for this Halloween, but if you do this now and add the time to set it off next year you might even scare yourself. Hope you like this small Halloween prank that you can play on all house members. Let me know if you got someone scared in this Reddit thread.
Download project files here. Bear in mind that Patreon supporters have early access to project files and videos.