⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prnt_hdr.c

📁 speech signal process tools
💻 C
字号:
/* psps - prints ESPS data files * * This material contains proprietary software of Entropic Speech, Inc. * Any reproduction, distribution, or publication without the prior * written permission of Entropic Speech, Inc. is strictly prohibited. * Any public distribution of copies of this work authorized in writing by * Entropic Speech, Inc. must bear the notice * *    "Copyright (c) 1987 Entropic Speech, Inc.; All rights reserved" * * psps - dumps an ESPS data file on standard output.   This verison by *        Alan Parker, based on the SDS version by Joe Buck. */#ifdef SCCS    static char *sccs_id = "@(#)prnt_hdr.c	1.24 7/31/87 ESI";#endif#include <stdio.h>#include <esps/esps.h>void tab(), print_generic();char *file_typeX();int idx_ok();voidpr_zfunc(lev,label,zf)int lev;char *label;struct zfunc *zf;{    int i;    if(zf == NULL) {        tab (lev);	printf("No %s zfunc\n",label);	return;    }    tab (lev);    printf ("%s: nsiz: %d, dsiz: %d, { ", label,zf->nsiz,zf->dsiz);    for (i = 0; i < zf -> nsiz; i++) printf ("%.4g ", zf -> zeros[i]);    printf ("} / { ");    for (i = 0; i < zf -> dsiz; i++) printf ("%.4g ", zf -> poles[i]);    printf ("}\n");}voidtab(indent) {    while (indent--) printf("  ");}voidprint_common(indent, hdr)int indent;struct header *hdr;{  int i;  char *text = hdr->variable.typtxt;  char *comment = hdr->variable.comment;  char *refer = hdr->variable.refer;  printf("\n");  tab(indent);   (void) printf("---Common Part of Header---\n");  tab(indent);  (void) printf("File type: %s\n", file_typeX(hdr->common.type));  tab(indent);  (void) printf("File header date: %s, header version: %s\n",	hdr->common.date, hdr->common.hdvers);  tab(indent);  (void) printf("Produced by: %s, version: %s, of: %s\n",	hdr->common.prog, hdr->common.vers, hdr->common.progdate);  tab(indent);  (void) printf("User: %s\n",hdr->common.user);  tab(indent);  (void) printf("Number of data records: %d\n",hdr->common.ndrec);  tab(indent);  (void) printf("Data is %s tagged.\n", (hdr->common.tag ? "" : "not"));  tab(indent);  (void) printf("Data format is %d doubles, %d floats, %d longs,\n",	hdr->common.ndouble, hdr->common.nfloat, hdr->common.nlong);  tab(indent);  (void) printf("%d shorts, and %d chars (bytes).\n",hdr->common.nshort, 	hdr->common.nchar);  if(text != NULL) {	tab(indent);	printf("typtxt: ");	fputs(text,stdout);	if(text[strlen(text)-1] != '\n')		putchar('\n');  }  if(refer != NULL) {	tab(indent);	printf("refer file: ");	fputs(refer,stdout);	if(refer[strlen(refer)-1] != '\n')		putchar('\n');  }  if(comment != NULL) {	tab(indent);	printf("comment text: ");	fputs(comment,stdout);	if(comment[strlen(comment)-1] != '\n')		putchar('\n');  }  if(hdr->variable.source[0] != NULL) {	int i=1;	tab(indent);	printf("Source files: %s\n",hdr->variable.source[0]);	while((hdr->variable.source[i] != NULL) && i < hdr->variable.nnames){		tab(indent);		printf("              %s\n",hdr->variable.source[i++]);	}  }  if(hdr->variable.refhd != NULL) {	tab(indent);	printf("There is a reference header.\n");  } else {	tab(indent);	printf("There is no reference header.\n");  }  for (i=0; i<NSPARES; i++) 	if (hdr->common.spares[i] != 0) {	 tab(indent);	 (void) printf("spares[%d]: 0x%x\n", i, (int) hdr->common.spares[i]);	}  printf("\n");  return;}voidprint_generic(indent,hdr)int indent;struct header *hdr;{  char **names;  int j,i,k=0,num,size,type;  int strcmp ();  int swap ();  if(hdr->variable.ngen == 0) return;  tab(indent);  (void) printf("---Generic Header---");  names = genhd_list(&num,hdr);    /* sort the generic header names */     sort (names, num, strcmp, swap);   for (i=0; i<num; i++) {    char *cptr; double *dptr; float *fptr; long *lptr; short *sptr;    type = genhd_type(names[i],&size,hdr);    printf("\n");    tab(indent);    if (size > 7)	printf("%s[0]: ", names[i]);    else	printf("%s: ", names[i]);    k=0;    cptr = get_genhd(names[i],hdr);    if (type == CHAR && size > 1) {	printf("%s",cptr); 	tab(indent);    }    else      for (j=0;j<size; j++) {	k++;	if(k>7) { printf("\n"); tab(indent); printf("%s[%d]: ",names[i],j); 		  k=0; 		}	switch(type) {	 case DOUBLE:     		dptr = (double *)get_genhd(names[i],hdr);		printf("%lg ",dptr[j]);		break;	 case FLOAT:     		fptr = (float *)get_genhd(names[i],hdr);		printf("%g ",fptr[j]);		break;	 case SHORT:     		sptr = (short *)get_genhd(names[i],hdr);		printf("%d ",sptr[j]);		break;	 case LONG:     		lptr = (long *)get_genhd(names[i],hdr);		printf("%ld ",lptr[j]);		break;	 case CHAR:     		cptr = get_genhd(names[i],hdr);		printf("0x%x ",cptr[j]);		break;	 case CODED:  {		char **codes = genhd_codes(names[i],hdr);    		sptr = (short *)get_genhd(names[i],hdr);		if(idx_ok(sptr[j],codes))		  printf("%s ",codes[sptr[j]]);		else		  printf("invalid code %d ",sptr[j]);		break;	        }	}       }  }  printf("\n\n");}voidprint_sd(indent, hdr)int indent;struct header *hdr;{  struct sd_header *h = hdr->hd.sd;  int i;  tab(indent);  (void) printf("---Sampled Data File Header---\n");  tab(indent);  if(idx_ok(h->equip,equip_codes))	(void) printf("equip: %s\n",equip_codes[h->equip]);  else	(void) printf("equip: invalid code %d\n",(int)h->equip);  tab(indent);  (void) printf("max_value: %g, sf: %g, src_sf: %g\n",	h->max_value, h->sf, h->src_sf);  tab(indent);  if(idx_ok(h->synt_method,synt_methods))	(void) printf("synt_method: %s\n",synt_methods[h->synt_method]);  else	(void) printf("synt_method: invalid code %d\n",(int)h->synt_method);  tab(indent);  (void) printf("scale: %g, dcrem: %g\n",h->scale,h->dcrem);  tab(indent);  if(idx_ok(h->q_method,synt_methods))	(void) printf("q_method: %s\n",quant_methods[h->q_method]);  else	(void) printf("q_method: invalid code %d\n",(int)h->q_method);  tab(indent);  if(idx_ok(h->v_excit_method,excit_methods))	(void) printf("v_excit_method: %s\n",excit_methods[h->v_excit_method]);  else	(void) printf("v_excit_method: invalid code %d\n",(int)h->v_excit_method);  tab(indent);  if(idx_ok(h->uv_excit_method,excit_methods))	(void) printf("uv_excit_method: %s\n",excit_methods[h->uv_excit_method]);  else	(void) printf("uv_excit_method: invalid code %d\n",(int)h->uv_excit_method);  tab(indent);  (void) printf("spare1: %d, nchan: %d\n",(int)h->spare1,(int)h->nchan);  tab(indent);  if(idx_ok(h->synt_interp,synt_inter_methods))	(void) printf("synt_interp: %s\n",synt_inter_methods[h->synt_interp]);  else	(void) printf("synt_interp: invalid code %d\n",(int)h->synt_interp);  tab(indent);  if(idx_ok(h->synt_pwr,synt_inter_methods))	(void) printf("synt_pwr: %s\n",synt_pwr_codes[h->synt_pwr]);  else	(void) printf("synt_pwr: invalid code %d\n",(int)h->synt_pwr);  tab(indent);  if(idx_ok(h->synt_rc,synt_inter_methods))	(void) printf("synt_rc: %s\n",synt_ref_methods[h->synt_rc]);  else	(void) printf("synt_rc: invalid code %d\n",(int)h->synt_rc);  tab(indent);  (void) printf("synt_order: %d\n",(int)h->synt_order);  tab(indent);  (void) printf("start: %ld, nan: %ld\n",h->start,h->nan);  for (i=0; i<SD_SPARES; i++) 	if (h->spares[i] != 0) {		tab(indent);		(void) printf("spares[%d]: 0x%x\n", i,(int) h->spares[i]);	}  pr_zfunc(indent,"prefilter",h->prefilter);  pr_zfunc(indent,"de_emp",h->de_emp);  return;}voidprint_spec(indent, hdr)int indent;struct header *hdr;{  int i;  struct spec_header *h = hdr->hd.spec;  tab(indent);  (void) printf("---Spectral File Header---\n");  tab(indent);  (void) printf("start: %ld, nan: %ld, frmlen: %d\n",    h->start, h->nan, (int)h->frmlen);  tab(indent);  (void) printf("order_vcd: %d, order_unvcd: %d\n",    (int)h->order_vcd, (int)h->order_unvcd);  tab(indent);  if(idx_ok(h->win_type,win_type_codes))	(void) printf("win_type: %s\n",win_type_codes[h->win_type]);  else	(void) printf("win_type: invalid code %d\n",(int)h->win_type);  tab(indent);  (void) printf("sf: %g\n",h->sf);  tab(indent);  if(idx_ok(h->spec_an_meth,spec_an_methods))	(void) printf("spec_an_meth: %s\n",spec_an_methods[h->spec_an_meth]);  else	(void) printf("spec_an_meth: invalid code %d\n",(int)h->spec_an_meth);  tab(indent);  (void) printf("dcrem: %g\n",h->dcrem);  tab(indent);  if(idx_ok(h->post_proc,post_proc_codes))	(void) printf("post_proc: %s\n",post_proc_codes[h->post_proc]);  else	(void) printf("post_proc: invalid code %d\n",(int)h->post_proc);  tab(indent);  if(idx_ok(h->frame_meth,frame_methods))	(void) printf("frame_meth: %s\n",frame_methods[h->frame_meth]);  else	(void) printf("frame_meth: invalid code %d\n",(int)h->frame_meth);  tab(indent);  (void) printf("voicing: %d\n",h->voicing);  tab(indent);  if(idx_ok(h->freq_format,freq_format_codes))	(void) printf("freq_format: %s\n",freq_format_codes[h->freq_format]);  else	(void) printf("freq_format: invalid code %d\n",(int)h->freq_format);  tab(indent);  if(idx_ok(h->spec_type,spec_type_codes))	(void) printf("spec_type: %s\n",spec_type_codes[h->spec_type]);  else	(void) printf("spec_type: invalid code %d\n",(int)h->spec_type);  tab(indent);  (void) printf("contin: %d, num_freqs: %ld\n",(int)h->contin,    h->num_freqs);  for (i=0; i<SPEC_SPARES; i++) 	if (h->spares[i] != 0) {		tab(indent);		(void) printf("spares[%d]: 0x%x\n", i,(int) h->spares[i]);	}  pr_zfunc(indent,"pre_emp",h->pre_emp);  if(h->freqs) {	int j=6;	for(i=0; i<h->num_freqs; i++) {		if(j>5) {			tab(indent);				printf("freqs[%d]: ",i);			j=0;		}		printf("%10.4f",h->freqs[i]);		j++;	}  }  return;}voidprint_filt(indent,hdr)int indent;struct header *hdr;{   int i,n;   struct filt_header *h = hdr->hd.filt;   tab(indent);   (void) printf("---Filter Coefficient File---\n");   tab(indent);   (void) printf("max_num: %d, max_den: %d\n",h->max_num,h->max_den);   tab(indent);   if(idx_ok(h->func_spec,filt_func_spec))	(void) printf("func_spec: %s\n",filt_func_spec[h->func_spec]);   else	(void) printf("func_spec: invalid code %d\n",h->func_spec);   tab(indent);   printf("nbands: %d, npoints: %d, g_size: %d, nbits: %d\n",	h->nbands,h->npoints,h->g_size,h->nbits);   tab(indent);   printf("type: %d, method: %d\n",h->type,h->method);   tab(indent);   for (i=0; i<FILT_SPARES; i++) 	if (h->spares[i] != 0) {		tab(indent);		(void) printf("spares[%d]: 0x%x\n", i,(int) h->spares[i]);	}     if(h->nbands != 0) {	int j=6;	for(i=0; i<h->nbands; i++) {		if(j>5) {			tab(indent);				(void) printf("\nbandedges[%d]:   ",i);			j=0;		}		(void) printf("%g ",h->bandedges[i]);		j++;	}	(void)printf("\n");  }  if(h->npoints != 0) {	int j=6;	for(i=0; i<h->npoints; i++) {		if(j>5) {			tab(indent);				(void) printf("\npoints[%d]:      ",i);			j=0;		}		(void) printf("%g ",h->points[i]);		j++;	}	(void)printf("\n");  }  if(h->func_spec == BAND)      n = h->nbands;  else      n = h->npoints;  if(n != 0) {	int j=6;	for(i=0; i<n; i++) {		if(j>5) {			tab(indent);				(void) printf("\ngains[%d]:       ",i);			j=0;		}		(void) printf("%g ",h->gains[i]);		j++;	}	(void)printf("\n");  }  if(n != 0) {	int j=6;	for(i=0; i<n; i++) {		if(j>5) {			tab(indent);				(void) printf("\nwts[%d]:         ",i);			j=0;		}		(void) printf("%g ",h->wts[i]);		j++;	}	(void)printf("\n");  }  (void)printf("\n");  return;}voidprint_scbk(indent,hdr)int indent;struct header *hdr;{   int i;   struct scbk_header *h = hdr->hd.scbk;   tab(indent);   (void) printf("---Scaler Codebook File---\n");   tab(indent);   (void) printf("num_items: %ld, num_cdwds: %d\n",	h->num_items,h->num_cdwds);   tab(indent);   (void) printf("convergence: %f, element_num: %d\n", 	h->convergence,h->element_num);   tab(indent);   if(idx_ok(h->distortion,scbk_distortion))	(void) printf("distortion: %s\n",scbk_distortion[h->distortion]);   else	(void) printf("distortion: invalid code %d\n",h->distortion);   tab(indent);   if(idx_ok(h->codebook_type,scbk_codebook_type))	(void) printf("codebook_type: %s\n",scbk_codebook_type[h->codebook_type]);   else	(void) printf("codebook_type: invalid code %d\n",h->codebook_type);   for (i=0; i<SCBK_SPARES; i++) 	if (h->spares[i] != 0) {		tab(indent);		(void) printf("spares[%d]: 0x%x\n", i,(int) h->spares[i]);	}}voidprint_fea(indent,hdr)int indent;struct header *hdr;{   int i, j;   struct fea_header *h = hdr->hd.fea;   extern char	*fea_file_type[];   extern int	vflag;   tab(indent);   (void) printf("---Feature File Header---\n");   tab(indent);   if(idx_ok(h->fea_type,fea_file_type))	(void) printf("fea_type: %s, ", fea_file_type[h->fea_type]);   else	(void) printf("fea_type: invalid code %d, ",h->fea_type);   printf("segment_labeled: %d, field_count: %d\n",		h->segment_labeled, h->field_count); if (vflag)   for (i=0; i<h->field_count; i++) {     tab(indent);     printf("Item name: %s, ", h->names[i]);     tab(indent);     if(idx_ok(h->types[i],type_codes))      printf("type: %s, ",type_codes[h->types[i]]);     else      printf("type: invalid code: %d, ",h->types[i]);     tab(indent);     printf("size: %ld", h->sizes[i]);     if(h->sizes[i] > 1) printf(", rank: %d", h->ranks[i]);     printf("\n");     if(h->ranks[i] > 1) {      tab(indent);      printf(" Dimensions: ");      for(j=0; j<h->ranks[i]; j++)	   printf("% ld",h->dimens[i][j]);      printf("\n");     }     if (h->types[i] == CODED) {      char **s;      tab(indent);      printf(" Possible coded values:\n");      s = h->enums[i];      while(*s != NULL) {        tab(indent);	printf(" %s\n",*s++);      }     }     if(h->derived[i]) {	char **s;	tab(indent);	printf(" Derived from:\n");	s = h->srcfields[i];	while(*s != NULL) {	  tab(indent);	  printf(" %s\n",*s++);	}      }   } /* end for (i = 0; i < h->field_count; i++) */ if (vflag)   for (i=0; i<FEA_SPARES; i++) 	if (h->spares[i] != 0) {		tab(indent);		(void) printf("spares[%d]: 0x%x\n", i,(int) h->spares[i]);	}   (void) printf ("\n");}sort (v, n, comp, exch)	    /* sort strings v[0]...v[n-1] */char *v[];int n;int (*comp) (),  (*exch) ();{    int gap, i, j;    for (gap = n/2; gap > 0; gap /= 2)	for (i = gap; i < n; i++)	    for (j = i-gap; j >= 0; j -= gap) {		if ((*comp) (v[j], v[j+gap]) <= 0)		    break;		(*exch) (&v[j], &v[j+gap]);	    }}swap (px, py)	/* interchange *px and *py */char *px[], *py[];{    char *temp;    temp = *px;    *px = *py;    *py = temp;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -