134 lines
3.9 KiB
C
134 lines
3.9 KiB
C
/*
|
|
* Copyright 2009-2014 Arsen Chaloyan
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
* $Id: asr_engine.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $
|
|
*/
|
|
|
|
#ifndef ASR_ENGINE_H
|
|
#define ASR_ENGINE_H
|
|
|
|
/**
|
|
* @file asr_engine.h
|
|
* @brief Basic ASR engine on top of UniMRCP client library
|
|
*/
|
|
|
|
#include "apt_log.h"
|
|
|
|
/** Lib export/import defines (win32) */
|
|
#ifdef WIN32
|
|
#ifdef ASR_CLIENT_STATIC_LIB
|
|
#define ASR_CLIENT_DECLARE(type) type __stdcall
|
|
#else
|
|
#ifdef ASR_CLIENT_LIB_EXPORT
|
|
#define ASR_CLIENT_DECLARE(type) __declspec(dllexport) type __stdcall
|
|
#else
|
|
#define ASR_CLIENT_DECLARE(type) __declspec(dllimport) type __stdcall
|
|
#endif
|
|
#endif
|
|
#else
|
|
#define ASR_CLIENT_DECLARE(type) type
|
|
#endif
|
|
|
|
APT_BEGIN_EXTERN_C
|
|
|
|
/** Opaque ASR engine */
|
|
typedef struct asr_engine_t asr_engine_t;
|
|
|
|
/** Opaque ASR session */
|
|
typedef struct asr_session_t asr_session_t;
|
|
|
|
|
|
/**
|
|
* Create ASR engine.
|
|
* @param root_dir_path the path to root directory
|
|
* @param log_priority the log priority level
|
|
* @param log_output the log output mode
|
|
*/
|
|
ASR_CLIENT_DECLARE(asr_engine_t*) asr_engine_create(
|
|
const char *root_dir_path,
|
|
apt_log_priority_e log_priority,
|
|
apt_log_output_e log_output);
|
|
|
|
/**
|
|
* Destroy ASR engine.
|
|
* @param engine the engine to destroy
|
|
*/
|
|
ASR_CLIENT_DECLARE(apt_bool_t) asr_engine_destroy(asr_engine_t *engine);
|
|
|
|
|
|
|
|
/**
|
|
* Create ASR session.
|
|
* @param engine the engine session belongs to
|
|
* @param profile the name of UniMRCP profile to use
|
|
*/
|
|
ASR_CLIENT_DECLARE(asr_session_t*) asr_session_create(asr_engine_t *engine, const char *profile);
|
|
|
|
/**
|
|
* Initiate recognition based on specified grammar and input file.
|
|
* @param session the session to run recognition in the scope of
|
|
* @param grammar_file the name of the grammar file to use (path is relative to data dir)
|
|
* @param input_file the name of the audio input file to use (path is relative to data dir)
|
|
* @return the recognition result (input element of NLSML content)
|
|
*/
|
|
ASR_CLIENT_DECLARE(const char*) asr_session_file_recognize(
|
|
asr_session_t *session,
|
|
const char *grammar_file,
|
|
const char *input_file);
|
|
|
|
/**
|
|
* Initiate recognition based on specified grammar and input stream.
|
|
* @param session the session to run recognition in the scope of
|
|
* @param grammar_file the name of the grammar file to use (path is relative to data dir)
|
|
* @param callback the callback to be called to get input media frames
|
|
* @param obj the object to pass to the callback
|
|
* @return the recognition result (input element of NLSML content)
|
|
*
|
|
* @remark Audio data should be streamed through
|
|
* asr_session_stream_write() function calls.
|
|
*/
|
|
ASR_CLIENT_DECLARE(const char*) asr_session_stream_recognize(
|
|
asr_session_t *session,
|
|
const char *grammar_file);
|
|
|
|
/**
|
|
* Write audio data to recognize.
|
|
* @param session the session to write audio data for
|
|
* @param data the audio data
|
|
* @param size the size of data
|
|
*/
|
|
ASR_CLIENT_DECLARE(apt_bool_t) asr_session_stream_write(
|
|
asr_session_t *session,
|
|
char *data,
|
|
int size);
|
|
|
|
/**
|
|
* Destroy ASR session.
|
|
* @param session the session to destroy
|
|
*/
|
|
ASR_CLIENT_DECLARE(apt_bool_t) asr_session_destroy(asr_session_t *session);
|
|
|
|
|
|
/**
|
|
* Set log priority.
|
|
* @param priority the priority to set
|
|
*/
|
|
ASR_CLIENT_DECLARE(apt_bool_t) asr_engine_log_priority_set(apt_log_priority_e log_priority);
|
|
|
|
|
|
APT_END_EXTERN_C
|
|
|
|
#endif /* ASR_ENGINE_H */
|