14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------*
24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  SR_AcousticState.h                                                       *
34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Copyright 2007, 2008 Nuance Communciations, Inc.                         *
54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the 'License');          *
74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  you may not use this file except in compliance with the License.         *
84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  You may obtain a copy of the License at                                  *
104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0                           *
114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software      *
134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  distributed under the License is distributed on an 'AS IS' BASIS,        *
144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  See the License for the specific language governing permissions and      *
164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  limitations under the License.                                           *
174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/
194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef __SR_ACOUSTICSTATE_H
214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define __SR_ACOUSTICSTATE_H
224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <stddef.h>
264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <stdlib.h>
274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "SR_AcousticModels.h"
284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "SR_AcousticStatePrefix.h"
294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "SR_Recognizer.h"
304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "pstdio.h"
314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_ReturnCode.h"
324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @addtogroup SR_AcousticStateModule SR_AcousticState API functions
364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Contains Acoustic state information.
374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @{
394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Contains Acoustic state information.
434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct SR_AcousticState_t
454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Resets the acoustic state object.
484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * The recognizer adapts to the acoustic state of the caller and calling environment
494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * during a call in order to improve recognition accuracy. The platform must reset
504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * the AcousticState either at the beginning of a new call or at the end of a call in
514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * order to reset acoustic state information for a new caller.
524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param recognizer SR_Recognizer handle
544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  * @return ESR_INVALID_ARGUMENT if recognizer is null
554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*reset)(SR_Recognizer* recognizer);
574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Loads an AcousticState from file.
594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param recognizer SR_Recognizer handle
614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param file File to read from
624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if recognizer is null
634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*load)(SR_Recognizer* recognizer, const LCHAR* filename);
654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Saves an AcousticState to a file.
674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param recognizer SR_Recognizer handle
694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param file File to write into
704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if recognizer is null
714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*save)(SR_Recognizer* recognizer, const LCHAR* filename);
734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Gets an AcousticState into a string.
754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param recognizer SR_Recognizer handle
774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param param_string contains data from the recognizer
784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if recognizer is null
794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*get)(SR_Recognizer* recognizer, LCHAR *param_string, size_t* len );
814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets an AcousticState from a string.
834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param recognizer SR_Recognizer handle
854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param param_string contains data to set
864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if recognizer is null
874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*set)(SR_Recognizer* recognizer, const LCHAR *param_string );
894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Destrroys the acoustic state of a recognizer
914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param recognizer SR_Recognizer handle
934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  * @return ESR_INVALID_ARGUMENT if recognizer is null
944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*destroy)(SR_Recognizer* recognizer);
964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectSR_AcousticState;
984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @name AcousticState
1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * An AcousticState is a container for the configurations of several items used in recognition:
1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * - What models are in use (where there is more than one available). E.g. M/F or adapted models.
1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * - Properties of the channels (microphone, environment, speaker). These properties are updated
1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * during recognition. E.g. There may be more than one microphone in use, offering zone-based
1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * input. Each zone may require the maintenance of its own channel settings.
1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * AcousticState must offer persistence to reflect optimal settings and preferred use on start-up.
1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @{
1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Loads an AcousticState from file.
1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param recognizer SR_Recognizer handle
1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param filename File to read from
1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if recognizer is null
1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectSREC_ACOUSTICSTATE_API ESR_ReturnCode SR_AcousticStateLoad(SR_Recognizer* recognizer, const LCHAR* filename);
1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Saves an AcousticState to a file.
1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param recognizer SR_Recognizer handle
1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param filename File to write into
1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_NOT_IMPLEMENTED
1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectSREC_ACOUSTICSTATE_API ESR_ReturnCode SR_AcousticStateSave(SR_Recognizer* recognizer, const LCHAR* filename);
1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @}
1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @name Possible AcousticState <-> Model operations
1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @{
1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
1394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Resets the acoustic state object.
1404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * The recognizer adapts to the acoustic state of the caller and calling environment
1414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * during a call in order to improve recognition accuracy. The platform must reset
1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * the AcousticState either at the beginning of a new call or at the end of a call in
1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * order to reset acoustic state information for a new caller.
1444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
1454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param recognizer SR_Recognizer handle
1464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if recognizer is null
1474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
1484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectSREC_ACOUSTICSTATE_API ESR_ReturnCode SR_AcousticStateReset(SR_Recognizer* recognizer);
1494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectSREC_ACOUSTICSTATE_API ESR_ReturnCode SR_AcousticStateSet ( SR_Recognizer* recognizer, const LCHAR *param_string );
1504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectSREC_ACOUSTICSTATE_API ESR_ReturnCode SR_AcousticStateGet ( SR_Recognizer* recognizer, LCHAR *param_string, size_t* len );
1514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
1524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @}
1534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
1544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
1564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @}
1574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
1584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
1594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* __SR_ACOUSTICSTATE_H */
160