summarylogtreecommitdiffstats
path: root/festival-2.4-compat.patch
blob: 17f9093d529043954673492af6049226c6b812ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
diff -Naur festival.orig/src/modules/clustergen/HTS_vocoder_me.cc festival/src/modules/clustergen/HTS_vocoder_me.cc
--- festival.orig/src/modules/clustergen/HTS_vocoder_me.cc	2013-02-18 16:10:50.000000000 +0100
+++ festival/src/modules/clustergen/HTS_vocoder_me.cc	2015-07-28 18:25:52.846670680 +0200
@@ -90,8 +90,9 @@
 
 HTS_VOCODER_ME_C_START;
 
+#include <math.h>
 #include "./HTS_vocoder_me.h"
-#include "../hts_engine/HTS_vocoder.c"
+#include "../hts_engine/HTS_vocoder.h"
 
 /* HTS_Vocoder_initialize_me: initialize vocoder (mixed excitation) */
 void HTS_Vocoder_initialize_me(HTS_Vocoder_ME * v_me,
diff -Naur festival.orig/src/modules/hts_engine/HTS_vocoder.c festival/src/modules/hts_engine/HTS_vocoder.c
--- festival.orig/src/modules/hts_engine/HTS_vocoder.c	2013-02-18 16:10:52.000000000 +0100
+++ festival/src/modules/hts_engine/HTS_vocoder.c	2015-07-28 18:26:22.680173336 +0200
@@ -57,10 +57,12 @@
 
 #include <math.h>               /* for sqrt(),log(),exp(),pow(),cos() */
 
+//#include "HTS_vocoder.h"
+
 /* hts_engine libraries */
 #include "HTS_hidden.h"
 
-static const double HTS_pade[21] = {
+const double HTS_pade[21] = {
    1.00000000000,
    1.00000000000,
    0.00000000000,
@@ -85,7 +87,7 @@
 };
 
 /* HTS_movem: move memory */
-static void HTS_movem(double *a, double *b, const int nitem)
+void HTS_movem(double *a, double *b, const int nitem)
 {
    long i = (long) nitem;
 
@@ -101,7 +103,7 @@
 }
 
 /* HTS_mlsafir: sub functions for MLSA filter */
-static double HTS_mlsafir(const double x, const double *b, const int m, const double a, const double aa, double *d)
+double HTS_mlsafir(const double x, const double *b, const int m, const double a, const double aa, double *d)
 {
    double y = 0.0;
    int i;
@@ -122,7 +124,7 @@
 }
 
 /* HTS_mlsadf1: sub functions for MLSA filter */
-static double HTS_mlsadf1(double x, const double *b, const int m, const double a, const double aa, const int pd, double *d, const double *ppade)
+double HTS_mlsadf1(double x, const double *b, const int m, const double a, const double aa, const int pd, double *d, const double *ppade)
 {
    double v, out = 0.0, *pt;
    int i;
@@ -144,7 +146,7 @@
 }
 
 /* HTS_mlsadf2: sub functions for MLSA filter */
-static double HTS_mlsadf2(double x, const double *b, const int m, const double a, const double aa, const int pd, double *d, const double *ppade)
+double HTS_mlsadf2(double x, const double *b, const int m, const double a, const double aa, const int pd, double *d, const double *ppade)
 {
    double v, out = 0.0, *pt;
    int i;
@@ -166,7 +168,7 @@
 }
 
 /* HTS_mlsadf: functions for MLSA filter */
-static double HTS_mlsadf(double x, const double *b, const int m, const double a, const int pd, double *d)
+double HTS_mlsadf(double x, const double *b, const int m, const double a, const int pd, double *d)
 {
    const double aa = 1 - a * a;
    const double *ppade = &(HTS_pade[pd * (pd + 1) / 2]);
@@ -178,7 +180,7 @@
 }
 
 /* HTS_rnd: functions for random noise generation */
-static double HTS_rnd(unsigned long *next)
+double HTS_rnd(unsigned long *next)
 {
    double r;
 
@@ -189,7 +191,7 @@
 }
 
 /* HTS_nrandom: functions for gaussian random noise generation */
-static double HTS_nrandom(HTS_Vocoder * v)
+double HTS_nrandom(HTS_Vocoder * v)
 {
    if (v->sw == 0) {
       v->sw = 1;
@@ -207,7 +209,7 @@
 }
 
 /* HTS_mceq: function for M-sequence random noise generation */
-static int HTS_mseq(HTS_Vocoder * v)
+int HTS_mseq(HTS_Vocoder * v)
 {
    int x0, x28;
 
@@ -229,7 +231,7 @@
 }
 
 /* HTS_mc2b: transform mel-cepstrum to MLSA digital fillter coefficients */
-static void HTS_mc2b(double *mc, double *b, int m, const double a)
+void HTS_mc2b(double *mc, double *b, int m, const double a)
 {
    if (mc != b) {
       if (a != 0.0) {
@@ -244,7 +246,7 @@
 }
 
 /* HTS_b2bc: transform MLSA digital filter coefficients to mel-cepstrum */
-static void HTS_b2mc(const double *b, double *mc, int m, const double a)
+void HTS_b2mc(const double *b, double *mc, int m, const double a)
 {
    double d, o;
 
@@ -257,7 +259,7 @@
 }
 
 /* HTS_freqt: frequency transformation */
-static void HTS_freqt(HTS_Vocoder * v, const double *c1, const int m1, double *c2, const int m2, const double a)
+void HTS_freqt(HTS_Vocoder * v, const double *c1, const int m1, double *c2, const int m2, const double a)
 {
    int i, j;
    const double b = 1 - a * a;
@@ -287,7 +289,7 @@
 }
 
 /* HTS_c2ir: The minimum phase impulse response is evaluated from the minimum phase cepstrum */
-static void HTS_c2ir(const double *c, const int nc, double *h, const int leng)
+void HTS_c2ir(const double *c, const int nc, double *h, const int leng)
 {
    int n, k, upl;
    double d;
@@ -303,7 +305,7 @@
 }
 
 /* HTS_b2en: calculate frame energy */
-static double HTS_b2en(HTS_Vocoder * v, const double *b, const int m, const double a)
+double HTS_b2en(HTS_Vocoder * v, const double *b, const int m, const double a)
 {
    int i;
    double en = 0.0;
@@ -330,7 +332,7 @@
 }
 
 /* HTS_ignorm: inverse gain normalization */
-static void HTS_ignorm(double *c1, double *c2, int m, const double g)
+void HTS_ignorm(double *c1, double *c2, int m, const double g)
 {
    double k;
    if (g != 0.0) {
@@ -345,7 +347,7 @@
 }
 
 /* HTS_gnorm: gain normalization */
-static void HTS_gnorm(double *c1, double *c2, int m, const double g)
+void HTS_gnorm(double *c1, double *c2, int m, const double g)
 {
    double k;
    if (g != 0.0) {
@@ -360,7 +362,7 @@
 }
 
 /* HTS_lsp2lpc: transform LSP to LPC */
-static void HTS_lsp2lpc(HTS_Vocoder * v, double *lsp, double *a, const int m)
+void HTS_lsp2lpc(HTS_Vocoder * v, double *lsp, double *a, const int m)
 {
    int i, k, mh1, mh2, flag_odd;
    double xx, xf, xff;
@@ -451,7 +453,7 @@
 }
 
 /* HTS_gc2gc: generalized cepstral transformation */
-static void HTS_gc2gc(HTS_Vocoder * v, double *c1, const int m1, const double g1, double *c2, const int m2, const double g2)
+void HTS_gc2gc(HTS_Vocoder * v, double *c1, const int m1, const double g1, double *c2, const int m2, const double g2)
 {
    int i, min, k, mk;
    double ss1, ss2, cc;
@@ -484,7 +486,7 @@
 }
 
 /* HTS_mgc2mgc: frequency and generalized cepstral transformation */
-static void HTS_mgc2mgc(HTS_Vocoder * v, double *c1, const int m1, const double a1, const double g1, double *c2, const int m2, const double a2, const double g2)
+void HTS_mgc2mgc(HTS_Vocoder * v, double *c1, const int m1, const double a1, const double g1, double *c2, const int m2, const double a2, const double g2)
 {
    double a;
 
@@ -502,7 +504,7 @@
 }
 
 /* HTS_lsp2mgc: transform LSP to MGC */
-static void HTS_lsp2mgc(HTS_Vocoder * v, double *lsp, double *mgc, const int m, const double alpha)
+void HTS_lsp2mgc(HTS_Vocoder * v, double *lsp, double *mgc, const int m, const double alpha)
 {
    int i;
    /* lsp2lpc */
@@ -531,7 +533,7 @@
 }
 
 /* HTS_mglsadff: sub functions for MGLSA filter */
-static double HTS_mglsadff(double x, const double *b, const int m, const double a, double *d)
+double HTS_mglsadff(double x, const double *b, const int m, const double a, double *d)
 {
    int i;
 
@@ -550,7 +552,7 @@
 }
 
 /* HTS_mglsadf: sub functions for MGLSA filter */
-static double HTS_mglsadf(double x, const double *b, const int m, const double a, const int n, double *d)
+double HTS_mglsadf(double x, const double *b, const int m, const double a, const int n, double *d)
 {
    int i;
 
@@ -561,7 +563,7 @@
 }
 
 /* THS_check_lsp_stability: check LSP stability */
-static void HTS_check_lsp_stability(double *lsp, size_t m)
+void HTS_check_lsp_stability(double *lsp, size_t m)
 {
    size_t i, j;
    double tmp;
@@ -595,7 +597,7 @@
 }
 
 /* HTS_lsp2en: calculate frame energy */
-static double HTS_lsp2en(HTS_Vocoder * v, double *lsp, size_t m, double alpha)
+double HTS_lsp2en(HTS_Vocoder * v, double *lsp, size_t m, double alpha)
 {
    size_t i;
    double en = 0.0;
@@ -632,7 +634,7 @@
 }
 
 /* HTS_white_noise: return white noise */
-static double HTS_white_noise(HTS_Vocoder * v)
+double HTS_white_noise(HTS_Vocoder * v)
 {
    if (v->gauss)
       return (double) HTS_nrandom(v);
@@ -641,7 +643,7 @@
 }
 
 /* HTS_ping_pulse: ping pulse using low-pass filter */
-static void HTS_ping_pulse(HTS_Vocoder * v, const int ping_place, const double p, const int nlpf, const double *lpf)
+void HTS_ping_pulse(HTS_Vocoder * v, const int ping_place, const double p, const int nlpf, const double *lpf)
 {
    int i, j;
    const double power = sqrt(p);
@@ -652,7 +654,7 @@
 }
 
 /* HTS_ping_noise: ping noise using low-pass filter */
-static void HTS_ping_noise(HTS_Vocoder * v, const int ping_place, const int nlpf, const double *lpf)
+void HTS_ping_noise(HTS_Vocoder * v, const int ping_place, const int nlpf, const double *lpf)
 {
    int i, j;
    const double power = HTS_white_noise(v);
@@ -667,7 +669,7 @@
 }
 
 /* HTS_Vocoder_initialize_excitation: initialize excitation */
-static void HTS_Vocoder_initialize_excitation(HTS_Vocoder * v, size_t nlpf)
+void HTS_Vocoder_initialize_excitation(HTS_Vocoder * v, size_t nlpf)
 {
    size_t i;
 
@@ -684,7 +686,7 @@
 }
 
 /* HTS_Vocoder_start_excitation: start excitation of each frame */
-static void HTS_Vocoder_start_excitation(HTS_Vocoder * v, const double pitch, const int nlpf)
+void HTS_Vocoder_start_excitation(HTS_Vocoder * v, const double pitch, const int nlpf)
 {
    if (v->p1 != 0.0 && pitch != 0.0)
       v->inc = (pitch - v->p1) * IPERIOD / v->fprd;
@@ -699,7 +701,7 @@
 }
 
 /* HTS_Vocoder_get_excitation: get excitation of each sample */
-static double HTS_Vocoder_get_excitation(HTS_Vocoder * v, const int fprd_index, const int iprd_index, const int nlpf, const double *lpf)
+double HTS_Vocoder_get_excitation(HTS_Vocoder * v, const int fprd_index, const int iprd_index, const int nlpf, const double *lpf)
 {
    double x;
    int i, j;
@@ -755,7 +757,7 @@
 }
 
 /* HTS_Vocoder_end_excitation: end excitation of each frame */
-static void HTS_Vocoder_end_excitation(HTS_Vocoder * v, const int nlpf)
+void HTS_Vocoder_end_excitation(HTS_Vocoder * v, const int nlpf)
 {
    int i;
 
@@ -771,7 +773,7 @@
 }
 
 /* HTS_Vocoder_postfilter_mcp: postfilter for MCP */
-static void HTS_Vocoder_postfilter_mcp(HTS_Vocoder * v, double *mcp, const int m, double alpha, double beta)
+void HTS_Vocoder_postfilter_mcp(HTS_Vocoder * v, double *mcp, const int m, double alpha, double beta)
 {
    double e1, e2;
    int k;
@@ -797,7 +799,7 @@
 }
 
 /* HTS_Vocoder_postfilter_lsp: postfilter for LSP */
-static void HTS_Vocoder_postfilter_lsp(HTS_Vocoder * v, double *lsp, size_t m, double alpha, double beta)
+void HTS_Vocoder_postfilter_lsp(HTS_Vocoder * v, double *lsp, size_t m, double alpha, double beta)
 {
    double e1, e2;
    size_t i;
diff -Naur festival.orig/src/modules/hts_engine/HTS_vocoder.h festival/src/modules/hts_engine/HTS_vocoder.h
--- festival.orig/src/modules/hts_engine/HTS_vocoder.h	1970-01-01 01:00:00.000000000 +0100
+++ festival/src/modules/hts_engine/HTS_vocoder.h	2015-07-28 18:21:15.431802892 +0200
@@ -0,0 +1,42 @@
+#ifndef HTS_VOCODER_H
+#define HTS_VOCODER_H
+
+/* hts_engine libraries */
+#include "HTS_hidden.h"
+
+void HTS_Vocoder_clear(HTS_Vocoder *v);
+void HTS_Vocoder_synthesize(HTS_Vocoder *v,size_t m,double lf0,double *spectrum,size_t nlpf,double *lpf,double alpha,double beta,double volume,double *rawdata,HTS_Audio *audio);
+void HTS_Vocoder_initialize(HTS_Vocoder *v,size_t m,size_t stage,HTS_Boolean use_log_gain,size_t rate,size_t fperiod);
+void HTS_Vocoder_postfilter_lsp(HTS_Vocoder *v,double *lsp,size_t m,double alpha,double beta);
+void HTS_Vocoder_postfilter_mcp(HTS_Vocoder *v,double *mcp,const int m,double alpha,double beta);
+void HTS_Vocoder_end_excitation(HTS_Vocoder *v,const int nlpf);
+double HTS_Vocoder_get_excitation(HTS_Vocoder *v,const int fprd_index,const int iprd_index,const int nlpf,const double *lpf);
+void HTS_Vocoder_start_excitation(HTS_Vocoder *v,const double pitch,const int nlpf);
+void HTS_Vocoder_initialize_excitation(HTS_Vocoder *v,size_t nlpf);
+void HTS_ping_noise(HTS_Vocoder *v,const int ping_place,const int nlpf,const double *lpf);
+void HTS_ping_pulse(HTS_Vocoder *v,const int ping_place,const double p,const int nlpf,const double *lpf);
+double HTS_white_noise(HTS_Vocoder *v);
+double HTS_lsp2en(HTS_Vocoder *v,double *lsp,size_t m,double alpha);
+void HTS_check_lsp_stability(double *lsp,size_t m);
+double HTS_mglsadf(double x,const double *b,const int m,const double a,const int n,double *d);
+double HTS_mglsadff(double x,const double *b,const int m,const double a,double *d);
+void HTS_lsp2mgc(HTS_Vocoder *v,double *lsp,double *mgc,const int m,const double alpha);
+void HTS_mgc2mgc(HTS_Vocoder *v,double *c1,const int m1,const double a1,const double g1,double *c2,const int m2,const double a2,const double g2);
+void HTS_gc2gc(HTS_Vocoder *v,double *c1,const int m1,const double g1,double *c2,const int m2,const double g2);
+void HTS_lsp2lpc(HTS_Vocoder *v,double *lsp,double *a,const int m);
+void HTS_gnorm(double *c1,double *c2,int m,const double g);
+void HTS_ignorm(double *c1,double *c2,int m,const double g);
+double HTS_b2en(HTS_Vocoder *v,const double *b,const int m,const double a);
+void HTS_c2ir(const double *c,const int nc,double *h,const int leng);
+void HTS_freqt(HTS_Vocoder *v,const double *c1,const int m1,double *c2,const int m2,const double a);
+void HTS_b2mc(const double *b,double *mc,int m,const double a);
+void HTS_mc2b(double *mc,double *b,int m,const double a);
+int HTS_mseq(HTS_Vocoder *v);
+double HTS_nrandom(HTS_Vocoder *v);
+double HTS_rnd(unsigned long *next);
+double HTS_mlsadf(double x,const double *b,const int m,const double a,const int pd,double *d);
+double HTS_mlsadf2(double x,const double *b,const int m,const double a,const double aa,const int pd,double *d,const double *ppade);
+double HTS_mlsadf1(double x,const double *b,const int m,const double a,const double aa,const int pd,double *d,const double *ppade);
+double HTS_mlsafir(const double x,const double *b,const int m,const double a,const double aa,double *d);
+void HTS_movem(double *a,double *b,const int nitem);
+#endif