loading
In this project I use BitVoicer’s speech recognition features (http://www.bitsophia.com/BitVoicer.aspx), one Arduino board and one electret microphone (https://www.sparkfun.com/products/9964) to control a few LEDs.

This project is similar to the one in my first post (http://www.instructables.com/id/Speech-Recognition-with-BitVoicer-and-Arduino/), but now I use audio streaming to send audio to BitVoicer.

The fritzing schematic I added to this instructable shows how I wired my Arduino board.

I’m also adding a few pictures and a YouTube video of the project running.


Unfortunately, the sketch I wrote for my first post is no longer supported by the new version of BitVoicer. Here is the new sketch:

#include <BitVoicer11.h>

//Instantiates the BitVoicerSerial class
BitVoicerSerial bvSerial = BitVoicerSerial();

//Stores true if the Audio Streaming Calibration tool
//is running
boolean sampleTest = false;
//Stores the data type retrieved by getData()
byte dataType = 0;
//Sets up the pins and default variables
int pinR = 3;
int pinY = 5;
int pinG = 6;
int lightLevel = 0;

void setup()
{
  //Sets the analog reference to external (AREF pin)
  //WARNING!!! If anything is conected to the AREF pin,
  //this function MUST be called first. Otherwise, it will
  //damage the board.
  bvSerial.setAnalogReference(BV_EXTERNAL);
  //Sets up the microcontroller to perform faster analog reads
  //on the specified pin
  bvSerial.setAudioInput(0);
  //Starts serial communication at 115200 bps
  Serial.begin(115200);
  //Sets up the pinModes
  pinMode(pinR, OUTPUT);
  pinMode(pinY, OUTPUT);
  pinMode(pinG, OUTPUT);
}

void loop()
{
  //Captures audio and sends it to BitVoicer if the Audio
  //Streaming Calibration Tool is running
  if (sampleTest == true)
  {
    //The value passed to the function is the time
    //(in microseconds) that the function has to wait before
    //performing the reading. It is used to achieve about
    //8000 readings per second.
    bvSerial.processAudio(46);
  }
 
  //Captures audio and sends it to BitVoicer if the Speech
  //Recognition Engine is running
  if (bvSerial.engineRunning)
  {
    //The value passed to the function is the time
    //(in microseconds) that the function has to wait before
    //performing the reading. It is used to achieve about
    //8000 readings per second.
    bvSerial.processAudio(46);
  }
}

//This function runs every time serial data is available
//in the serial buffer after a loop
void serialEvent()
{
  //Reads the serial buffer and stores the received data type
  dataType = bvSerial.getData();
 
  //Changes the value of sampleTest if the received data was
  //the start/stop sampling command
  if (dataType == BV_COMMAND)
      sampleTest = bvSerial.cmdData;
 
  //Signals BitVoicer's Speech Recognition Engine to start
  //listening to audio streams after the engineRunning status
  //was received
  if (dataType == BV_STATUS && bvSerial.engineRunning == true)
    bvSerial.startStopListening();
 
  //Checks if the data type is the same as the one in the
  //Voice Schema
  if (dataType == BV_STR)
    setLEDs();
}

//Performs the LED changes according to the value in
//bvSerial.strData
void setLEDs()
{
  if (bvSerial.strData == "wake")
  {
    digitalWrite(pinR, LOW);
    digitalWrite(pinY, LOW);
    digitalWrite(pinG, LOW);
    digitalWrite(pinR, HIGH);
    digitalWrite(pinY, HIGH);
    digitalWrite(pinG, HIGH);
    delay(200);
    digitalWrite(pinR, LOW);
    digitalWrite(pinY, LOW);
    digitalWrite(pinG, LOW);
    delay(200);
    digitalWrite(pinR, HIGH);
    digitalWrite(pinY, HIGH);
    digitalWrite(pinG, HIGH);
    delay(200);
    digitalWrite(pinR, LOW);
    digitalWrite(pinY, LOW);
    digitalWrite(pinG, LOW);
    delay(200);
    digitalWrite(pinR, HIGH);
    digitalWrite(pinY, HIGH);
    digitalWrite(pinG, HIGH);
    delay(200);
    digitalWrite(pinR, LOW);
    digitalWrite(pinY, LOW);
    digitalWrite(pinG, LOW);
    lightLevel = 0;
  }
  else if (bvSerial.strData == "sleep")
  {
    digitalWrite(pinR, LOW);
    digitalWrite(pinY, LOW);
    digitalWrite(pinG, LOW);
    digitalWrite(pinR, HIGH);
    digitalWrite(pinY, HIGH);
    digitalWrite(pinG, HIGH);
    delay(200);
    digitalWrite(pinR, LOW);
    digitalWrite(pinY, LOW);
    digitalWrite(pinG, LOW);
    delay(200);
    digitalWrite(pinR, HIGH);
    digitalWrite(pinY, HIGH);
    digitalWrite(pinG, HIGH);
    delay(200);
    digitalWrite(pinR, LOW);
    digitalWrite(pinY, LOW);
    digitalWrite(pinG, LOW);
    lightLevel = 0;
  }
  else if (bvSerial.strData == "RH")
  {
    digitalWrite(pinR, HIGH);
    lightLevel = 255;
  }
  else if (bvSerial.strData == "RL")
  {
    digitalWrite(pinR, LOW);
    lightLevel = 0;
  }
  else if (bvSerial.strData == "YH")
  {
    digitalWrite(pinY, HIGH);
    lightLevel = 255;
  }
  else if (bvSerial.strData == "YL")
  {
    digitalWrite(pinY, LOW);
    lightLevel = 0;
  }
  else if (bvSerial.strData == "GH")
  {
    digitalWrite(pinG, HIGH);
    lightLevel = 255;
  }
  else if (bvSerial.strData == "GL")
  {
    digitalWrite(pinG, LOW);
    lightLevel = 0;
  }
  else if (bvSerial.strData == "ALLON")
  {
    digitalWrite(pinR, HIGH);
    digitalWrite(pinY, HIGH);
    digitalWrite(pinG, HIGH);
    lightLevel = 255;
  }
  else if (bvSerial.strData == "ALLOFF")
  {
    digitalWrite(pinR, LOW);
    digitalWrite(pinY, LOW);
    digitalWrite(pinG, LOW);
    lightLevel = 0;
  }
  else if (bvSerial.strData == "brighter")
  {
    if (lightLevel < 255)
    {
      lightLevel += 85;
      analogWrite(pinR, lightLevel);
      analogWrite(pinY, lightLevel);
      analogWrite(pinG, lightLevel);
    }
  }
  else if (bvSerial.strData == "darker")
  {
    if (lightLevel > 0)
    {
      lightLevel -= 85;
      analogWrite(pinR, lightLevel);
      analogWrite(pinY, lightLevel);
      analogWrite(pinG, lightLevel);
    }
  }
  else
  {
    bvSerial.startStopListening();
    bvSerial.sendToBV("ERROR:" + bvSerial.strData);
    bvSerial.startStopListening();
  }
}


The BitVoicer Voice Schema I used can be downloaded from: http://www.justbuss.xpg.com.br/BitVoicerTest2.zip (you need to have BitVoicer installed to be able open it).

Now I want to control a few things (lights and celling fan) at home. Suggestions are very welcome.
<p>my bitvoice couldnt sent any message to the serial port, is it about the activation?</p><p>should I buy it?</p><p>Bitvoice always come out SPeech rejected!!!!!!</p><p>plz help me</p>
If you do not have a license, BitVoicer will be unable to open the serial port. However, I do not think it would lead to a Speech Rejected response. I suggest you contact BitSophia for that.
<p>Hi! Is it possible to make this instructable without the electret microphone? Can I use the laptop's microphone? If yes, how would the code be modified?</p>
<p>Well is it possible to take input and process audio data from digital pins without using the vr module or a pc?</p>
<p>can i use normal condenser microphone for it? and how?</p>
<p>Is it recommend to connect Arduino to Pc when I use this Vice Recognition?Plz....</p>
<p>A PC running BitVoicer is required in order to use this speech recognition model. You can connect to the PC over WiFi though.</p>
<p>Can I use Bluetooth for it?</p>
<p>I believe you can. Just make sure your bluetooth module is capable of transmitting at least 64kbps.</p>
<p>Thanx.. I made it with BT module HC-05</p>
I want to make a small car which we can control through voice ... any suggestion how can i do this?
Have you seen my other Instructable: <a href="http://www.instructables.com/id/2WD-Voice-Controlled-Robot-With-Arduino-and-BitVoi/" rel="nofollow">http://www.instructables.com/id/2WD-Voice-Controlled-Robot-With-Arduino-and-BitVoi/</a>
<p>Hey i make speech recognition with Arduino but when i up[load this coad in Arduino i got this error mesge please hepl me</p><p>Arduino: 1.6.9 Hourly Build 2016/04/13 03:33 (Windows 7), Board: &quot;Arduino/Genuino Uno&quot;</p><p>C:\Users\PintuDev\Downloads\arduino-nightly-windows (1)\arduino-nightly\libraries\BVS_Demo1\BVS_Demo1.ino:1:18: fatal error: BVSP.h: No such file or directory</p><p> #include &lt;BVSP.h&gt;</p><p> ^</p><p>compilation terminated.</p><p>exit status 1</p><p>Error compiling for board Arduino/Genuino Uno.</p><p>This report would have more information with</p><p>&quot;Show verbose output during compilation&quot;</p><p>option enabled in File -&gt; Preferences.</p>
<p>The BVSP class/library is used with BitVoicer Server. This post uses the old BitVoicer version. Anyway, this error seems to be related to an incorrect library installarion. You should read this: <a href="http://www.arduino.cc/en/Guide/Libraries#toc4" rel="nofollow">http://www.arduino.cc/en/Guide/Libraries#toc4</a></p>
<p>Hi leandro4b,</p><p>Thanks for the great tutorial. You mention below that 'you can add wireless connectivity....'. Can you elaborate on that? Do you think it's possible to send packets via WiFi to an Internet server with BitVoicer?</p><p>Thanks!</p>
<p>I think BitVoicer was designed to run in a local network only.</p>
<p>great instructable, thanks for sharing. At the moment I'm working on a project that &quot;writes&quot; on a screen what it is said to a mic. Any suggestions guys? Thanks in advance</p>
<p>can you help me...?</p>
<p>Hi, would you recommend to buy the BitVoicer Server or just the BitVoicer? I see the main difference is the speech synthesis that the BitVoicerServer has. In one of your other projects you used a speaker to interact better with the arduino, I imagine that for this feature I would be needing the BitVoicer Server, am I correct? Or would the BitVoicer be enough for both projects (this one and the one with the speaker)?</p>
<p>To add speech synthesis to your project, you will need the new BitVoicer Server. The old BitVoicer does not synthesize speech at all.</p>
<p>Hi,</p><p> I'm going to use your bitvoice library along with an Arduino for my university project. </p><p>- I want use four microphones for voice recognition.</p><p>- Also need to identify from which microphone the specified voice was identified.</p><p> would bitvoice be able to help me with any method to achieve this task by using an Arduino? </p>
<p>You can achieve that using the new version. Take a look at my most recent post (http://www.instructables.com/id/Speech-Recognition-and-Synthesis-With-Arduino/) and also check the BitSophia's website.</p>
<p>I actually need the voice recognition software to be in the embedded system other than using a PC to run the voice recognition software in it.<br>Is that possible?</p>
<p>Can I only download BitVoicer on a windows computer, I can't download it on a Mac. Plus, is there a free version, or can I only download the one to pay?</p>
<p>I do not think there is a BitVoicer for Mac and I also do not know of a free version. However, you can try many of the software features using the non-paid version you can download from their website.</p>
<p>Does it run without being connected to a computer?</p>
<p>No, it does not. You can add wireless connectivity to it though.</p>
<p>I would also like to know. Just looking at the code I suspect the answer is no.</p>
<p>I hooked up the circuit, downloaded everything and found out i had to pay to activate a 10 minute arduino project??? </p>
<p>Dear Sir,</p><p>What types of speech recognition method used here?</p><p>example:1.Statistical modeling and machine learning</p><p>2.Deep Speech: Accurate Speech Recognition with GPU-Accelerated Deep Learning</p><p>3.Signal processing dealing with noisy environments</p><p>4.Vocabulary size and diffluent speech</p><p>5.Speaker independent and adaptive speech recognition</p><p>6.Spoken language understanding and dialog</p><p>7.Finger print analysis method</p><p>Bcz I should take for Arduino uno for Engineering project.</p>
<p>yo me met&iacute; de lleno al proyecto que hizo investigue y y el micr&oacute;fono de arduino osea el micr&oacute;fono de tres lineas lo que hace es que amplificar la se&ntilde;al eso es lo que hace a diferencia de un micr&oacute;fono normal que solo tiene voltaje y tierra lo que yo hice fue sacar la se&ntilde;al del micr&oacute;fono de dos lineas y ampliarlo para obtener la linea de se&ntilde;al y conectarlo al pin anal&oacute;gico lo hice con 5 leds pero mi problema es que no enciende... seg&uacute;n mi tester cuando hago ruido en el micr&oacute;fono lo detecta le llegan 5v pero cuando abro el programa del bitvoicer pues me detecta las sentencias y reconoce lo que digo el c&oacute;digo tengo bueno pues me lo compilo pero el problema es que no hace nada... cuando digo por ejemplo &quot;wakeup&quot; el bitvoicer me lo reconoce y todo pero mi arduino no hace nada... no se en que me habr&eacute; equivocado... me urge que funcione no se en que me he equivocado?</p><p>me toca apagar el microfono que tiene mi laptop porque sino ese microfono me reconoce pero cuando digo las palabras reservadas no lo detecta... como que sino lo tuviera conectado pero el microfono esta bueno..</p><p>en la parte del microfono lo hice con una fuente externa usb para q traslade 5v el bitvoicer no me reconoce el microfono del circuito usted cual cree q sea mi error?</p><p>las resistencias que uso para los leds son de 330Ohmios</p><p>HELP ME!!!</p><p>&quot; I immersed myself in research project that made yy bone arduino microphone microphone three lines it does is amplify the signal that is what makes it unlike a normal microphone voltage and ground only has what I did was take the microphone signal and extend two lines for signal line and connect the analog pin did 5 leds but my problem is not light ... in my tester when I do noise in the microphone detects you arrive 5v but when I open the program bitvoicer because I detected judgments and recognize what I say the code got good because I do I build it but the problem is that it does nothing ... when I say for example &quot;wakeup&quot; the bitvoicer recognize me and everything but my Arduino does nothing ... not that I have been mistaken ... I urge you not to work when I go wrong?</p><p>I have to turn off the microphone that has my laptop because otherwise the microphone recognizes me but when I say the keywords does not detect it ... like that but it has connected but the microphone is good ..</p><p>on the part of the microphone did an external source to q transfer usb 5v bitvoicer not recognize me the microphone circuit which you believe q is my mistake? &quot;</p>
<p>yo me met&iacute; de lleno al proyecto que hizo investigue y y el micr&oacute;fono de arduino osea el micr&oacute;fono de tres lineas lo que hace es que amplificar la se&ntilde;al eso es lo que hace a diferencia de un micr&oacute;fono normal que solo tiene voltaje y tierra lo que yo hice fue sacar la se&ntilde;al del micr&oacute;fono de dos lineas y ampliarlo para obtener la linea de se&ntilde;al y conectarlo al pin anal&oacute;gico lo hice con 5 leds pero mi problema es que no enciende... seg&uacute;n mi tester cuando hago ruido en el micr&oacute;fono lo detecta le llegan 5v pero cuando abro el programa del bitvoicer pues me detecta las sentencias y reconoce lo que digo el c&oacute;digo tengo bueno pues me lo compilo pero el problema es que no hace nada... cuando digo por ejemplo &quot;wakeup&quot; el bitvoicer me lo reconoce y todo pero mi arduino no hace nada... no se en que me habr&eacute; equivocado... me urge que funcione no se en que me he equivocado?</p><p>me toca apagar el microfono que tiene mi laptop porque sino ese microfono me reconoce pero cuando digo las palabras reservadas no lo detecta... como que sino lo tuviera conectado pero el microfono esta bueno..</p><p>en la parte del microfono lo hice con una fuente externa usb para q traslade 5v el bitvoicer no me reconoce el microfono del circuito usted cual cree q sea mi error?</p><p>las resistencias que uso para los leds son de 330Ohmios</p><p>HELP ME!!!</p><p>&quot; I immersed myself in research project that made yy bone arduino microphone microphone three lines it does is amplify the signal that is what makes it unlike a normal microphone voltage and ground only has what I did was take the microphone signal and extend two lines for signal line and connect the analog pin did 5 leds but my problem is not light ... in my tester when I do noise in the microphone detects you arrive 5v but when I open the program bitvoicer because I detected judgments and recognize what I say the code got good because I do I build it but the problem is that it does nothing ... when I say for example &quot;wakeup&quot; the bitvoicer recognize me and everything but my Arduino does nothing ... not that I have been mistaken ... I urge you not to work when I go wrong?</p><p>I have to turn off the microphone that has my laptop because otherwise the microphone recognizes me but when I say the keywords does not detect it ... like that but it has connected but the microphone is good ..</p><p>on the part of the microphone did an external source to q transfer usb 5v bitvoicer not recognize me the microphone circuit which you believe q is my mistake? &quot;</p>
<p>yo me met&iacute; de lleno al proyecto que hizo investigue y y el micr&oacute;fono de arduino osea el micr&oacute;fono de tres lineas lo que hace es que amplificar la se&ntilde;al eso es lo que hace a diferencia de un micr&oacute;fono normal que solo tiene voltaje y tierra lo que yo hice fue sacar la se&ntilde;al del micr&oacute;fono de dos lineas y ampliarlo para obtener la linea de se&ntilde;al y conectarlo al pin anal&oacute;gico lo hice con 5 leds pero mi problema es que no enciende... seg&uacute;n mi tester cuando hago ruido en el micr&oacute;fono lo detecta le llegan 5v pero cuando abro el programa del bitvoicer pues me detecta las sentencias y reconoce lo que digo el c&oacute;digo tengo bueno pues me lo compilo pero el problema es que no hace nada... cuando digo por ejemplo &quot;wakeup&quot; el bitvoicer me lo reconoce y todo pero mi arduino no hace nada... no se en que me habr&eacute; equivocado... me urge que funcione no se en que me he equivocado?</p><p>me toca apagar el microfono que tiene mi laptop porque sino ese microfono me reconoce pero cuando digo las palabras reservadas no lo detecta... como que sino lo tuviera conectado pero el microfono esta bueno..</p><p>en la parte del microfono lo hice con una fuente externa usb para q traslade 5v el bitvoicer no me reconoce el microfono del circuito usted cual cree q sea mi error?</p><p>las resistencias que uso para los leds son de 330Ohmios</p><p>HELP ME!!!</p><p>&quot; I immersed myself in research project that made yy bone arduino microphone microphone three lines it does is amplify the signal that is what makes it unlike a normal microphone voltage and ground only has what I did was take the microphone signal and extend two lines for signal line and connect the analog pin did 5 leds but my problem is not light ... in my tester when I do noise in the microphone detects you arrive 5v but when I open the program bitvoicer because I detected judgments and recognize what I say the code got good because I do I build it but the problem is that it does nothing ... when I say for example &quot;wakeup&quot; the bitvoicer recognize me and everything but my Arduino does nothing ... not that I have been mistaken ... I urge you not to work when I go wrong?</p><p>I have to turn off the microphone that has my laptop because otherwise the microphone recognizes me but when I say the keywords does not detect it ... like that but it has connected but the microphone is good ..</p><p>on the part of the microphone did an external source to q transfer usb 5v bitvoicer not recognize me the microphone circuit which you believe q is my mistake? &quot;</p>
<p>Hello,</p><p>I connected and compiled the code on arduino Mega 2560 without any errors. I also activated BitVoicer and changed the preferences to match that of the connected Arduino. But when I click start in bitvoicer, i get this error &quot; Can not find the requested data item, such as data key or value&quot;. Also the activity info box on the right in bitVoicer shows &quot;Error: unable to load recognition feature&quot;</p><p>I would really appreciate any help.</p>
<p>I have no idea what that message means. I thing you should contact their support.</p>
<p>Hey can anyone give bit voicer activation key.....</p><p>Plzzzzzzzz</p><p>mailId: lingameswar5@gmail.com</p><p>sent to this mail if u need privacy plzzz help meee</p>
<p>Hi, this is really cool !</p><p>I coppied the BitVoicer11 folder to the Arduino Library folder and imported it.</p><p>Still, I get the following message in arduino:</p><blockquote><strong>sketch_mar02k.ino:1:25: fatal error: BitVoicer11.h: No such file or directory</strong></blockquote><blockquote><strong>compilation terminated.</strong></blockquote><p><strong>Error compiling.</strong><br></p><p>Any ideas how to solve? thanks in advance! Best wishes, Reza</p>
Just tried to compile the code on my post using the 1.6 IDE and it compiles perfectly.
<p>Hiii</p><p>It seems to a great Program. I want to ask you that Can we have free bitvoicer software. Which did not ask for activation key. Can we use any other free ware that can replace the bitvoicer. </p>
<p>how to build a design of an voice recognition in android?</p>
<p>Hi there, I have a question. I tried to do this project, yet I used different microphone (http://www.robotistan.com/Ses-Sensor-Karti-Mikrofon-Sensoru,PR-2121.html). It looks similar to yours. The problem is the microphone either doesn't receive any voices or receives all of the noise; according to potantiometer's setting. (I mean audio level is 0 or 97 in Bitvoicer). What am I doing wrong? Thank you for your interest.</p>
<p>I could not find the specs of your microphone, so I am not able to find out if it has something to do with the analog reference I used in this instructable. I also see that your mic has a potentiometer and it may be driving the analog output too high.</p>
<p>ardino IDE is showing the error in your code...</p><p>help me</p>
<p>You propably did not copy all the library files to the right folder. There are instructions on how to install Arduino libraries here http://arduino.cc/en/Guide/Libraries and on the BitVoicer manual.</p>
<p>bitvoicer problem</p>
<p>There is no problem with BitVoicer. This post has been read and used by thousands of users and no problem with BitVoicer has been reported.</p>
<p>You propably did not copy all the library files to the right folder. There are instructions on how to install Arduino libraries here http://arduino.cc/en/Guide/Libraries and on the BitVoicer manual.</p>
<p>please i want to use arduino can i make a robot wch recognisie the voice n by THAT voice only vil b the password for dat robot .that robot is for only storing d data n keeping voice as a password for security?</p>
<p>Well, I'm sure there are solutions for voice identification out there, but right now I think BitVoicer only does speech recognition.</p>
<p>please i want to ask you if i can do something like number recognition on arduino by a camera ? and another question if i can program the camera on number recognition on matlab then i attached it in arduino ?</p>