Twitter aktiverad Text till tal (1 / 5 steg)
Steg 1: Tråd upp SpeakJet med Arduino
När du binder upp krets och ladda upp koden nedan (skriven av Sparkfun folk), SpeakJet kommer att säga "redo" sedan ut det budskap "din bas är tillhöra oss" Robot-Speak röst följt av några R2D2-esque signaler och lyser upp gröna LED bifogas pin 16. (Naturligtvis, du kommer att behöva koppla in en högtalare mellan pin 18 av SpeakJet, märkt "V_OUT" i schematiskt ovan och GND för att höra detta budskap). Jag använde en liten, 8 Ohm högtalare och bara hörde budskapet mycket svagt (det är därför det är bra att så småningom förstärka utdata från SpeakJet innan det skickas till högtalare). Tryck på den Arduino återställningsknappen (Fig. 4) att höra meddelandet så många gånger du vill.
/*
Struphuvudet Demo skiss
Skrivet av Ryan Owens
SparkFun elektronik
Använder röst rutan sköld från SparkFun för att skicka meddelandet "Alla din bas är tillhöra oss" och en rad
robot ljud till SpeakJet chip på skölden.
En högtalare kan anslutas direkt till den SPK + och -pins på skölden.
*/
Mjuk seriell bibliotek används för att skicka seriella kommandon på pin 2 istället för vanlig seriell pin.
#include < SoftwareSerial.h >
Definiera Pin-koder för skissen.
#define E0 5
#define E1 6
#define E2 7
#define E3 8
#define E4 9
#define E5 10
#define E6 11
#define E7 12
#define RDY 13
#define RES 3
#define SPK 4
#define txPin 2
Skapa en SoftSerial Objet
SoftwareSerial speakjet = SoftwareSerial (0, txPin);
Arrayen meddelande innehåller kommandot för ljud skickas i ordning till inunciate orden "alla din bas tillhör oss." Kolla SpeakJet manualen för mer information
på att producera ord
Alla din bas är tillhöra oss
char meddelande [] = {20, 96, 21, 114, 22, 88, 23, 5, 8, 135, 8, 146, 5, 128, 153, 5, 170, 154, 8, 188, 5, 152, 5, 170, 8,128,146,8,135,8,144,5,8,191,162,5,8,134,187};
Ljud matris innehåller kommandon för att skicka robot ljud till SpeakJet chip.
char ljud [] = {200, 201, 202, 203, 220, 221, 222};
void setup()
{
Konfigurera stiften för modulen SpeakJet
pinMode (txPin, produktionen);
pinMode (SPK, indata);
Konfigurera en seriell port att prata från Arduino modulen SpeakJet på stift 3.
speakjet.BEGIN(9600);
Konfigurera redo PIN-koden som indata
pinMode (RDY, indata);
Konfigurera Återställ linje som en utgång
pinMode (RES, OUTPUT);
Konfigurera alla Event stift som utgångar från Arduino och ange dem låg.
för (int jag = E0; jag < = E7; i ++)
{
pinMode (i, matas);
digitalWrite (i, låg);
}
Alla I/O stift är konfigurerade. Återställa modulen SpeakJet
digitalWrite (RES, låg);
Delay(100);
digitalWrite (RES, hög);
}
void loop()
{
Skicka "All Your Base är hör hemma till oss" till modulen SpeakJet
speakjet.Print(Message);
Vänta innan du skickar nästa strängen.
Delay(3000);
Skicka de robotliknande ljud till modulen.
speakjet.Print(Sounds);
While(1);
}
Om du vill lägga till dig egna meddelanden till denna kod kan du använda SpeakJet ordbok som referens. Jag ska gå igenom ett exempel här. Jag vill få SpeakJet att säga frasen "Amanda är rad." Det första jag gör är konstruera varje ord baserat på exemplen i SpeakJet ordbok. För "Amanda" har vi:
man = \MM \SLOW \AY \SLOW \NE
Anka = \DO \SLOW \UX \KE
Kombinera dessa för att få
Amanda = \SLOW \UX \MM \SLOW \AY \SLOW \NE \DO \SLOW \UX
"är" finns med i ordlistan:
är = \SLOW \IH \ZZ
för "rad" kombinerar följande:
kanin = \SLOW \RR \AY \BE \RELAX \IH \TT
röd = \RR \SLOW \EH \ED
att få:
rad = \SLOW \RR \AY \ED
Sidorna 15 och 16 i SpeakJet bruksanvisning ger alla numeriska koder för varje av dessa ljud. Här är mitt exempel transkriberas till numerisk form:
Amanda = \SLOW \UX \MM \SLOW \AY \SLOW \NE \DO \SLOW \UX är = \SLOW \IH \ZZ rad = \SLOW \RR \AY \ED
Amanda = 8 134 140 8 132 8 141 175 8 134
är = 8 129 167
rad = 8 148 132 176
Vi kan ställa in volymen, hastighet och andra parametrar av anförandet genom att ringa nummer 20-23, jag kopierade följande värden från Sparkfun koden ovan:
20, 96, 21, 114, 22, 88, 23, 5,
Detta anger volymen (20) till 96, hastighet (21) 114, Pitch (22) till 88 och böj (23) till 5. Du kan leka med dessa siffror vill veta mer om hur de fungerar. Om du läser tabellen på sidan 15 i SpeakJet manualen kan du hitta om andra Kontrollkommandon, samt hur man infoga pauser i ditt tal.
Att sätta detta alla tillsammans, jag har i följande nummer:
{20, 96, 21, 114, 22, 88, 23, 5, 8, 134, 140, 8, 132, 8, 141, 175, 8, 134, 8, 129, 167, 8, 148, 132, 176}
Och här är den sista koden, mestadels kopieras direkt från Sparkfun koden ovan (jag gjorde sist "a" och "d" i "rad" långsamt genom att sätta en extra 8 framför nummer 132 och 176 att få dessa delar att låta lite mer klart):
/*
"Amanda är rad"
av Amanda Ghassaei
Modifierad från struphuvudet Demo skiss
Skrivet av Ryan Owens
SparkFun elektronik
*/
Mjuk seriell bibliotek används för att skicka seriella kommandon på pin 2 istället för vanlig seriell pin.
#include < SoftwareSerial.h >
Definiera Pin-koder för skissen.
#define E0 5
#define E1 6
#define E2 7
#define E3 8
#define E4 9
#define E5 10
#define E6 11
#define E7 12
#define RDY 13
#define RES 3
#define SPK 4
#define txPin 2
Skapa en SoftSerial Objet
SoftwareSerial speakjet = SoftwareSerial (0, txPin);
char meddelande [] = {20, 96, 21, 114, 22, 88, 23, 5, 8, 134, 140, 8, 132, 8, 141, 175, 8, 134, 8, 129, 167, 8, 148, 8, 132, 8, 176};
void setup()
{
Konfigurera stiften för modulen SpeakJet
pinMode (txPin, produktionen);
pinMode (SPK, indata);
Konfigurera en seriell port att prata från Arduino modulen SpeakJet på stift 3.
speakjet.BEGIN(9600);
Konfigurera redo PIN-koden som indata
pinMode (RDY, indata);
Konfigurera Återställ linje som en utgång
pinMode (RES, OUTPUT);
Konfigurera alla Event stift som utgångar från Arduino och ange dem låg.
för (int jag = E0; jag < = E7; i ++)
{
pinMode (i, matas);
digitalWrite (i, låg);
}
Alla I/O stift är konfigurerade. Återställa modulen SpeakJet
digitalWrite (RES, låg);
Delay(100);
digitalWrite (RES, hög);
}
void loop()
{
Delay(1000);
speakjet.Print(Message);
While(1);
}