Dieses Projekt ist ähnlich wie in meinem ersten Post (), aber jetzt benutze ich audio-streaming, um audio an BitVoicer zu senden.
Fritzing Schaltplan hinzugefügte diese instructable zeigt, wie ich mein Arduino Board verdrahtet.
Ich bin auch ein paar Bilder und ein YouTube-Video des laufenden Projekts hinzufügen.
Leider ist die Skizze schrieb ich für meinen ersten Beitrag nicht mehr durch die neue Version von BitVoicer unterstützt. Hier ist die neue Skizze:
#include < BitVoicer11.h >
Die BitVoicerSerial-Klasse instanziiert Speichert true, wenn das Audio-Streaming Kalibrierungs-Tool void setup() void loop() Diese Funktion führt jedes Mal, wenn serielle Daten verfügbar sind Führt die LED wechselt je nach dem Wert in
BitVoicerSerial BvSerial = BitVoicerSerial();
läuft
Boolesche Testdatei = False;
Speichert den Datentyp von getData() abgerufen
Datentyp Byte = 0;
Richtet die Stifte und Standard-Variablen
Int PinR = 3;
Int pinY = 5;
Int PinG = 6;
Int LightLevel = 0;
{
Setzt die analoge Bezugnahme auf externe (AREF Pin)
ACHTUNG!!! Wenn etwas mit dem AREF-Pin verbunden ist,
Diese Funktion muss zuerst aufgerufen werden. Andernfalls wird es
beschädigen Sie das Board.
bvSerial.setAnalogReference(BV_EXTERNAL);
Richtet den Mikrocontroller zu schneller analog Lesevorgänge ausführen
auf die angegebene pin
bvSerial.setAudioInput(0);
Serielle Kommunikation mit 115200 bps beginnt
Serial.Begin(115200);
Die PinModes richtet
PinMode (PinR, Ausgang);
PinMode (pinY, Ausgabe);
PinMode (pinG, Ausgang);
}
{
Nimmt Audio auf und sendet es an BitVoicer, wenn der Ton
Streaming-Kalibrierungs-Tool läuft
Wenn (Testdatei == True)
{
An die Funktion übergebene Wert ist die Zeit
(in Mikrosekunden), die die Funktion muss warten
Durchführung der Lesung. Es wird verwendet, um zu erreichen
8000 Messwerte pro Sekunde.
bvSerial.processAudio(46);
}
Nimmt Audio auf und sendet es an BitVoicer, wenn die Rede
Erkennungs-Engine läuft
Wenn (bvSerial.engineRunning)
{
An die Funktion übergebene Wert ist die Zeit
(in Mikrosekunden), die die Funktion muss warten
Durchführung der Lesung. Es wird verwendet, um zu erreichen
8000 Messwerte pro Sekunde.
bvSerial.processAudio(46);
}
}
in der seriellen Puffer nach einer Schleife
void serialEvent()
{
Die seriellen Puffer liest und speichert die empfangenen Daten-Art
Datentyp = bvSerial.getData();
Ändert sich der Wert der Testdatei wenn die empfangenen Daten wurde
der Start/Stopp-Probenahme-Befehl
Wenn (DataType == BV_COMMAND)
Testdatei = bvSerial.cmdData;
Signale BitVoicers Spracherkennungs-Engine starten
audio-Streams anhören, nachdem sich der EngineRunning status
wurde empfangen
Wenn (DataType == BV_STATUS & & bvSerial.engineRunning == True)
bvSerial.startStopListening();
Überprüft, ob der Datentyp identisch mit der in ist der
Stimme-Schema
Wenn (DataType == BV_STR)
setLEDs();
}
bvSerial.strData
void setLEDs()
{
Wenn (bvSerial.strData == "wake")
{
DigitalWrite (PinR, LOW);
DigitalWrite (pinY, niedrig);
DigitalWrite (PinG, LOW);
DigitalWrite (PinR, HIGH);
DigitalWrite (pinY, hoch);
DigitalWrite (PinG, HIGH);
Delay(200);
DigitalWrite (PinR, LOW);
DigitalWrite (pinY, niedrig);
DigitalWrite (PinG, LOW);
Delay(200);
DigitalWrite (PinR, HIGH);
DigitalWrite (pinY, hoch);
DigitalWrite (PinG, HIGH);
Delay(200);
DigitalWrite (PinR, LOW);
DigitalWrite (pinY, niedrig);
DigitalWrite (PinG, LOW);
Delay(200);
DigitalWrite (PinR, HIGH);
DigitalWrite (pinY, hoch);
DigitalWrite (PinG, HIGH);
Delay(200);
DigitalWrite (PinR, LOW);
DigitalWrite (pinY, niedrig);
DigitalWrite (PinG, LOW);
LightLevel = 0;
}
ElseIf (bvSerial.strData == "Schlaf")
{
DigitalWrite (PinR, LOW);
DigitalWrite (pinY, niedrig);
DigitalWrite (PinG, LOW);
DigitalWrite (PinR, HIGH);
DigitalWrite (pinY, hoch);
DigitalWrite (PinG, HIGH);
Delay(200);
DigitalWrite (PinR, LOW);
DigitalWrite (pinY, niedrig);
DigitalWrite (PinG, LOW);
Delay(200);
DigitalWrite (PinR, HIGH);
DigitalWrite (pinY, hoch);
DigitalWrite (PinG, HIGH);
Delay(200);
DigitalWrite (PinR, LOW);
DigitalWrite (pinY, niedrig);
DigitalWrite (PinG, LOW);
LightLevel = 0;
}
ElseIf (bvSerial.strData == "RH")
{
DigitalWrite (PinR, HIGH);
LightLevel = 255;
}
ElseIf (bvSerial.strData == "RL")
{
DigitalWrite (PinR, LOW);
LightLevel = 0;
}
ElseIf (bvSerial.strData == "YH")
{
DigitalWrite (pinY, hoch);
LightLevel = 255;
}
ElseIf (bvSerial.strData == "YL")
{
DigitalWrite (pinY, niedrig);
LightLevel = 0;
}
ElseIf (bvSerial.strData == "GH")
{
DigitalWrite (PinG, HIGH);
LightLevel = 255;
}
ElseIf (bvSerial.strData == "GL")
{
DigitalWrite (PinG, LOW);
LightLevel = 0;
}
ElseIf (bvSerial.strData == "ALLON")
{
DigitalWrite (PinR, HIGH);
DigitalWrite (pinY, hoch);
DigitalWrite (PinG, HIGH);
LightLevel = 255;
}
ElseIf (bvSerial.strData == "ALLOFF")
{
DigitalWrite (PinR, LOW);
DigitalWrite (pinY, niedrig);
DigitalWrite (PinG, LOW);
LightLevel = 0;
}
ElseIf (bvSerial.strData == "heller")
{
Wenn (LightLevel < 255)
{
LightLevel += 85;
AnalogWrite (PinR, LightLevel);
AnalogWrite (pinY, LightLevel);
AnalogWrite (PinG, LightLevel);
}
}
ElseIf (bvSerial.strData == "dunkler")
{
Wenn (LightLevel > 0)
{
LightLevel = 85;
AnalogWrite (PinR, LightLevel);
AnalogWrite (pinY, LightLevel);
AnalogWrite (PinG, LightLevel);
}
}
anderes
{
bvSerial.startStopListening();
bvSerial.sendToBV ("ERROR:" + bvSerial.strData);
bvSerial.startStopListening();
}
}
Ich verwendete BitVoicer-Voice-Schema kann von heruntergeladen werden: http://www.justbuss.xpg.com.br/BitVoicerTest2.zip (Du musst BitVoicer installiert, um in der Lage sein es zu öffnen).
Jetzt ich ein paar Dinge (Lichter und Decke Ventilator) zu Hause zu kontrollieren möchte. Anregungen sind sehr willkommen.