Liste der Anhänge anzeigen (Anzahl: 1)
speakjet mit mega 2560
halloallerseits,
angeregt durch basteluwes projekt für den RP6 baute ich auch etwas:
Anhang 31514
das modul funktioniert im demo modus,bei der verwendung eines sketches mit der arduino speakjet lib gab aber es beim kompilieren fehlermeldungen, die ich nicht verstanden habe,deshalb probierte ich diesen code, der ohne die lib auskommt
Code:
//set up a new software serial port
#include<SoftwareSerial.h>
//rxPin:the pin on which to receive serial data
//txPin:the pin on which to transmit serial data
//SpeakJet shield versions 1.0 thru 1.2 uses these pins
#definetxPin 2
#definerxPin 3
//SpeakJet shield version 1.3 or later uses these pins
//#definerxPin 5
//#definetxPin 6
//set up the SoftwareSerial port to connect to theSpeakJet
SoftwareSerialspeakJet = SoftwareSerial(rxPin, txPin);
voidsetup()
{
//define pin modes for tx, rx pins:
//pinMode(rxPin, INPUT); //not needed for this simpledemo
pinMode(txPin,OUTPUT);
speakJet.begin(9600);
delay(1000);// wait a second for the Arduino resets to finish (says"ready")
/*HELLO WORLD SpeakJet MSA phonemes (see page 16 of SpeakJet UserManual)
20,96, 21, 114, 22, 88, 23, 5, 183, 7, 159, 146, 164, 147, 151, 145,176
*/
//byte array holding speech data
bytesayThis[] = {20, 96, 21, 114, 22, 88, 23, 5, 183, 7, 159, 146, 164,147, 151, 145, 176}; //say "hello world"
//send it to the SpeakJet
for(int i=0; i<sizeof(sayThis); i++)
{
speakJet.write(sayThis[i]);
}
}
voidloop()
{}
das hört sich leider nicht wie "hello world" an...
Ich verstehe das so, dass die zu den codes zuhörigen phoneme aus dem speakjet chip mit dem sketch herausgelesen werden und nach der verstärkung wiedergegeben werde. Nur kommt da ganz was anderes an...
Ich habe verschiedene dinge an dem sketch ausprobiert, z.b. mit einer schleife verschiedene codes direkt zu senden:
Code:
void setup()
{
// define pin modes for tx, rx pins:
// pinMode(rxPin, INPUT); //not needed for this simple demo
pinMode(txPin, OUTPUT);
speakJet.begin(9600);
delay(1000); // wait a second for the Arduino resets to finish (says "ready")
}
void loop()
{
for (uint8_t i = 128; i <= 164; i++)
{
speakJet.write(i);
delay(500);
}
}
oder per direkte write anweisungen nur einzelne phoneme geschickt:
Code:
speakJet.write("147");
speakJet.write("191");
speakJet.write("156");
irgendwelche töne kamen immer an, nur nicht die, die ich erwartet habe :-(
Wo sollte ich nach der ursache suchen?
Liste der Anhänge anzeigen (Anzahl: 1)
das ding geht nun, ich denke ich muss aber die ganze geschichte erzählen:
- bestellt habe ich den speakjet bei sparkfun bereits am 10.3.
- am 6.4. bekam ich statt eines speakjet einen attiny85
- reklamiert, ersatzlieferung angefordert
- am 13.4. kam der speakjet
Anhang 31516
- reklamation und die frage von sparkfun was ich will: kaufpreis zurück oder noch einen speakjet
- habe also noch ein ersatz geordert, das verbogene beinchen gerichtet und damit die tests durchgeführt
- am 19.4. kam der ersatz und es funktioniert
ich mein, es ist schon ärgelich, wenn die zwei mal nacheinander so'n bockmist bauen...
Liste der Anhänge anzeigen (Anzahl: 5)
Zitat:
Zitat von
inka
übrigens Uwe, Deine Sätze für den RP6 (z.b. "RP6 is ready to go") klingen einfach super. Wie hast Du es genau gemacht?
Das ist recht einfach und macht sogar Spaß (mir zumindest). Das Geheimnis lautet: Phrase-A-Lator
Es ist eine Software, die von Magnevition kostenlos hier angeboten wird. Unten auf der Seite unter Dokumente gucken. Dann klemmst du den Speakjet über USB an den Computer.
Nach dem Start der Software hast du dieses Fenster:
Anhang 31522
Du wählst den richtigen Com Port und drückst auf Test. Der Speakjet sagt nun das übliche "ready" und das Port-Fenster wird grün, wenn alles OK ist.
Nun hast du jede Menge Möglichkeiten. Starte einfach mal den "Dictionary Editor":
Anhang 31523
Er zeigt alle Wörter, die schon vorab von jemandem definiert wurden, du also nicht mehr selbst "erfinden" musst. Hier werden auch die Wörter oder Phrasen abgelegt, die du selbst programmierst. Zum Test merke dir einfach ein Wort, das hier in der Liste schon drin ist und starte den Phrase editor:
Anhang 31524
In "Say Data" kannst du ein Wort, das es in der Liste schon gibt eintippen. dann auf "Say it" klicken und das Wort wird gesprochen.
Viel interessanter ist aber das selbst gestalten von neuen Wörtern. Einfach mal auf die buttons klicken und du hörst, was der Chip jeweils sagt. Bei Doppelklick auf einen button wird das Kommando in das Say Data Fenster übernommen. So kannst du die einzelnen Allophone aneinander reihen und auch Pausen usw. einfügen. Zwischendurch immer mal auf "Say it" klicken, um zu hören wie's klingt. Wenn du meinst es ist OK, kannst du die neue Phrase im Dictionary abspeichern. Bei Klick auf "View Codes" werden die Werte angezeigt, die eigentlich wichtig sind:
Anhang 31525
Das sind die Codes, die du per Programm übertragen musst, um dein neues Wort sprechen zu lassen. Die vier 20er Codes am Anfang (gelb) sind übrigens für die Funktion nicht unbedingt wichtig. Wenn sie fehlen benutzt der SpeakJet seine Default Werte dafür. Ich lass sie immer weg im Programm.
Abschließend noch einige Wörter, die ich selbst im Dictionary zugefügt habe und auch teilweise im RP6 nutze:
Anhang 31526
Na dann viel Spaß beim "Spielen" ;)
Gruß Uwe
P.S. Leider ist in der Software kein Simulator für die Wiedergabe eingebaut, man muß also tatsächlich den Speakjet immer an den Computer anschließen, um mit der Software arbeiten zu können. Ich finde das nachteilig, aber so ist es einfach.