mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 21:39:47 +00:00
phoneme: pass the feature enum value to phoneme_add_feature.
This commit is contained in:
@@ -2016,7 +2016,9 @@ int CompilePhoneme(int compile_phoneme)
|
||||
error("Missing 'endphoneme' before end-of-file"); // end of file
|
||||
break;
|
||||
}
|
||||
if (phoneme_add_feature(phoneme_out, item_string, NULL) == ENS_OK)
|
||||
|
||||
phoneme_feature_t feature = phoneme_feature_from_string(item_string);
|
||||
if (phoneme_add_feature(phoneme_out, feature) == ENS_OK)
|
||||
continue;
|
||||
error("Bad keyword in phoneme definition '%s'", item_string);
|
||||
continue;
|
||||
|
||||
@@ -74,27 +74,6 @@ create_version_mismatch_error_context(espeak_ng_ERROR_CONTEXT *context,
|
||||
return ENS_VERSION_MISMATCH;
|
||||
}
|
||||
|
||||
espeak_ng_STATUS
|
||||
create_name_error_context(espeak_ng_ERROR_CONTEXT *context,
|
||||
espeak_ng_STATUS status,
|
||||
const char *name)
|
||||
{
|
||||
if (context) {
|
||||
if (*context) {
|
||||
free((*context)->name);
|
||||
} else {
|
||||
*context = malloc(sizeof(espeak_ng_ERROR_CONTEXT_));
|
||||
if (!*context)
|
||||
return ENOMEM;
|
||||
}
|
||||
(*context)->type = ERROR_CONTEXT_NAME;
|
||||
(*context)->name = strdup(name);
|
||||
(*context)->version = 0;
|
||||
(*context)->expected_version = 0;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
#pragma GCC visibility push(default)
|
||||
|
||||
ESPEAK_NG_API void
|
||||
@@ -182,9 +161,6 @@ espeak_ng_PrintStatusCodeMessage(espeak_ng_STATUS status,
|
||||
fprintf(out, "Error: %s at '%s' (expected 0x%x, got 0x%x).\n",
|
||||
error, context->name, context->expected_version, context->version);
|
||||
break;
|
||||
case ERROR_CONTEXT_NAME:
|
||||
fprintf(out, "Error: %s (got \"%s\").\n", error, context->name);
|
||||
break;
|
||||
}
|
||||
} else
|
||||
fprintf(out, "Error: %s.\n", error);
|
||||
|
||||
@@ -27,7 +27,6 @@ typedef enum
|
||||
{
|
||||
ERROR_CONTEXT_FILE,
|
||||
ERROR_CONTEXT_VERSION,
|
||||
ERROR_CONTEXT_NAME,
|
||||
} espeak_ng_CONTEXT_TYPE;
|
||||
|
||||
typedef struct espeak_ng_ERROR_CONTEXT_
|
||||
@@ -49,11 +48,6 @@ create_version_mismatch_error_context(espeak_ng_ERROR_CONTEXT *context,
|
||||
int version,
|
||||
int expected_version);
|
||||
|
||||
espeak_ng_STATUS
|
||||
create_name_error_context(espeak_ng_ERROR_CONTEXT *context,
|
||||
espeak_ng_STATUS status,
|
||||
const char *name);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -25,22 +25,20 @@
|
||||
#include <espeak-ng/speak_lib.h>
|
||||
|
||||
#include "phoneme.h"
|
||||
#include "error.h"
|
||||
|
||||
uint32_t lookup_feature(const char *feature) {
|
||||
if (strlen(feature) != 3)
|
||||
phoneme_feature_t phoneme_feature_from_string(const char *feature)
|
||||
{
|
||||
if (!feature || strlen(feature) != 3)
|
||||
return inv;
|
||||
return (feature[0] << 16) | (feature[1] << 8) | feature[2];
|
||||
}
|
||||
|
||||
espeak_ng_STATUS
|
||||
phoneme_add_feature(PHONEME_TAB *phoneme,
|
||||
const char *feature,
|
||||
espeak_ng_ERROR_CONTEXT *context)
|
||||
phoneme_feature_t feature)
|
||||
{
|
||||
if (!phoneme || !feature) return EINVAL;
|
||||
|
||||
switch (lookup_feature(feature))
|
||||
if (!phoneme) return EINVAL;
|
||||
switch (feature)
|
||||
{
|
||||
// manner of articulation
|
||||
case nas:
|
||||
@@ -220,7 +218,7 @@ phoneme_add_feature(PHONEME_TAB *phoneme,
|
||||
break;
|
||||
// invalid phoneme feature
|
||||
default:
|
||||
return create_name_error_context(context, ENS_UNKNOWN_PHONEME_FEATURE, feature);
|
||||
return ENS_UNKNOWN_PHONEME_FEATURE;
|
||||
}
|
||||
return ENS_OK;
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ extern "C"
|
||||
#endif
|
||||
|
||||
// See docs/phonemes.md for the list of supported features.
|
||||
enum feature_t {
|
||||
typedef enum {
|
||||
# define FEATURE_T(a, b, c) ((a << 16) | (b << 8) | (c))
|
||||
// invalid phoneme feature name
|
||||
inv = 0,
|
||||
@@ -114,7 +114,9 @@ enum feature_t {
|
||||
fts = FEATURE_T('f', 't', 's'),
|
||||
lns = FEATURE_T('l', 'n', 's'),
|
||||
# undef FEATURE_T
|
||||
};
|
||||
} phoneme_feature_t;
|
||||
|
||||
phoneme_feature_t phoneme_feature_from_string(const char *feature);
|
||||
|
||||
// phoneme types
|
||||
#define phPAUSE 0
|
||||
@@ -207,8 +209,7 @@ typedef struct {
|
||||
|
||||
espeak_ng_STATUS
|
||||
phoneme_add_feature(PHONEME_TAB *phoneme,
|
||||
const char *feature,
|
||||
espeak_ng_ERROR_CONTEXT *context);
|
||||
phoneme_feature_t feature);
|
||||
|
||||
// Several phoneme tables may be loaded into memory. phoneme_tab points to
|
||||
// one for the current voice
|
||||
|
||||
Reference in New Issue
Block a user