Ce projet est similaire à celui de mon premier post (), mais maintenant j’utilise le streaming audio pour envoyer l’audio à BitVoicer.
Le schéma de fritzing que j’ai ajouté à cette instructable montre comment j’ai branché ma carte Arduino.
J’ajoute également quelques photos et une vidéo sur YouTube du projet en cours d’exécution.
Malheureusement, l’esquisse que j’ai écrit pour mon premier post n’est plus supporté par la nouvelle version de BitVoicer. Voici le nouveau sketch :
#include < BitVoicer11.h >
Instancie la classe BitVoicerSerial True si magasins l’outil de Calibration de Streaming Audio void setup() void loop() Cette fonction s’exécute chaque fois que des données série sont disponibles Effectue les modifications LED selon la valeur en
BitVoicerSerial bvSerial = BitVoicerSerial() ;
est en cours d’exécution
sampleTest booléen = false ;
Stocke le type de données récupéré par GetData
le type de données Byte = 0 ;
Met en place les goupilles et les variables par défaut
pinR int = 3 ;
int pinY = 5 ;
pinG int = 6 ;
Éclairement int = 0 ;
{
Définit la référence analogique externe (broche AREF)
AVERTISSEMENT!!! Si quelque chose est connectée à la broche AREF,
Cette fonction doit être appelée en premier. Dans le cas contraire, il sera
endommager le jury.
bvSerial.setAnalogReference(BV_EXTERNAL) ;
Met en place le microcontrôleur d’effectuer plus rapidement des lectures analogiques
sur l’axe spécifié
bvSerial.setAudioInput(0) ;
Communication série commence à 115200 bps
Serial.Begin(115200) ;
Met en place le pinModes
pinMode (pinR, sortie) ;
pinMode (pinY, sortie) ;
pinMode (pinG, sortie) ;
}
{
Capture audio et l’envoie à BitVoicer si l’Audio
Outil de Calibration de streaming est en cours d’exécution
Si (sampleTest == true)
{
La valeur passée à la fonction est à la fois
(en microsecondes) que la fonction doit attendre avant
effectuer la lecture. Il sert à réaliser sur
8000 lectures par seconde.
bvSerial.processAudio(46) ;
}
Capture audio et l’envoie à BitVoicer si le discours
Le moteur de reconnaissance est en cours d’exécution
Si (bvSerial.engineRunning)
{
La valeur passée à la fonction est à la fois
(en microsecondes) que la fonction doit attendre avant
effectuer la lecture. Il sert à réaliser sur
8000 lectures par seconde.
bvSerial.processAudio(46) ;
}
}
dans la série tampon après une boucle
Sub serialEvent()
{
Lit la mémoire tampon de série et stocke le type de données reçues
dataType = bvSerial.getData() ;
Modifie la valeur de sampleTest si les données reçues a été
la commande d’échantillonnage de marche/arrêt
Si (dataType == BV_COMMAND)
sampleTest = bvSerial.cmdData ;
Signaux moteur de BitVoicer de reconnaissance vocale pour commencer
écouter le flux audio après le statut d’engineRunning
a été reçue
Si (dataType == BV_STATUS & & bvSerial.engineRunning == true)
bvSerial.startStopListening() ;
Vérifie si le type de données est le même que celui de la
Schéma de la voix
Si (dataType == BV_STR)
setLEDs() ;
}
bvSerial.strData
Sub setLEDs()
{
Si (bvSerial.strData == « wake »)
{
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
digitalWrite (pinR, HIGH) ;
digitalWrite (pinY, élevé) ;
digitalWrite (pinG, HIGH) ;
Delay(200) ;
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
Delay(200) ;
digitalWrite (pinR, HIGH) ;
digitalWrite (pinY, élevé) ;
digitalWrite (pinG, HIGH) ;
Delay(200) ;
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
Delay(200) ;
digitalWrite (pinR, HIGH) ;
digitalWrite (pinY, élevé) ;
digitalWrite (pinG, HIGH) ;
Delay(200) ;
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
Éclairement = 0 ;
}
ElseIf (bvSerial.strData == « veille »)
{
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
digitalWrite (pinR, HIGH) ;
digitalWrite (pinY, élevé) ;
digitalWrite (pinG, HIGH) ;
Delay(200) ;
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
Delay(200) ;
digitalWrite (pinR, HIGH) ;
digitalWrite (pinY, élevé) ;
digitalWrite (pinG, HIGH) ;
Delay(200) ;
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
Éclairement = 0 ;
}
ElseIf (bvSerial.strData == « RH »)
{
digitalWrite (pinR, HIGH) ;
Éclairement = 255 ;
}
ElseIf (bvSerial.strData == « RL »)
{
digitalWrite (pinR, faible) ;
Éclairement = 0 ;
}
ElseIf (bvSerial.strData == « YH »)
{
digitalWrite (pinY, élevé) ;
Éclairement = 255 ;
}
ElseIf (bvSerial.strData == « YL »)
{
digitalWrite (pinY, faible) ;
Éclairement = 0 ;
}
ElseIf (bvSerial.strData == « GH »)
{
digitalWrite (pinG, HIGH) ;
Éclairement = 255 ;
}
ElseIf (bvSerial.strData == « GL »)
{
digitalWrite (pinG, faible) ;
Éclairement = 0 ;
}
ElseIf (bvSerial.strData == « ALLON »)
{
digitalWrite (pinR, HIGH) ;
digitalWrite (pinY, élevé) ;
digitalWrite (pinG, HIGH) ;
Éclairement = 255 ;
}
ElseIf (bvSerial.strData == « ALLOFF »)
{
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
Éclairement = 0 ;
}
ElseIf (bvSerial.strData == « plus clair »)
{
Si (éclairement < 255)
{
Éclairement += 85 ;
analogWrite (pinR, éclairement) ;
analogWrite (pinY, éclairement) ;
analogWrite (pinG, éclairement) ;
}
}
ElseIf (bvSerial.strData == « sombre »)
{
Si (éclairement > 0)
{
Éclairement-= 85 ;
analogWrite (pinR, éclairement) ;
analogWrite (pinY, éclairement) ;
analogWrite (pinG, éclairement) ;
}
}
d’autre
{
bvSerial.startStopListening() ;
bvSerial.sendToBV ("ERROR:" + bvSerial.strData) ;
bvSerial.startStopListening() ;
}
}
Le schéma de voix de BitVoicer j’ai utilisé peut être téléchargé sur : http://www.justbuss.xpg.com.br/BitVoicerTest2.zip (vous devez avoir BitVoicer installé pour pouvoir l’ouvrir).
Maintenant, je veux commander quelques petites choses (lumières et ventilateur de plafond) à la maison. Suggestions sont les bienvenus.