Matt Reed from RedPepper has used a Raspberry Pi, Microphone, a Creepy Doll and Google’s Speech Neural Network system to listen into .... Ghosts.
"From October 27–31, we’ll be live streaming the DeepWhisper rig nightly from our offices in historic “Butchertown” Nashville so you can watch for any EVPs that may come through. Just the thing to do at 3am when you can’t sleep." - Matt Reed
The DeepWhisper Project pipes a real-time microphone stream to Google’s Speech Neural Network, which can detect over 110 languages and then we’llimmediately display the results as they come back
www.DeepWhisper.io
Deep Whisper is Opensource so anyone can hunt their own ghosts.
it runs on Node and its libraries have been optimized for Raspberry Pis. You’ll need a USB microphone, Google Cloud Platform Project Key, a display, and patience.
Matt will upload a full repository link soon but, for now, here are the key code snippets.
Connecting to Google Voice Neural Network
You’ll need to have a project set up in the Google Cloud Platform console which will grant you an authentication JSON key that your app will use to connect. Just follow these steps to get that going. Note: you may have to set up billing with Google to proceed.
// Authenticate with Google Cloud const speech = require('@google-cloud/speech')({ projectId: 'deepwhisper-XXXXXXXX', keyFilename: 'Deepwhisper-XXXXXXX.json' });
Streaming mic input to Google
Simply pipe the microphone input to Google, and if the Neural Network detects speech in any of the 110+ supported languages, it will be returned as a string of transcript text.
// Connect and listen to USB microphone const micInstance = mic({ rate: ‘16000’, channels: ‘1’, debug: true, exitOnSilence: 0 }); const micInputStream = micInstance.getAudioStream(); micInputStream.pipe(recognizeStream); // Create a real-time recognize stream with Google const recognizeStream = speech.streamingRecognize(request) .on(‘error’, console.error) .on(‘data’, (data) => (data.results[0] && data.results[0].alternatives[0]) ? io.emit('text', { transcript: data.results[0].alternatives[0].transcript }) : `\nReached transcription time limit, press Ctrl+C\n`);
Display the results
Using a simple HTML page with Socket.IO, you can receive the results emitted by the server above and display them immediately. This uses jQuery to set the text and fade it out after five seconds.
<script> var socket = io.connect('http://localhost:3000'); socket.on('text', function (data) { $('#transcript').text(data.transcript); $('#transcript').fadeIn(); setTimeout(function(){ $('#transcript').fadeOut(function(){ $('#transcript').text(''); }); }, 5000); }); </script>
Source and Project Matt Reed at RedPepper.land
www.DeepWhisper.io
Top Comments