\*---------------------------------------------------------------------------*/
-kiss_fft_cpx *fin;
-kiss_fft_cpx *fout;
-kiss_fft_cfg cfg_forward;
-kiss_fft_cfg cfg_reverse;
+kiss_fft_cpx *fin = 0;
+kiss_fft_cpx *fout = 0;
+kiss_fft_cfg cfg_forward = 0;
+kiss_fft_cfg cfg_reverse = 0;
/*---------------------------------------------------------------------------*\
void
initialize_fft (int n)
{
+ assert(!fin && !fout && !cfg_forward && !cfg_reverse);
fin = KISS_FFT_MALLOC (n * sizeof (kiss_fft_cpx));
assert(fin != NULL);
fout = KISS_FFT_MALLOC (n * sizeof (kiss_fft_cpx));
x[c + 1] = -fout[(c) / 2].i;
}
}
+
+void cleanup_fft(void)
+{
+ KISS_FFT_FREE(fin);
+ KISS_FFT_FREE(fout);
+ KISS_FFT_FREE(cfg_forward);
+ KISS_FFT_FREE(cfg_reverse);
+}
#define __FFT__
void fft(float x[], int n, int isign);
+void cleanup_fft(void)
+#ifdef __GNUC__
+ __attribute__ ((destructor))
+#endif
+ ;
+
#endif /* __FFT__ */
long lines; /* lines read so far */
if (argc != 5) {
- printf("usage: extract TextFile FloatFile start(1 .. 10) end(1 .. 10)\n");
- exit(0);
+ printf("usage: %s TextFile FloatFile start(1 .. 10) end(1 .. 10)\n", argv[0]);
+ exit(1);
}
/* read command line arguments and open files */
/* Initialise ------------------------------------------------------*/
if (argc < 3) {
- printf("usage: gentest RawFile LSPTextFile [--lspd] [--log] [--lspdt] \n");
- exit(0);
+ printf("usage: %s RawFile LSPTextFile [--lspd] [--log] [--lspdt] \n", argv[0]);
+ exit(1);
}
/* Open files */
if (argc < 3) {
printf("usage: %s InputFile ResidualFile\n", argv[0]);
- exit(0);
+ exit(1);
}
/* Open files */
short buf[N];
if (argc != 3) {
- printf("usage: mksine outputFile frequencyHz\n");
- exit(0);
+ printf("usage: %s outputFile frequencyHz\n", argv[0]);
+ exit(1);
}
f = fopen(argv[1] ,"wb");
--- /dev/null
+#!/bin/bash
+
+# verbose, skittish
+set -ex
+
+# run valgrind?
+VG="valgrind --error-exitcode=149 --leak-check=full --show-reachable=yes"
+
+# make sure we're up-to-date
+make
+
+
+# runs, not certaion wht it does yet
+${VG} ./tcodec2
+${VG} ./tinterp
+${VG} ./tquant
+
+# these fail, missing arguments
+${VG} ./extract
+${VG} ./genlsp
+${VG} ./genres
+${VG} ./scalarlsptest
+${VG} ./tnlp
+${VG} ./vq_train_jvm
+${VG} ./vqtrain
+${VG} ./vqtrainjnd
+
if (argc < 2) {
printf("usage: %s InputFile\n", argv[0]);
- exit(0);
+ exit(1);
}
if ((ftrain = fopen(argv[1],"rt")) == NULL) {
struct CODEC2 *c2;
c2 = codec2_create(CODEC2_MODE_2500);
- bits = (char*)malloc(codec2_bits_per_frame(c2));
+ int numBits = codec2_bits_per_frame(c2);
+ int numBytes = (numBits+7)>>3;
+
+ bits = (char*)malloc(numBytes);
fin = fopen("../raw/hts1a.raw", "rb");
assert(fin != NULL);
while(fread(buf1, sizeof(short), 2*N, fin) == 2*N) {
codec2_encode(c2, (void*)bits, buf1);
- fwrite(bits, sizeof(char), codec2_bits_per_frame(c2), fbits);
+ fwrite(bits, sizeof(char), numBytes, fbits);
codec2_decode(c2, buf2, (void*)bits);
- fwrite(buf2, sizeof(short), codec2_bits_per_frame(c2), fout);
+ fwrite(buf2, sizeof(short), numBytes, fout);
}
free(bits);
float f0;
if (argc < 3) {
- printf("\nusage: tcontphase OutputRawSpeechFile F0\n");
- exit(0);
+ printf("\nusage: %s OutputRawSpeechFile F0\n", argv[0]);
+ exit(1);
}
/* Output file */
#include <string.h>
#include <math.h>
#include <ctype.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
#include "defines.h"
#include "sine.h"
fclose(f);
}
-char *get_next_float(char *s, float *num)
+const char *get_next_float(const char *s, float *num)
{
- char *p = s;
+ const char *p = s;
char tmp[MAX_STR];
while(*p && !isspace(*p))
p++;
+ assert((p-s) < (int)(sizeof(tmp)-1));
memcpy(tmp, s, p-s);
tmp[p-s] = 0;
*num = atof(tmp);
return p+1;
}
-char *get_next_int(char *s, int *num)
+const char *get_next_int(const char *s, int *num)
{
- char *p = s;
+ const char *p = s;
char tmp[MAX_STR];
while(*p && !isspace(*p))
p++;
+ assert((p-s) < (int)(sizeof(tmp)-1));
memcpy(tmp, s, p-s);
tmp[p-s] = 0;
*num = atoi(tmp);
return p+1;
}
-void load_amp(MODEL *model, char file[], int frame)
+void load_amp(MODEL *model, const char * file, int frame)
{
FILE *f;
int i;
char s[1024];
- char *ps;
+ const char *ps;
f = fopen(file,"rt");
+ assert(f);
for(i=0; i<frame; i++)
ps = fgets(s, 1023, f);
fclose(f);
}
+void load_or_make_amp(MODEL *model,
+ const char * filename, int frame,
+ float f0, float cdB, float mdBHz)
+{
+ struct stat buf;
+ int rc = stat(filename, &buf);
+ if (rc || !S_ISREG(buf.st_mode) || ((buf.st_mode & S_IRUSR) != S_IRUSR))
+ {
+ make_amp(model, f0, cdB, mdBHz);
+ }
+ else
+ {
+ load_amp(model, filename, frame);
+ }
+}
int main() {
MODEL prev, next, interp;
- //make_amp(&prev, 50.0, 60.0, 6E-3);
- //make_amp(&next, 50.0, 40.0, 6E-3);
- load_amp(&prev, "../src/hts1a_model.txt", 32);
- load_amp(&next, "../src/hts1a_model.txt", 34);
+ load_or_make_amp(&prev,
+ "../src/hts1a_model.txt", 32,
+ 50.0, 60.0, 6E-3);
+ load_or_make_amp(&next,
+ "../src/hts1a_model.txt", 34,
+ 50.0, 40.0, 6E-3);
interp.voiced = 1;
interpolate(&interp, &prev, &next);
if (argc < 3) {
printf("\nusage: tnlp InputRawSpeechFile OutputPitchTextFile "
"[--dump DumpFile]\n");
- exit(0);
+ exit(1);
}
/* Input file */
if (argc != 5) {
printf("usage: %s TrainTextFile K(dimension) M(codebook size) VQFilesPrefix\n", argv[0]);
- exit(0);
+ exit(1);
}
ndim = atoi(argv[2]);
/* Interpret command line arguments */
if (argc != 5) {
- printf("usage: vqtrain TrainFile K(dimension) M(codebook size) VQFile\n");
- exit(0);
+ printf("usage: %s TrainFile K(dimension) M(codebook size) VQFile\n", argv[0]);
+ exit(1);
}
/* Open training file */
if (argc != 6) {
printf("usage: %s TrainFile K(dimension) JND popThresh VQFile\n",
argv[0]);
- exit(0);
+ exit(1);
}
/* Open training file */