00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MRCP_SYNTH_HEADER_H
00020 #define MRCP_SYNTH_HEADER_H
00021
00022
00023
00024
00025
00026
00027 #include "mrcp_types.h"
00028 #include "mrcp_header_accessor.h"
00029
00030 APT_BEGIN_EXTERN_C
00031
00032
00033 typedef enum {
00034 SYNTHESIZER_HEADER_JUMP_SIZE,
00035 SYNTHESIZER_HEADER_KILL_ON_BARGE_IN,
00036 SYNTHESIZER_HEADER_SPEAKER_PROFILE,
00037 SYNTHESIZER_HEADER_COMPLETION_CAUSE,
00038 SYNTHESIZER_HEADER_COMPLETION_REASON,
00039 SYNTHESIZER_HEADER_VOICE_GENDER,
00040 SYNTHESIZER_HEADER_VOICE_AGE,
00041 SYNTHESIZER_HEADER_VOICE_VARIANT,
00042 SYNTHESIZER_HEADER_VOICE_NAME,
00043 SYNTHESIZER_HEADER_PROSODY_VOLUME,
00044 SYNTHESIZER_HEADER_PROSODY_RATE,
00045 SYNTHESIZER_HEADER_SPEECH_MARKER,
00046 SYNTHESIZER_HEADER_SPEECH_LANGUAGE,
00047 SYNTHESIZER_HEADER_FETCH_HINT,
00048 SYNTHESIZER_HEADER_AUDIO_FETCH_HINT,
00049 SYNTHESIZER_HEADER_FAILED_URI,
00050 SYNTHESIZER_HEADER_FAILED_URI_CAUSE,
00051 SYNTHESIZER_HEADER_SPEAK_RESTART,
00052 SYNTHESIZER_HEADER_SPEAK_LENGTH,
00053 SYNTHESIZER_HEADER_LOAD_LEXICON,
00054 SYNTHESIZER_HEADER_LEXICON_SEARCH_ORDER,
00055
00056 SYNTHESIZER_HEADER_COUNT
00057 } mrcp_synthesizer_header_id;
00058
00059
00060
00061 typedef enum {
00062 SPEECH_UNIT_SECOND,
00063 SPEECH_UNIT_WORD,
00064 SPEECH_UNIT_SENTENCE,
00065 SPEECH_UNIT_PARAGRAPH,
00066
00067 SPEECH_UNIT_COUNT
00068 } mrcp_speech_unit_e;
00069
00070
00071 typedef enum {
00072 SPEECH_LENGTH_TYPE_TEXT,
00073 SPEECH_LENGTH_TYPE_NUMERIC_POSITIVE,
00074 SPEECH_LENGTH_TYPE_NUMERIC_NEGATIVE,
00075
00076 SPEECH_LENGTH_TYPE_UNKNOWN
00077 } mrcp_speech_length_type_e;
00078
00079
00080 typedef enum {
00081 VOICE_GENDER_MALE,
00082 VOICE_GENDER_FEMALE,
00083 VOICE_GENDER_NEUTRAL,
00084
00085 VOICE_GENDER_COUNT,
00086 VOICE_GENDER_UNKNOWN = VOICE_GENDER_COUNT
00087 } mrcp_voice_gender_e;
00088
00089
00090 typedef enum {
00091 PROSODY_VOLUME_TYPE_LABEL,
00092 PROSODY_VOLUME_TYPE_NUMERIC,
00093 PROSODY_VOLUME_TYPE_RELATIVE_CHANGE,
00094
00095 PROSODY_VOLUME_TYPE_UNKNOWN
00096 } mrcp_prosody_volume_type_e;
00097
00098
00099 typedef enum {
00100 PROSODY_RATE_TYPE_LABEL,
00101 PROSODY_RATE_TYPE_RELATIVE_CHANGE,
00102
00103 PROSODY_RATE_TYPE_UNKNOWN
00104 } mrcp_prosody_rate_type_e;
00105
00106
00107 typedef enum {
00108 PROSODY_VOLUME_SILENT,
00109 PROSODY_VOLUME_XSOFT,
00110 PROSODY_VOLUME_SOFT,
00111 PROSODY_VOLUME_MEDIUM,
00112 PROSODY_VOLUME_LOUD,
00113 PROSODY_VOLUME_XLOUD,
00114 PROSODY_VOLUME_DEFAULT,
00115
00116 PROSODY_VOLUME_COUNT,
00117 PROSODY_VOLUME_UNKNOWN = PROSODY_VOLUME_COUNT
00118 } mrcp_prosody_volume_label_e;
00119
00120
00121 typedef enum {
00122 PROSODY_RATE_XSLOW,
00123 PROSODY_RATE_SLOW,
00124 PROSODY_RATE_MEDIUM,
00125 PROSODY_RATE_FAST,
00126 PROSODY_RATE_XFAST,
00127 PROSODY_RATE_DEFAULT,
00128
00129 PROSODY_RATE_COUNT,
00130 PROSODY_RATE_UNKNOWN = PROSODY_RATE_COUNT
00131 } mrcp_prosody_rate_label_e;
00132
00133
00134 typedef enum {
00135 SYNTHESIZER_COMPLETION_CAUSE_NORMAL = 0,
00136 SYNTHESIZER_COMPLETION_CAUSE_BARGE_IN = 1,
00137 SYNTHESIZER_COMPLETION_CAUSE_PARSE_FAILURE = 2,
00138 SYNTHESIZER_COMPLETION_CAUSE_URI_FAILURE = 3,
00139 SYNTHESIZER_COMPLETION_CAUSE_ERROR = 4,
00140 SYNTHESIZER_COMPLETION_CAUSE_LANGUAGE_UNSUPPORTED = 5,
00141 SYNTHESIZER_COMPLETION_CAUSE_LEXICON_LOAD_FAILURE = 6,
00142 SYNTHESIZER_COMPLETION_CAUSE_CANCELLED = 7,
00143
00144 SYNTHESIZER_COMPLETION_CAUSE_COUNT = 8,
00145 SYNTHESIZER_COMPLETION_CAUSE_UNKNOWN = SYNTHESIZER_COMPLETION_CAUSE_COUNT
00146 } mrcp_synth_completion_cause_e;
00147
00148
00149
00150 typedef struct mrcp_speech_length_value_t mrcp_speech_length_value_t;
00151
00152 typedef struct mrcp_numeric_speech_length_t mrcp_numeric_speech_length_t;
00153
00154 typedef struct mrcp_prosody_param_t mrcp_prosody_param_t;
00155
00156 typedef struct mrcp_voice_param_t mrcp_voice_param_t;
00157
00158 typedef struct mrcp_prosody_rate_t mrcp_prosody_rate_t;
00159
00160 typedef struct mrcp_prosody_volume_t mrcp_prosody_volume_t;
00161
00162 typedef struct mrcp_synth_header_t mrcp_synth_header_t;
00163
00164
00165 struct mrcp_numeric_speech_length_t {
00166
00167 apr_size_t length;
00168
00169 mrcp_speech_unit_e unit;
00170 };
00171
00172
00173 struct mrcp_speech_length_value_t {
00174
00175 mrcp_speech_length_type_e type;
00176
00177 union {
00178
00179 apt_str_t tag;
00180
00181 mrcp_numeric_speech_length_t numeric;
00182 } value;
00183 };
00184
00185
00186 struct mrcp_voice_param_t {
00187
00188 mrcp_voice_gender_e gender;
00189
00190 apr_size_t age;
00191
00192 apr_size_t variant;
00193
00194 apt_str_t name;
00195 };
00196
00197
00198 struct mrcp_prosody_volume_t {
00199
00200 mrcp_prosody_volume_type_e type;
00201
00202
00203 union {
00204
00205 mrcp_prosody_volume_label_e label;
00206
00207 float numeric;
00208
00209 float relative;
00210 } value;
00211 };
00212
00213
00214 struct mrcp_prosody_rate_t {
00215
00216 mrcp_prosody_rate_type_e type;
00217
00218
00219 union {
00220
00221 mrcp_prosody_rate_label_e label;
00222
00223 float relative;
00224 } value;
00225 };
00226
00227
00228 struct mrcp_prosody_param_t {
00229
00230 mrcp_prosody_volume_t volume;
00231
00232 mrcp_prosody_rate_t rate;
00233 };
00234
00235
00236 struct mrcp_synth_header_t {
00237
00238
00239 mrcp_speech_length_value_t jump_size;
00240
00241
00242 apt_bool_t kill_on_barge_in;
00243
00244
00245
00246 apt_str_t speaker_profile;
00247
00248
00249 mrcp_synth_completion_cause_e completion_cause;
00250
00251
00252 apt_str_t completion_reason;
00253
00254 mrcp_voice_param_t voice_param;
00255
00256 mrcp_prosody_param_t prosody_param;
00257
00258 apt_str_t speech_marker;
00259
00260
00261 apt_str_t speech_language;
00262
00263
00264
00265 apt_str_t fetch_hint;
00266
00267
00268
00269 apt_str_t audio_fetch_hint;
00270
00271
00272
00273 apt_str_t failed_uri;
00274
00275
00276
00277
00278 apt_str_t failed_uri_cause;
00279
00280
00281
00282
00283 apt_bool_t speak_restart;
00284
00285
00286
00287 mrcp_speech_length_value_t speak_length;
00288
00289 apt_bool_t load_lexicon;
00290
00291
00292 apt_str_t lexicon_search_order;
00293 };
00294
00295
00296 const mrcp_header_vtable_t* mrcp_synth_header_vtable_get(mrcp_version_e version);
00297
00298
00299 MRCP_DECLARE(const apt_str_t*) mrcp_synth_completion_cause_get(mrcp_synth_completion_cause_e completion_cause, mrcp_version_e version);
00300
00301
00302 APT_END_EXTERN_C
00303
00304 #endif