/* SSML (Speech Synthesis Markup Language) processing APIs.
*
* Copyright (C) 2005 to 2015 by Jonathan Duddington
* email: jonsd@users.sourceforge.net
* Copyright (C) 2015-2018 Reece H. Dunn
* Copyright (C) 2018 Juho Hiltunen
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see: .
*/
#ifndef ESPEAK_NG_SSML_API
#define ESPEAK_NG_SSML_API
#include
#include
#include
#ifdef __cplusplus
extern "C"
{
#endif
// stack for language and voice properties
// frame 0 is for the defaults, before any ssml tags.
typedef struct {
int tag_type;
int voice_variant_number;
int voice_gender;
int voice_age;
char voice_name[40];
char language[20];
} SSML_STACK;
#define N_PARAM_STACK 20
#define SSML_SPEAK 1
#define SSML_VOICE 2
#define SSML_PROSODY 3
#define SSML_SAYAS 4
#define SSML_MARK 5
#define SSML_SENTENCE 6
#define SSML_PARAGRAPH 7
#define SSML_PHONEME 8
#define SSML_SUB 9
#define SSML_STYLE 10
#define SSML_AUDIO 11
#define SSML_EMPHASIS 12
#define SSML_BREAK 13
#define SSML_IGNORE_TEXT 14
#define HTML_BREAK 15
#define HTML_NOSPACE 16 // don't insert a space for this element, so it doesn't break a word
#define SSML_CLOSE 0x20 // for a closing tag, OR this with the tag type
int ProcessSsmlTag(wchar_t *xml_buf,
char *outbuf,
int *outix,
int n_outbuf,
bool self_closing,
const char *xmlbase,
bool *audio_text,
char *current_voice_id,
espeak_VOICE *base_voice,
char *base_voice_variant_name,
bool *ignore_text,
bool *clear_skipping_text,
int *sayas_mode,
int *sayas_start,
SSML_STACK *ssml_stack,
int *n_ssml_stack,
int *n_param_stack,
int *speech_parameters);
#ifdef __cplusplus
}
#endif
#endif