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