ESPEAK_API espeak_ERROR espeak_Char(wchar_t character) {//=========================================== ENTER("espeak_Char"); // is there a system resource of character names per language? if(f_logespeak) { fprintf(f_logespeak,"\nCHAR U+%x\n",character); } #ifdef USE_ASYNC espeak_ERROR a_error; if(synchronous_mode) { sync_espeak_Char(character); return(EE_OK); } t_espeak_command* c = create_espeak_char( character, NULL); a_error = fifo_add_command(c); if (a_error != EE_OK) { delete_espeak_command(c); } return a_error; #else sync_espeak_Char(character); return(EE_OK); #endif }
ESPEAK_NG_API espeak_ng_STATUS espeak_ng_SpeakCharacter(wchar_t character) { // is there a system resource of character names per language? #ifdef USE_ASYNC if (my_mode & ENOUTPUT_MODE_SYNCHRONOUS) return sync_espeak_Char(character); t_espeak_command *c = create_espeak_char(character, NULL); espeak_ng_STATUS status = fifo_add_command(c); if (status != ENS_OK) delete_espeak_command(c); return status; #else return sync_espeak_Char(character); #endif }
espeak_ng_STATUS sync_espeak_Key(const char *key) { // symbolic name, symbolicname_character - is there a system resource of symbolic names per language? int letter; int ix; ix = utf8_in(&letter, key); if (key[ix] == 0) // a single character return sync_espeak_Char(letter); my_unique_identifier = 0; my_user_data = NULL; return Synthesize(0, key, 0); // speak key as a text string }
//> //< process_espeak_command void process_espeak_command( t_espeak_command* the_command) { ENTER("process_espeak_command"); SHOW("command=0x%x\n", the_command); if (the_command == NULL) { return; } the_command->state = CS_PROCESSED; switch(the_command->type) { case ET_TEXT: { t_espeak_text* data = &(the_command->u.my_text); sync_espeak_Synth( data->unique_identifier, data->text, data->size, data->position, data->position_type, data->end_position, data->flags, data->user_data); } break; case ET_MARK: { t_espeak_mark* data = &(the_command->u.my_mark); sync_espeak_Synth_Mark( data->unique_identifier, data->text, data->size, data->index_mark, data->end_position, data->flags, data->user_data); } break; case ET_TERMINATED_MSG: { t_espeak_terminated_msg* data = &(the_command->u.my_terminated_msg); sync_espeak_terminated_msg( data->unique_identifier, data->user_data); } break; case ET_KEY: { const char* data = the_command->u.my_key.key_name; sync_espeak_Key(data); } break; case ET_CHAR: { const wchar_t data = the_command->u.my_char.character; sync_espeak_Char( data); } break; case ET_PARAMETER: { t_espeak_parameter* data = &(the_command->u.my_param); SetParameter( data->parameter, data->value, data->relative); } break; case ET_PUNCTUATION_LIST: { const wchar_t* data = the_command->u.my_punctuation_list; sync_espeak_SetPunctuationList( data); } break; case ET_VOICE_NAME: { const char* data = the_command->u.my_voice_name; SetVoiceByName( data); } break; case ET_VOICE_SPEC: { espeak_VOICE* data = &(the_command->u.my_voice_spec); SetVoiceByProperties(data); } break; default: assert(0); break; } }