diff options
| author | Author Name <[email protected]> | 2023-07-07 12:20:59 +0930 |
|---|---|---|
| committer | David Rowe <[email protected]> | 2023-07-07 12:29:06 +0930 |
| commit | ac7c48b4dee99d4c772f133d70d8d1b38262fcd2 (patch) | |
| tree | a2d0ace57a9c0e2e5b611c4987f6fed1b38b81e7 /misc/pre.c | |
shallow zip-file copy from codec2 e9d726bf20
Diffstat (limited to 'misc/pre.c')
| -rw-r--r-- | misc/pre.c | 59 |
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; +} |
