annotate main/audio/endpoint.h @ 0:6b33357c7561 octave-forge

Initial revision
author pkienzle
date Wed, 10 Oct 2001 19:54:49 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
1 /*
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
2 * ENDPOINT.H - endpoint class definition
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
3 *
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
4 * Bruce T. Lowerre, Public domain, 1995, 1997
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
5 *
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
6 * $Log$
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
7 * Revision 1.1 2001/10/10 19:54:49 pkienzle
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
8 * Initial revision
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
9 *
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
10 * Revision 1.1 2001/04/22 08:29:30 pkienzle
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
11 * adding in all of matcompat
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
12 *
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
13 * Revision 1.2 1997/05/23 19:59:01 lowerre
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
14 * renamed class endpoint to endpointer, conflicts with <rpcsvc/nis.h>
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
15 *
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
16 * Revision 1.1 1997/05/14 20:34:34 lowerre
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
17 * Initial revision
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
18 *
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
19 *
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
20 */
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
21
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
22 /* The endpointer is used to determine the start and end of a live
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
23 * input signal. Unlike a pre-recorded utterance, a live input signal
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
24 * is open-ended in that the actual start and end of the signal is
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
25 * totally unknown. The search, using HMM techniques with a silence
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
26 * model, will usually do a fairly good job of guessing the start of
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
27 * the signal. However, the actual end of the signal is unknown to
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
28 * the recognizer. Reaching the end state in the recognizer does not
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
29 * necessarily mean the end of signal. Therefore, the end of signal
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
30 * must be calculated by some means. This is the job of the end point
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
31 * detector. */
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
32
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
33 #ifndef ENDPOINT_H
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
34 #define ENDPOINT_H
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
35
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
36 //#include <general.h> // contains general defs
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
37
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
38 typedef enum
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
39 {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
40 NOSILENCE,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
41 INSILENCE,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
42 START,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
43 INSIGNAL,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
44 END
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
45 } EPSTATE;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
46
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
47 typedef enum
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
48 {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
49 EP_NONE,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
50 EP_RESET,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
51 EP_SILENCE,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
52 EP_SIGNAL,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
53 EP_INUTT,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
54 EP_MAYBEEND,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
55 EP_ENDOFUTT,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
56 EP_NOTEND,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
57 EP_NOSTARTSILENCE
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
58 } EPTAG;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
59
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
60 class endpointer
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
61 {
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
62 private:
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
63 EPSTATE epstate;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
64 float ave,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
65 noise,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
66 begthresh,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
67 energy,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
68 maxpeak,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
69 endthresh,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
70 begfact,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
71 endfact,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
72 energyfact,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
73 mnbe,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
74 peakreturn, // average energy
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
75 dpnoise,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
76 triggerfact, // schmidt trigger percent
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
77 minstartsilence,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
78 *lastdpnoise; // array of size numdpnoise
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
79 long samprate, // sampling rate in Hz
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
80 windowsize, // window size in samples
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
81 stepsize, // step size in samples
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
82 scnt,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
83 avescnt,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
84 vcnt,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
85 evcnt,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
86 voicecount,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
87 minfriclng,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
88 bscnt,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
89 zccnt,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
90 startframe,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
91 endframe,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
92 ncount,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
93 zcthresh,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
94 numdpnoise,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
95 minrise,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
96 maxpause,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
97 maxipause,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
98 startblip,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
99 endblip,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
100 minuttlng,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
101 minvoicelng,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
102 zc; // zero cross count per window
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
103 bool startsilenceok,
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
104 low; // is signal currently low or high?
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
105 void zcpeakpick // get zc count and average energy
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
106 (
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
107 short* // raw samples
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
108 );
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
109 void setnoise (); // initial noise level set
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
110 void averagenoise (); // average noise array and shift
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
111 public:
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
112 endpointer // constructor
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
113 (
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
114 long, // sampling rate in Hz
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
115 long, // window size in samples
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
116 long, // step size in samples
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
117 long = 700, // endof utt silence default, msec
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
118 long = 100, // minuttlng default, msec
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
119 long = 600, // zcthresh default, Hz
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
120 float = 40.0, // begfact default
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
121 float = 80.0, // endfact default
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
122 float = 200.0, // energyfact default
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
123 float = 2000.0, // minstartsilence default
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
124 float = 3.0, // triggerfact default
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
125 long = 6, // numdpnoise default
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
126 long = 50, // minfriclng default, msec
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
127 long = 150, // maxpause default, msec
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
128 long = 30, // startblip default, msec
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
129 long = 20, // endblip default, msec
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
130 long = 60, // minvoicelng default, msec
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
131 long = 50 // minrise default, msec
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
132 );
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
133 ~endpointer (); // destructor
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
134
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
135 void initendpoint (); // initialize variables
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
136 EPTAG getendpoint
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
137 (
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
138 short* // raw samples of window size
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
139 );
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
140 const char *gettagname // convert tag to ascii
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
141 (
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
142 EPTAG
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
143 );
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
144 void printvars (); // print variables
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
145 long getzc () {return (zc);} // get the zero cross count
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
146 float getenergy () {return (peakreturn);} // get the RMS energy
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
147 }; // end class endpointer
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
148
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
149
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
150 #endif