47 #include "fe_warp_inverse_linear.h"
48 #include "fe_warp_affine.h"
49 #include "fe_warp_piecewise_linear.h"
62 static char *__name2id[] = {
69 static char *name2id[] = {
77 {fe_warp_inverse_linear_set_parameters,
78 fe_warp_inverse_linear_doc,
79 fe_warp_inverse_linear_id,
80 fe_warp_inverse_linear_n_param,
81 fe_warp_inverse_linear_warped_to_unwarped,
82 fe_warp_inverse_linear_unwarped_to_warped,
83 fe_warp_inverse_linear_print},
84 {fe_warp_affine_set_parameters,
87 fe_warp_affine_n_param,
88 fe_warp_affine_warped_to_unwarped,
89 fe_warp_affine_unwarped_to_warped,
90 fe_warp_affine_print},
91 {fe_warp_piecewise_linear_set_parameters,
92 fe_warp_piecewise_linear_doc,
93 fe_warp_piecewise_linear_id,
94 fe_warp_piecewise_linear_n_param,
95 fe_warp_piecewise_linear_warped_to_unwarped,
96 fe_warp_piecewise_linear_unwarped_to_warped,
97 fe_warp_piecewise_linear_print},
101 fe_warp_set(
melfb_t *mel,
const char *id_name)
105 for (i = 0; name2id[i]; i++) {
106 if (strcmp(id_name, name2id[i]) == 0) {
112 if (name2id[i] == NULL) {
113 for (i = 0; __name2id[i]; i++) {
114 if (strcmp(id_name, __name2id[i]) == 0) {
119 if (__name2id[i] == NULL) {
120 E_ERROR(
"Unimplemented warping function %s\n", id_name);
121 E_ERROR(
"Implemented functions are:\n");
122 for (i = 0; name2id[i]; i++) {
123 fprintf(stderr,
"\t%s\n", name2id[i]);
125 mel->warp_id = FE_WARP_ID_NONE;
127 return FE_START_ERROR;
135 fe_warp_set_parameters(
melfb_t *mel,
char const *param_str,
float sampling_rate)
137 if (mel->warp_id <= FE_WARP_ID_MAX) {
138 fe_warp_conf[mel->warp_id].set_parameters(param_str, sampling_rate);
140 else if (mel->warp_id == FE_WARP_ID_NONE) {
141 E_FATAL(
"feat module must be configured w/ a valid ID\n");
145 (
"fe_warp module misconfigured with invalid fe_warp_id %u\n",
153 if (mel->warp_id <= FE_WARP_ID_MAX) {
154 return fe_warp_conf[mel->warp_id].doc();
156 else if (mel->warp_id == FE_WARP_ID_NONE) {
157 E_FATAL(
"fe_warp module must be configured w/ a valid ID\n");
161 (
"fe_warp module misconfigured with invalid fe_warp_id %u\n",
171 if (mel->warp_id <= FE_WARP_ID_MAX) {
172 assert(mel->warp_id == fe_warp_conf[mel->warp_id].id());
175 else if (mel->warp_id != FE_WARP_ID_NONE) {
177 (
"fe_warp module misconfigured with invalid fe_warp_id %u\n",
181 return FE_WARP_ID_NONE;
187 if (mel->warp_id <= FE_WARP_ID_MAX) {
188 return fe_warp_conf[mel->warp_id].n_param();
190 else if (mel->warp_id == FE_WARP_ID_NONE) {
191 E_FATAL(
"fe_warp module must be configured w/ a valid ID\n");
195 (
"fe_warp module misconfigured with invalid fe_warp_id %u\n",
203 fe_warp_warped_to_unwarped(
melfb_t *mel,
float nonlinear)
205 if (mel->warp_id <= FE_WARP_ID_MAX) {
206 return fe_warp_conf[mel->warp_id].warped_to_unwarped(nonlinear);
208 else if (mel->warp_id == FE_WARP_ID_NONE) {
209 E_FATAL(
"fe_warp module must be configured w/ a valid ID\n");
213 (
"fe_warp module misconfigured with invalid fe_warp_id %u\n",
221 fe_warp_unwarped_to_warped(
melfb_t *mel,
float linear)
223 if (mel->warp_id <= FE_WARP_ID_MAX) {
224 return fe_warp_conf[mel->warp_id].unwarped_to_warped(linear);
226 else if (mel->warp_id == FE_WARP_ID_NONE) {
227 E_FATAL(
"fe_warp module must be configured w/ a valid ID\n");
231 (
"fe_warp module misconfigured with invalid fe_warp_id %u\n",
239 fe_warp_print(
melfb_t *mel,
const char *label)
241 if (mel->warp_id <= FE_WARP_ID_MAX) {
242 fe_warp_conf[mel->warp_id].print(label);
244 else if (mel->warp_id == FE_WARP_ID_NONE) {
245 E_FATAL(
"fe_warp module must be configured w/ a valid ID\n");
249 (
"fe_warp module misconfigured with invalid fe_warp_id %u\n",
#define E_ERROR(...)
Print error message to error log.
Base Struct to hold all structure for MFCC computation.
Implementation of logging routines.
#define E_FATAL(...)
Exit with non-zero status after error message.