Voor het genereren van de stem van Zyptar gebruik ik de Emic 2 Text tot Speech generator. https://www.parallax.com/product/30016
De generator gebruikt een seriƫle poort, dus je hebt een schrijfpin en een leespin die je aan moet sluiten. Ik heb pin 51 en 53 gebruikt.
Er is een demoprogrammaatje van Joe Grand [www.grandideastudio.com] dat ik een beetje heb aangepast.
#include <SoftwareSerial.h>
#define rxPin 51 // Serial input (connects to Emic 2 SOUT)
#define txPin 53 // Serial output (connects to Emic 2 SIN)
#define ledPin 13 // Most Arduino boards have an on-board LED on this pin
// set up a new serial port
SoftwareSerial emicSerial = SoftwareSerial(rxPin, txPin);
void setup() // Set up code called once on start-up
{
// define pin modes
pinMode(ledPin, OUTPUT);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
// set the data rate for the SoftwareSerial port
emicSerial.begin(9600);
digitalWrite(ledPin, LOW); // turn LED off
/*
When the Emic 2 powers on, it takes about 3 seconds for it to successfully
intialize. It then sends a ":" character to indicate it's ready to accept
commands. If the Emic 2 is already initialized, a CR will also cause it
to send a ":"
*/
emicSerial.print('\n'); // Send a CR in case the system is already up
while (emicSerial.read() != ':'); // When the Emic 2 has initialized and is ready, it will send a single ':' character, so wait here until we receive it
delay(10); // Short delay
emicSerial.flush(); // Flush the receive buffer
}
void loop() // Main code, to run repeatedly
{
// Speak some text
emicSerial.print("N1");
emicSerial.print('\n');
while (emicSerial.read() != ':');
emicSerial.print('S');
emicSerial.print("Whaaaat, this is an insult. Only twenty cents? You make Zoltar very angry"); // Send the desired string to convert to speech
emicSerial.print('\n');
digitalWrite(ledPin, HIGH); // Turn on LED while Emic is outputting audio
while (emicSerial.read() != ':');
while(1) // Demonstration complete!
{
delay(500);
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
}
}
Wat dit dus doet is de Emic 2 initialiseren en stem 1 kiezen (emicSerial.print("N1");). Dit is de stem met de meeste bas er in, dus het meest "mannelijk".
En dan zegt Zyptar:
Whaaaat, this is an insult. Only twenty cents? You make Zoltar very angry
Luister naar de video, dan hoor je hoe de generator klinkt.
Beetje zoals Stephen Hawkins. Ik weet niet of ik er zo blij mee ben. Misschien dat ik de teksten toch op ga nemen en als MP3 afspelen. Dat is wel veel meer werk. Hiermee hoef ik alleen tekstjes te typen.
Proefopstelling |
Er is een demoprogrammaatje van Joe Grand [www.grandideastudio.com] dat ik een beetje heb aangepast.
#include <SoftwareSerial.h>
#define rxPin 51 // Serial input (connects to Emic 2 SOUT)
#define txPin 53 // Serial output (connects to Emic 2 SIN)
#define ledPin 13 // Most Arduino boards have an on-board LED on this pin
// set up a new serial port
SoftwareSerial emicSerial = SoftwareSerial(rxPin, txPin);
void setup() // Set up code called once on start-up
{
// define pin modes
pinMode(ledPin, OUTPUT);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
// set the data rate for the SoftwareSerial port
emicSerial.begin(9600);
digitalWrite(ledPin, LOW); // turn LED off
/*
When the Emic 2 powers on, it takes about 3 seconds for it to successfully
intialize. It then sends a ":" character to indicate it's ready to accept
commands. If the Emic 2 is already initialized, a CR will also cause it
to send a ":"
*/
emicSerial.print('\n'); // Send a CR in case the system is already up
while (emicSerial.read() != ':'); // When the Emic 2 has initialized and is ready, it will send a single ':' character, so wait here until we receive it
delay(10); // Short delay
emicSerial.flush(); // Flush the receive buffer
}
void loop() // Main code, to run repeatedly
{
// Speak some text
emicSerial.print("N1");
emicSerial.print('\n');
while (emicSerial.read() != ':');
emicSerial.print('S');
emicSerial.print("Whaaaat, this is an insult. Only twenty cents? You make Zoltar very angry"); // Send the desired string to convert to speech
emicSerial.print('\n');
digitalWrite(ledPin, HIGH); // Turn on LED while Emic is outputting audio
while (emicSerial.read() != ':');
while(1) // Demonstration complete!
{
delay(500);
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
}
}
Wat dit dus doet is de Emic 2 initialiseren en stem 1 kiezen (emicSerial.print("N1");). Dit is de stem met de meeste bas er in, dus het meest "mannelijk".
En dan zegt Zyptar:
Whaaaat, this is an insult. Only twenty cents? You make Zoltar very angry
Luister naar de video, dan hoor je hoe de generator klinkt.
Beetje zoals Stephen Hawkins. Ik weet niet of ik er zo blij mee ben. Misschien dat ik de teksten toch op ga nemen en als MP3 afspelen. Dat is wel veel meer werk. Hiermee hoef ik alleen tekstjes te typen.
Geen opmerkingen:
Een reactie posten