Home | History | Annotate | Download | only in include
      1 /*---------------------------------------------------------------------------*
      2  *  specnorm.h  *
      3  *                                                                           *
      4  *  Copyright 2007, 2008 Nuance Communciations, Inc.                               *
      5  *                                                                           *
      6  *  Licensed under the Apache License, Version 2.0 (the 'License');          *
      7  *  you may not use this file except in compliance with the License.         *
      8  *                                                                           *
      9  *  You may obtain a copy of the License at                                  *
     10  *      http://www.apache.org/licenses/LICENSE-2.0                           *
     11  *                                                                           *
     12  *  Unless required by applicable law or agreed to in writing, software      *
     13  *  distributed under the License is distributed on an 'AS IS' BASIS,        *
     14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
     15  *  See the License for the specific language governing permissions and      *
     16  *  limitations under the License.                                           *
     17  *                                                                           *
     18  *---------------------------------------------------------------------------*/
     19 
     20 
     21 
     22 #ifndef __specnorm_h
     23 #define __specnorm_h
     24 
     25 #ifdef SET_RCSID
     26 static const char specnorm_h[] = "$Id: specnorm.h,v 1.1.10.4 2007/08/31 17:44:53 dahan Exp $";
     27 #endif
     28 
     29 
     30 
     31 #include "hmm_type.h"
     32 
     33 
     34 #define USE_MEDIAN 0
     35 #define USE_MEAN 1
     36 
     37 #define C0_MARGIN 19
     38 #define MEDIAN_SPREAD 20
     39 #define MIN_COUNT 1 /* was 20 */
     40 
     41 #define SV6_TO_MEAN 30 /* units of C0 */
     42 
     43 #define UNIT_SIZE 1
     44 
     45 /**
     46  * @todo document
     47  */
     48 typedef struct
     49 {
     50   int  gain_used;
     51   int  offset;
     52   int  forget_factor;
     53   int  estimate_period;
     54   long count;
     55   long *hist;
     56   int  low_entry;
     57   int  high_entry;
     58   long high_counts;
     59   long low_counts;
     60   int  perc_high;
     61   int  estimate_percentile;
     62   int  sv6_margin;
     63   int  sv6;
     64   int  median;
     65   int  mean;
     66   int  devn;
     67   long mean_count;
     68   long running_total;
     69   long running_total_devn;
     70 }
     71 spect_dist_info;
     72 
     73 spect_dist_info *create_spectrum_distribution(int offset, int initial_median,
     74     int low_entry, int high_entry,
     75     int forget_factor,
     76     int estimate_period, int estimate_percentile,
     77     int sv6_margin);
     78 
     79 void destroy_spectrum_distribution(spect_dist_info *spec);
     80 void clear_distribution_counts(spect_dist_info *spec);
     81 void clear_mean_counts(spect_dist_info *spec);
     82 void forget_distribution_counts(spect_dist_info *spec, int forget_factor);
     83 void shift_distribution_counts(spect_dist_info *spec, int shift);
     84 int  add_distribution_data(spect_dist_info *spec, int spec_val);
     85 void evaluate_parameters(spect_dist_info *spec);
     86 int  estimate_percentile(spect_dist_info *spec, int percentile);
     87 void estimate_mean(spect_dist_info *spec, int forget_factor);
     88 void estimate_sv6(spect_dist_info *spec);
     89 int  median_normalize_data(spect_dist_info *spec, int spec_val);
     90 int  mean_normalize_data(spect_dist_info *spec, int spec_val);
     91 int  sv6_normalize_data(spect_dist_info *spec, int spec_val);
     92 void shift_parameters(spect_dist_info *spec, int shift);
     93 
     94 
     95 #endif
     96