aboutsummaryrefslogtreecommitdiff
path: root/misc/pre.c
diff options
context:
space:
mode:
authorAuthor Name <[email protected]>2023-07-07 12:20:59 +0930
committerDavid Rowe <[email protected]>2023-07-07 12:29:06 +0930
commitac7c48b4dee99d4c772f133d70d8d1b38262fcd2 (patch)
treea2d0ace57a9c0e2e5b611c4987f6fed1b38b81e7 /misc/pre.c
shallow zip-file copy from codec2 e9d726bf20
Diffstat (limited to 'misc/pre.c')
-rw-r--r--misc/pre.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/misc/pre.c b/misc/pre.c
new file mode 100644
index 0000000..8016c3f
--- /dev/null
+++ b/misc/pre.c
@@ -0,0 +1,59 @@
+/*
+ pre.c
+ David Rowe
+ Sep 26 2012
+
+ Takes audio from a file, pre-emphasises, and sends to output file.
+*/
+
+#include <assert.h>
+#include <math.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "lpc.h"
+
+#define N 80
+
+int main(int argc, char*argv[]) {
+ FILE *fin, *fout;
+ short buf[N];
+ float Sn[N], Sn_pre[N];
+ float pre_mem = 0.0;
+ int i;
+
+ if (argc != 3) {
+ printf("usage: pre InputRawSpeechFile OutputRawSpeechFile\n");
+ printf("e.g pre input.raw output.raw\n");
+ exit(1);
+ }
+
+ if (strcmp(argv[1], "-") == 0) fin = stdin;
+ else if ( (fin = fopen(argv[1],"rb")) == NULL ) {
+ fprintf(stderr, "Error opening input speech file: %s: %s.\n",
+ argv[1], strerror(errno));
+ exit(1);
+ }
+
+ if (strcmp(argv[2], "-") == 0) fout = stdout;
+ else if ( (fout = fopen(argv[2],"wb")) == NULL ) {
+ fprintf(stderr, "Error opening output speech file: %s: %s.\n",
+ argv[2], strerror(errno));
+ exit(1);
+ }
+
+ while(fread(buf, sizeof(short), N, fin) == N) {
+ for(i=0; i<N; i++)
+ Sn[i] = buf[i];
+ pre_emp(Sn_pre, Sn, &pre_mem, N);
+ for(i=0; i<N; i++)
+ buf[i] = Sn_pre[i];
+ fwrite(buf, sizeof(short), N, fout);
+ }
+
+ fclose(fin);
+ fclose(fout);
+
+ return 0;
+}