1/*---------------------------------------------------------------------------*
2 *  voicing.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 __voicing_h
23#define __voicing_h
24
25#ifdef SET_RCSID
26static const char voicing_h[] = "$Id: voicing.h,v 1.1.10.3 2007/08/31 17:44:53 dahan Exp $";
27#endif
28
29
30#include "hmm_type.h"
31
32#define B0_HANG1 100
33#define B0_HANG2 300
34#define B0_RATE1 15     /* 256 * 0.06 */
35#define B0_RATE2 38     /* 256 * 0.15 */
36#define B1_RATE  26     /* 256 * 0.1 */
37#define DYNAMIC_RANGE (70 << 8)   /* typical dynamic range */
38
39/*  The following are internal constants used by the voicing detector program
40*/
41#define VOICE_MASK           0xfffffff0
42#define VOICE_BIT            0x01L
43#define QUIET_BIT            0x02L
44#define FAST_VOICE_BIT       0x04L
45#define BELOW_THRESHOLD_BIT  0x08L
46#define REC_VOICE_BIT      0x10L
47#define REC_QUIET_BIT      0x20L
48#define REC_UNSURE_BIT       0x40L
49
50#define VOICING_DATA(X)      ((X) & (VOICE_BIT | QUIET_BIT))
51#define FAST_MATCH_DATA(X)   ((X) & (FAST_VOICE_BIT | QUIET_BIT))
52
53#define FAST_BIT_SET(X)      ((X) & FAST_VOICE_BIT)
54#define QUIET_BIT_SET(X)     ((X) & QUIET_BIT)
55#define RECOGNIZER_QUIET(X)  ((X) & REC_QUIET_BIT)
56#define SET_VOICING_CODES(X,C) (((X) & ~(REC_VOICE_BIT | REC_QUIET_BIT | REC_UNSURE_BIT)) | (C))
57
58typedef featdata voicedata;
59
60typedef struct
61{
62  int   b0;   /* background estimate, level 0 */
63  int   b1;   /* background estimate, level 1 */
64  int   s0;
65  int   margin;
66  int   fast_margin;
67  int   quiet_margin;
68  int   voice_duration; /* threshold for consecutive speech frames */
69  int   quiet_duration; /* threshold for consecutive silence frames */
70  int   count;
71  long  sil_count;  /* no. of consecutive silence frames */
72  long  fast_count;  /* no. of consecutive speech frames */
73  long  speech_count;  /* no. of consecutive speech frames for barge-in */
74  int   voice_status;  /* voicing decision */
75}
76voicing_info;
77
78
79void init_voicing_analysis(voicing_info *voice);
80long voicing_analysis(voicing_info *voice, voicedata enval, int* log);
81
82#endif
83