mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-05 14:47:26 +00:00
phoneme: add a phoneme_add_feature internal API method.
This commit is contained in:
@@ -41,6 +41,7 @@ typedef enum {
|
||||
ENS_GROUP_ERRNO = 0x00000000, /* Values 0-255 map to errno error codes. */
|
||||
ENS_GROUP_ESPEAK_NG = 0x10000000, /* eSpeak NG error codes. */
|
||||
|
||||
/* eSpeak NG 1.49.0 */
|
||||
ENS_OK = 0,
|
||||
ENS_COMPILE_ERROR = 0x100001FF,
|
||||
ENS_VERSION_MISMATCH = 0x100002FF,
|
||||
@@ -56,6 +57,9 @@ typedef enum {
|
||||
ENS_NO_SPECT_FRAMES = 0x10000CFF,
|
||||
ENS_EMPTY_PHONEME_MANIFEST = 0x10000DFF,
|
||||
ENS_SPEECH_STOPPED = 0x10000EFF,
|
||||
|
||||
/* eSpeak NG 1.49.2 */
|
||||
ENS_UNKNOWN_PHONEME_FEATURE = 0x10000FFF,
|
||||
} espeak_ng_STATUS;
|
||||
|
||||
typedef enum {
|
||||
|
||||
@@ -2054,6 +2054,9 @@ int CompilePhoneme(int compile_phoneme)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (phoneme_add_feature(phoneme_out, item_string, NULL) == ENS_OK)
|
||||
continue;
|
||||
|
||||
switch (item_type)
|
||||
{
|
||||
case tPHONEME_TYPE:
|
||||
|
||||
@@ -121,6 +121,9 @@ ESPEAK_NG_API void espeak_ng_GetStatusCodeMessage(espeak_ng_STATUS status, char
|
||||
case ENS_EMPTY_PHONEME_MANIFEST:
|
||||
strncpy0(buffer, "The phoneme manifest file does not contain any phonemes", length);
|
||||
break;
|
||||
case ENS_UNKNOWN_PHONEME_FEATURE:
|
||||
strncpy0(buffer, "The phoneme feature is not recognised", length);
|
||||
break;
|
||||
default:
|
||||
if ((status & ENS_GROUP_MASK) == ENS_GROUP_ERRNO)
|
||||
strerror_r(status, buffer, length);
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (C) 2016 Reece H. Dunn
|
||||
*
|
||||
* 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: <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include <espeak-ng/espeak_ng.h>
|
||||
#include <espeak-ng/speak_lib.h>
|
||||
|
||||
#include "phoneme.h"
|
||||
#include "speech.h"
|
||||
#include "error.h"
|
||||
|
||||
enum feature_t {
|
||||
inv, // invalid phoneme feature name
|
||||
};
|
||||
|
||||
static MNEM_TAB features[] = {
|
||||
{ NULL, inv },
|
||||
};
|
||||
|
||||
espeak_ng_STATUS
|
||||
phoneme_add_feature(PHONEME_TAB *phoneme,
|
||||
const char *feature,
|
||||
espeak_ng_ERROR_CONTEXT *context)
|
||||
{
|
||||
if (!phoneme || !feature) return -EINVAL;
|
||||
|
||||
switch (LookupMnem(features, feature))
|
||||
{
|
||||
default:
|
||||
return ENS_UNKNOWN_PHONEME_FEATURE;
|
||||
}
|
||||
return ENS_OK;
|
||||
}
|
||||
@@ -113,6 +113,11 @@ typedef struct {
|
||||
unsigned char length_mod; // a length_mod group number, used to access length_mod_tab
|
||||
} PHONEME_TAB;
|
||||
|
||||
espeak_ng_STATUS
|
||||
phoneme_add_feature(PHONEME_TAB *phoneme,
|
||||
const char *feature,
|
||||
espeak_ng_ERROR_CONTEXT *context);
|
||||
|
||||
// Several phoneme tables may be loaded into memory. phoneme_tab points to
|
||||
// one for the current voice
|
||||
extern int n_phoneme_tab;
|
||||
|
||||
Reference in New Issue
Block a user