SP03 Text to Speech Synthesizer

Committer:
yangcq88517
Date:
Wed May 07 13:52:08 2014 +0000
Revision:
0:2326b6172834
Child:
1:58ab657cd515
SP03 I2C

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yangcq88517 0:2326b6172834 1 #include "SP03.h"
yangcq88517 0:2326b6172834 2
yangcq88517 0:2326b6172834 3 SP03::SP03(PinName sda, PinName scl): i2c_bus(sda,scl)
yangcq88517 0:2326b6172834 4 {
yangcq88517 0:2326b6172834 5 i2c_bus.frequency(CLOCK_RATE);
yangcq88517 0:2326b6172834 6 }
yangcq88517 0:2326b6172834 7
yangcq88517 0:2326b6172834 8 void SP03::_speak(const char message[],SmartLab_SP03::Speech_Speed speed, SmartLab_SP03::Speech_Volume volume,uint8_t pitch)
yangcq88517 0:2326b6172834 9 {
yangcq88517 0:2326b6172834 10 char speakout[2];
yangcq88517 0:2326b6172834 11 speakout[0] = REGISTER_FOR_COMMAND;
yangcq88517 0:2326b6172834 12 speakout[1] = SPEAK_OUT_THE_BUFFER;
yangcq88517 0:2326b6172834 13 int length = 6 + strlen(message);
yangcq88517 0:2326b6172834 14 char _message[length];
yangcq88517 0:2326b6172834 15 _message[0] = REGISTER_FOR_COMMAND;
yangcq88517 0:2326b6172834 16 _message[1] = 0x00;
yangcq88517 0:2326b6172834 17 _message[2] = volume;
yangcq88517 0:2326b6172834 18 _message[3] = speed;
yangcq88517 0:2326b6172834 19 _message[4] = pitch;
yangcq88517 0:2326b6172834 20 for (int i = 5; i < length; i++)
yangcq88517 0:2326b6172834 21 _message[i] = message[i - 5];
yangcq88517 0:2326b6172834 22 i2c_bus.write(DEFAULT_ADDRESS, _message, length);
yangcq88517 0:2326b6172834 23 i2c_bus.write(DEFAULT_ADDRESS, speakout, 2);
yangcq88517 0:2326b6172834 24 }
yangcq88517 0:2326b6172834 25
yangcq88517 0:2326b6172834 26 void SP03::Speak(const char message[])
yangcq88517 0:2326b6172834 27 {
yangcq88517 0:2326b6172834 28 _speak(message, SmartLab_SP03::NORMAL, SmartLab_SP03::MAX, DEFAULT_SPEECH_PITCH);
yangcq88517 0:2326b6172834 29 }
yangcq88517 0:2326b6172834 30
yangcq88517 0:2326b6172834 31 void SP03::Speak(const char message[],SmartLab_SP03::Speech_Speed speed, SmartLab_SP03::Speech_Volume volume)
yangcq88517 0:2326b6172834 32 {
yangcq88517 0:2326b6172834 33 _speak(message, speed, volume, DEFAULT_SPEECH_PITCH);
yangcq88517 0:2326b6172834 34 }
yangcq88517 0:2326b6172834 35
yangcq88517 0:2326b6172834 36 void SP03::Speak(const char message[],SmartLab_SP03::Speech_Speed speed, SmartLab_SP03::Speech_Volume volume,uint8_t pitch)
yangcq88517 0:2326b6172834 37 {
yangcq88517 0:2326b6172834 38 _speak(message, speed, volume, pitch);
yangcq88517 0:2326b6172834 39 }
yangcq88517 0:2326b6172834 40
yangcq88517 0:2326b6172834 41 bool SP03::IsSpeaking()
yangcq88517 0:2326b6172834 42 {
yangcq88517 0:2326b6172834 43 char m[1]= {REGISTER_FOR_COMMAND};
yangcq88517 0:2326b6172834 44 i2c_bus.write(DEFAULT_ADDRESS,m ,1);
yangcq88517 0:2326b6172834 45 i2c_bus.read(DEFAULT_ADDRESS, m, 1);
yangcq88517 0:2326b6172834 46 if (m[0] == 0x00)
yangcq88517 0:2326b6172834 47 return false;
yangcq88517 0:2326b6172834 48 else return true;
yangcq88517 0:2326b6172834 49 }