mic-to-speech
Watches your microphone stream to pull out speech segments that you can save to a file, or send to an endpoint for speech recognition. Ideal for saving audio for conversation monitoring and assistant apps that work like Google Home or Amazon Alexa.
Supports Mac, Windows, Linux and Raspberry Pi.
Usage
const MicToSpeech = require('mic-to-speech');
let micToSpeech = new MicToSpeech();
micToSpeech.on('speech', function(buffer) {
console.log('buffer of speech received');
});
micToSpeech.start();
console.log('Listening for speech')
Example Usage
Save raw audio to disk every time speech like audio is detected
const MicToSpeech = require('mic-to-speech');
const fs = require('fs');
let micToSpeech = new MicToSpeech();
micToSpeech.on('speech', function(rawAudio) {
let now = new Date();
let filename = (now.getMonth() + 1) + "-" + now.getDate()
+ "-" + now.getFullYear() + ' ' + now.getHours()
+ ':' + now.getMinutes() + ':' + now.getSeconds() + '.raw';
fs.writeFile(filename, rawAudio, function() {
console.log('saved: ' + filename);
micToSpeech.resume();
});
};
micToSpeech.start();
console.log('Listening for speech');
Note: This is a header-less wav file, so you will need a compatible software to play them. On a Mac you can play them with play:
play -b 16 -e signed -c 1 -r 16000 someDatedFile.raw
Have a two way AI conversation with speech recognition
'use strict';
const ElizaBot = require('eliza-as-promised');
const say = require('say');
const MicToSpeech = require('mic-to-speech');
const Speech = require('google-speech-from-buffer');
const eliza = new ElizaBot();
const micToSpeech = new MicToSpeech();
micToSpeech.on('speech', function(buffer) {
micToSpeech.pause();
new Speech().recognize(buffer)
.then((statement) => converseWithEliza(statement));
});
let converseWithEliza = function(statement) {
console.log('<< ' + statement);
eliza.getResponse(statement)
.then((response) => {
if (response.reply) {
elizaSay(response.reply, function() {
micToSpeech.resume();
});
}
if (response.final) {
elizaSay(response.final, function() {
micToSpeech.stop();
process.exit(0);
});
}
});
};
let elizaSay = function(words, callback) {
console.log('>> ' + words);
say.speak(words, undefined, 1.0, function(err) {
if (err) {
return console.error(err);
}
callback();
});
};
elizaSay(eliza.getInitial(), function() {
micToSpeech.start();
});