//Wait 12ms before checking the ready line (specified in TTS256 datasheet) delay(12); //Wait for the Speakjet to become 'ready' before sending more text. while(digitalRead(RDY)==0);}

//Function: getMessage(char *)//Description: Retrieves a string from the Serial port. Doesn't return the string until a carriage return character is detected.//Inputs: None//Outputs: char * message - The message received on the serial port.//Returns: Nothing//usage: getMessage(english_sentance);void getMessage(char * message){ char in_char=0; //Create a character to store the incoming byte from the serial port. //Wait for a character to come into the serial port while(Serial.available() <=0); //Copy the incoming character to our variable. in_char=Serial.read(); //Keep retreiving characters until the 'end of sentance(0x0D)' character is received. while(in_char != 0x0D){ *message++=in_char; //Every time we receive a character we should add the character to the message string. while(Serial.available() <=0); //Now wait for the next character... in_char = Serial.read(); //and copy it to the variable again. } *message='\0'; //Strings must end with a Null terminator so we need to add this to our message. return;}

For example speakjet.println("Test\375"); that works but if i type Test\375 from the serial monitor it speaks the \ 3 7 5.

When the compiler runs, it sees the \375 in the string, and substitutes a different value. The string that is passed to the speakjet.println function does not contain a \ and the characters 3, 7, and 5.

In your code to read from the serial port, you need to make that same substitution. The value following the \ is an octal value.