0
点赞
收藏
分享

微信扫一扫

遇到的C++ cli 转 C++ native 为C# 程序提供接口。

接口文件

 

/*++
(do not edit the above line)
********************************************************************************
**
**  “INTEL CONFIDENTIAL
**  Copyright 2013 - 2018 Intel Corporation All Rights Reserved.
**
********************************************************************************
**
**  The source code contained or described herein and all documents related to
**  the source code ("Material") are owned by Intel Corporation or its suppliers
**  or licensors. Title to the Material remains with Intel Corporation or its
**  suppliers and licensors. The Material may contain trade secrets and
**  proprietary and confidential information of Intel Corporation and its
**  suppliers and licensors, and is protected by worldwide copyright and trade
**  secret laws and treaty provisions. No part of the Material may be used,
**  copied, reproduced, modified, published, uploaded, posted, transmitted,
**  distributed, or disclosed in any way without Intel’s prior express written
**  permission.
**
**  No license under any patent, copyright, trade secret or other intellectual
**  property right is granted to or conferred upon you by disclosure or delivery
**  of the Materials, either expressly, by implication, inducement, estoppel or
**  otherwise. Any license under such intellectual property rights must be
**  express and approved by Intel in writing.
**
**  THE MATERIAL IS PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF
**  ANY KIND INCLUDING WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT,
**  OR FITNESS FOR A PARTICULAR PURPOSE. INTEL WILL NOT PROVIDE ANY SUPPORT,
**  ASSISTANCE, INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE
**  ANY UPDATES, ENHANCEMENTS OR EXTENSIONS.  Intel does not warrant or assume
**  responsibility for the accuracy or completeness of any information, text,
**  graphics, links or other items contained within the material.
**
**  LIMITATION OF LIABILITY.  IN NO EVENT SHALL INTEL OR ITS SUPPLIERS BE LIABLE
**  FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, LOST PROFITS,
**  BUSINESS INTERRUPTION, OR LOST INFORMATION) ARISING OUT OF THE USE OF OR
**  INABILITY TO USE THE MATERIAL, EVEN IF INTEL HAS BEEN ADVISED OF THE
**  POSSIBILITY OF SUCH DAMAGES.
**
**  *Third-party brands and names are the property of their respective owners.
**
**  Unless otherwise agreed by Intel in writing, you may not remove or alter
**  this notice or any other notice embedded in Materials by Intel
**  or Intel’s suppliers or licensors in any way.?**
********************************************************************************
--*/
 
#ifndef _ROCKHOPPER_H_
#define _ROCKHOPPER_H_
 
#ifdef ROCKHOPPER_LIBRARY_STATIC
#   define ROCKHOPPER_API_EXPORT
#else
#   ifdef _WIN32
#       if defined(ROCKHOPPER_EXPORT) /* Visual Studio */
#           define ROCKHOPPER_API_EXPORT __declspec(dllexport)
#       elif defined(__CYGWIN__) /* Disable this on Cygwin, it doesn't work */
#           define ROCKHOPPER_API_EXPORT
#       else
#           define ROCKHOPPER_API_EXPORT __declspec(dllimport)
#       endif
#   else
#       if defined(ROCKHOPPER_EXPORT)
#           define ROCKHOPPER_API_EXPORT __attribute__((visibility("default")))
#       else
#           define ROCKHOPPER_API_EXPORT
#       endif
#   endif
#endif
 
#ifdef __cplusplus
extern "C" {
#endif
 
    // left for compatibility
    #define ROCKHOPPER_SUCCESS                  RH_NO_ERROR
    #define ROCKHOPPER_ERROR                    RH_ERROR_GENERIC
    #define ROCKHOPPER_UNKNOWN_ERROR            RH_ERROR_GENERIC
    #define ROCKHOPPER_INVALID_PARAMETER        RH_ERROR_INVALID_PARAM
    #define ROCKHOPPER_INVALID_HANDLE_VALUE     RH_ERROR_INVALID_HANDLE_VALUE
    #define ROCKHOPPER_INVALID_PATH             RH_ERROR_INVALID_PATH
 
    // base error codes
    #define RH_NO_ERROR                          0
    #define RH_ERROR_GENERIC                    -1
    #define RH_ERROR_OUT_OF_MEMORY              -2
    #define RH_ERROR_FILE_IO                    -3
    #define RH_ERROR_INVALID_RESOURCE           -4
    #define RH_ERROR_INVALID_PARAM              -5
    #define RH_ERROR_INVALID_HANDLE_VALUE       -6
    #define RH_ERROR_INVALID_PATH               -7
 
    // Threading error codes
    #define RH_ERROR_THREAD_ALREADY_STARTED     -10
    #define RH_ERROR_THREAD_START_FAILED        -11
    #define RH_ERROR_THREAD_STOP_FAILED         -12
    #define RH_ERROR_THREAD_NOT_STARTED         -13
 
    // Communication error codes
    #define RH_ERROR_OUTPUT_BUFFER_FULL         -20
    #define RH_ERROR_MESSAGE_ENQUEUE_FAILED     -21
 
    // Rest error codes
    #define RH_ERROR_MODULE_INIT_FAILED         -30
    #define RH_ERROR_MODULE_NOT_INITIALIZED     -31
    #define RH_ERROR_ENGINE_NOT_STARTED         -32
    #define RH_ERROR_ENGINE_WRONG_STATE         -33
    #define RH_ERROR_MEMORY_COPY                -34
    #define RH_ERROR_TOO_SMALL_BUFFER           -35
    #define RH_ERROR_DATA_OVERWRITTEN           -36
    #define RH_ERROR_NOT_SUPPORTED              -37
 
    // Events
    #define ROCKHOPPER_EVENT_ON_READY_FOR_SPEECH 1
    #define ROCKHOPPER_EVENT_ON_SPEECH_BEGIN     2
    #define ROCKHOPPER_EVENT_ON_SPEECH_END       3
    #define ROCKHOPPER_EVENT_ON_RMS_CHANGED      4
    #define ROCKHOPPER_EVENT_ON_ERROR            5
    #define ROCKHOPPER_EVENT_ENGINE_STARTED      6
    #define ROCKHOPPER_EVENT_ENGINE_STOPPED      7
 
    typedef void* ASR_HANDLE; // speech recognition engine handle type
    typedef void* WFST_HANDLE; // Handle for a (dynamic) WFST resource
 
    typedef enum RockhopperDataType
    {
        ROCKHOPPER_DATA_TYPE_SAMPLE_INT_16,
        ROCKHOPPER_DATA_TYPE_FEATURE_INT_16
    } RockhopperDataType;
 
    /// C-style interface used intentionally to allow for bindings in
    /// runtimes that don't support/understand C++ name mangling or
    /// reference types
 
    typedef long(*UtteranceCallback)(
        void* p,                    // callback function parameter passed in RockhopperFSSetResultCallback
        const short* samples,       // Data buffer with utterance samples. Samples are sent only for final result.
                                    // Utterance longer than source buffer length will be passed without samples(null pointer).
        int   nSamples,             // number of samples in buffer
        const char* utteranceId,    // wall clock time when utterance begins
        const char* utteranceText,  // recognized text
        float score,                // recognition score (LM)
        int   isFinal               // 0: partial result, 1: final result (end of utterance)
        );
 
    typedef void(*EventCallback)(
        void* p,                    // callback function parameter passed in RockhopperFSSetEventCallback
        int eventCode,              // event code
        int value);                 // event value
 
#pragma pack(push, 4)
    typedef struct _AsrEngineStatistics {
        union {
            struct {
                unsigned int speech : 1;
                unsigned int frontend : 3;
                unsigned int scorer : 3;
                unsigned int decoder : 3;
                unsigned int reserved : 22;
            } fields;
            int value;
        } state;
        int signalvl;
        int samples_captured_ms;
        int frames_extracted_ms;
        int frames_decoded_ms;
        float uttRtFactor;
        int utt_min_snr;
        int utt_max_snr;
        int utt_snr;
    } AsrEngineStatistics;
 
#pragma pack(pop)
    /**
     * Initialize the ASR engine component.
     *
     * @param configurationFilename - absolute path to configuration file the ASR engine shall
     *                                read all its configuration parameters from
     * @param resourceDirectory - absolute path to resources listed in config file if relative path used
     * @param userResourceDirectory - absolute path to user resources (e.g. dynamic lexicon)
     *                                listed in config file if relative path used
     * @param [outptr] asrengine - handle to ASR engine
     * @return One of:
     *         - ROCKHOPPER_SUCCESS (initialization completed successfully),
     *         - ROCKHOPPER_INVALID_PATH (cannot access the indicated configurationFilename),
     *         - ROCKHOPPER_UNKNOWN_ERROR (error)
     */
    ROCKHOPPER_API_EXPORT int RockhopperFSInitialize(const char* configurationFilename, const char* resourceDirectory,
        const char* userResourceDirectory, ASR_HANDLE* asrengine);
 
    /**
     * Update dynamic resource from a lexicon and a text acceptor WFST.
     *
     * @param configurationFilename - absolute path to configuration file the ASR engine shall
     *                                read all its configuration parameters from
     * @param resourceDirectory - absolute path of resource data folder (e.g. acoustic model)
     * @param userResourceDirectory - absolute path to target folder to contain user generated data
     *                                (e.g. dynamic lexicon)
     * @param tagId - ID of meta tag in CL statistical language model the dictionary is "plugged in"
     * @param wfst - Grammar wfst used for vocabulary.
     *
     * @return One of:
     *         - ROCKHOPPER_SUCCESS (dynamic lexicon update completed successfully),
     *         - ROCKHOPPER_INVALID_PATH (cannot access the indicated configurationFilename),
     *         - ROCKHOPPER_UNKNOWN_ERROR (error)
     */
    ROCKHOPPER_API_EXPORT int RockhopperFSUpdateDynResource(const char* configurationFilename,
        const char* resourceDirectory, const char* userResourceDirectory, int tagId,
        WFST_HANDLE wfst);
 
    /**
     * Set callback for result processing.
     *
     * @param [in] asrengine    - handle to ASR engine
     * @param [in] rescallback  - result callback implementation to be invoked once
     *                            utternace or its fragment is recognized
     * @param [in] p            - callback parameter
     * @return One of:
     *         - ROCKHOPPER_SUCCESS (callback set successfully),
     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),
     *         - ROCKHOPPER_UNKNOWN_ERROR (error)
     */
    ROCKHOPPER_API_EXPORT int RockhopperFSSetResultCallback(ASR_HANDLE asrengine,
        UtteranceCallback callback, const void* p);
 
    /**
     * Set callback for events like start / stop engine, ready for speech, speech begin/end, error.
     *
     * @param [in] asrengine handle to ASR engine
     * @param [in] evtcallback - event callback called whenever engine state is changing
     * @param [in] p - callback parameter
     * @return One of:
     *         - ROCKHOPPER_SUCCESS (callback set successfully),
     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),
     *         - ROCKHOPPER_UNKNOWN_ERROR (error)
     */
    ROCKHOPPER_API_EXPORT int RockhopperFSSetEventCallback(ASR_HANDLE asrengine,
        EventCallback callback, const void* p);
 
    /**
     * Start phrase detection process.
     * In response to this method the engine is expected to initialize the
     * recognition and continue until a call to stop function is received.
     *
     * @param [in] asrengine - handle to ASR engine
     * @return One of:
     *         - ROCKHOPPER_SUCCESS (started successfully),
     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),
     *         - ROCKHOPPER_UNKNOWN_ERROR (error)
     */
    ROCKHOPPER_API_EXPORT int RockhopperFSStartEngine(ASR_HANDLE asrengine);
 
    /**
     * Stop Rockhopper engine - resources are not released.
     *
     * @param [in] asrengine - handle to ASR engine
     * @param [in] waitForEndOfUtteranceProcessing - flag:
     *                                               True - requests deffered stop, routine does not return till last
     *                                                      samples/frames in all intermediate buffers are processed
     *                                               False - stops immediately if not doing batch file processing
     * @return One of:
     *         - ROCKHOPPER_SUCCESS (stopped successfully),
     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle) ,
     *         - ROCKHOPPER_UNKNOWN_ERROR (error)
     */
#ifdef __cplusplus
    ROCKHOPPER_API_EXPORT int RockhopperFSStopEngine(ASR_HANDLE asrengine, int waitForEndOfUtteranceProcessing = 1);
#else
    ROCKHOPPER_API_EXPORT int RockhopperFSStopEngine(ASR_HANDLE asrengine, int waitForEndOfUtteranceProcessing);
#endif
 
    /**
     * Release resources of Rockhopper engine.
     *
     * @param [in] asrengine - handle to ASR engine
     * @return One of:
     *         - ROCKHOPPER_SUCCESS (released successfully),
     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),
     *         - ROCKHOPPER_UNKNOWN_ERROR (error)
     */
    ROCKHOPPER_API_EXPORT int RockhopperFSReleaseEngine(ASR_HANDLE asrengine);
 
    /**
     * Read current Rockhopper state & statistics.
     *
     * @param [in] asrengine - handle to ASR engine
     * @param [inout] stats - pointer to statistics buffer
     * @return One of:
     *         - ROCKHOPPER_SUCCESS (stopped successfully),
     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),
     *         - ROCKHOPPER_UNKNOWN_ERROR (error)
     */
    ROCKHOPPER_API_EXPORT int RockhopperFSGetStatistics(ASR_HANDLE asrengine, AsrEngineStatistics* stats);
 
    /**
    * Feed stream source with samples from external application.
    *
    * @param [in] asrengine - handle to ASR engine
    * @param [in] samples - samples buffer 16kHz mono 16bit resolution
    * @param [in] nSamples - number of samples
    * @return number of samples consumed by ASR engine ( >=0 ) or STATUS code ( <0 ):
    *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),
    *         - ROCKHOPPER_UNKNOWN_ERROR (error)
    */
    ROCKHOPPER_API_EXPORT int RockhopperFSPushSamples(ASR_HANDLE asrengine, short* samples, int nSamples);
 
    /**
    * Feed stream source with data from external application.
    *
    * @param [in] asrengine - handle to ASR engine
    * @param [in] data - pointer to buffer with data to push
    * @param [in] elementsCount - number of elements of data, in case of:
    *                               SAMPLE_INT_16 it is the number of samples
    *                               FEATURE_INT_16 it is the number of features
    *                               (must be aligned to features per frame set in config file)
    * @param [in] type - type of data to push
    * @return number of samples consumed by ASR engine ( >=0 ) or STATUS code ( <0 ):
    *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),
    *         - ROCKHOPPER_UNKNOWN_ERROR (error)
    */
    ROCKHOPPER_API_EXPORT int RockhopperFSPushData(ASR_HANDLE asrengine, void* data,
        int elementsCount, RockhopperDataType type);
 
    /**
     * Convert grammar specified in JSGF to a WFST
     * The WFST is a transducer with input and output labels
     *
     * @param [in] configurationFilename - absoulute path to configuration file
     *        the asr engine shall read all it's configuration parameters from
     * @param [in] grammar - string buffer representing grammar in JSGF, null terminated
     *                       (http://www.w3.org/TR/2000/NOTE-jsgf-20000605/)
     * @param [in] grammarRule - root rule name (if not specified first public rule is selected)
     * @param [in] grammarSize - Size of the grammar string buffer including terminating null
     * @param [in] grammarRuleSize = Size of the grammarRule buffer including terminating null
     * @param [in] firstWordID - Word ID of the first word in the generated WFST.
     *                           It is important that word IDs of different resources do not overlap.
     * @param [out] wfst - handle to resulting grammar WFST
     *
     * @return One of:
     *         - ROCKHOPPER_SUCCESS (grammar converted successfully),
     *         - ROCKHOPPER_UNKNOWN_ERROR (error)
     */
    ROCKHOPPER_API_EXPORT int RockhopperFSConvertJSGFToFST(const char *configurationFilename,
                                                           const char* grammar,
                                                           const char* grammarRule,
                                                           int grammarSize,
                                                           int grammarRuleSize,
                                                           int firstWordID,
                                                           WFST_HANDLE* wfst);
 
    /**
     * Convert ARPA statistical language model into WFST that can be used with
     * RockhopperFSUpdateDynResource() to create dynamic recognition resources
     *
     * @param [in] configurationFilename - absoulute path to configuration file
     *        the asr engine shall read all it's configuration parameters from
     * @param [in] arpa - string buffer representing grammar in ARPA format
     * @param [in] arpaSize - Size of the arpa string buffer
     * @param [in] firstWordID - Word ID of the first word in the generated WFST.
     *                           It is important that word IDs of different resources do not overlap.
     * @param [out] wfst - handle to resulting grammar WFST
     *
     * @return One of:
     *         - ROCKHOPPER_SUCCESS (grammar converted successfully),
     *         - ROCKHOPPER_UNKNOWN_ERROR (error)
     */
    ROCKHOPPER_API_EXPORT int RockhopperFSConvertARPAToFST(const char *configurationFilename,
                                                           const char* arpa,
                                                           int arpaSize,
                                                           int firstWordID,
                                                           WFST_HANDLE* wfst);
 
    /**
     * Convert list of phrases into a Rockhopper WFST that can be used with
     * RockhopperFSUpdateDynResource() to create dynamic recognition resources
     *
     * @param [in] configurationFilename - absoulute path to configuration file
     *        the asr engine shall read all it's configuration parameters from
     * @param [in] phrases - string buffer representing grammar in JSGF
     *                       The different phrases are separated by the newline character '\n'
     * @param [in] phrasesSize - Size of the phrases string buffer
     * @param [in] firstWordID - Word ID of the first word in the generated WFST.
     *                           It is important that word IDs of different resources do not overlap.
     * @param [out] wfst - handle to resulting phrase grammar WFST
     *
     * @return One of:
     *         - ROCKHOPPER_SUCCESS (grammar converted successfully),
     *         - ROCKHOPPER_UNKNOWN_ERROR (error)
     */
    ROCKHOPPER_API_EXPORT int RockhopperFSConvertPhrasesToFST(const char* configurationFilename,
                                                              const char* phrases,
                                                              int phrasesSize,
                                                              int firstWordID,
                                                              WFST_HANDLE* wfst);
 
    /**
     * Convert AT&T (OpenFST) ASCII text representation of a WFST into
     * a Rockhopper WFST.
     *
     * @param [in] configurationFilename - absoulute path to configuration file
     *        the asr engine shall read all it's configuration parameters from
     * @param [in] wfst_text - ASCII representation of the WFST
     * @param [in] text_size - Length of wfst_text in bytes
     * @param [in] firstWordID - Word ID of the first word in the generated WFST.
     *                           It is important that word IDs of different resources do not overlap.
     * @param [out] wfst - Handle to the Rockhopper WFST
     *
     * @return One of:
     *         - ROCKHOPPER_SUCCESS (grammar converted successfully),
     *         - ROCKHOPPER_UNKNOWN_ERROR (error)
     */
    ROCKHOPPER_API_EXPORT int RockhopperFSConvertFST(const char *configurationFilename,
                                                     const char *wfst_text,
                                                     int text_size,
                                                     int firstWordID,
                                                     WFST_HANDLE* wfst);
 
    /**
     * Release (dynamic) WFST resource.
     *
     * @param [in] wfst - handle to a WFST resource
     * @return One of:
     *         - ROCKHOPPER_SUCCESS (stopped successfully),
     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),
     *         - ROCKHOPPER_UNKNOWN_ERROR (error)
     */
    ROCKHOPPER_API_EXPORT int RockhopperFSReleaseFST(WFST_HANDLE wfst);
 
    /**
    * Get the Rockhopper version string.
    *
    * @param [out] versionString - pointer to char string with the version ID
    * @return One of:
    *         - ROCKHOPPER_SUCCESS (stopped successfully),
    *         - ROCKHOPPER_UNKNOWN_ERROR (error)
    */
    ROCKHOPPER_API_EXPORT int RockhopperGetVersionString(const char **versionString);
 
#ifdef __cplusplus
}
#endif
 
#endif
 
C++ cli  头文件
 
#pragmaonce
 
#include"pch.h"
#include"../SDK/rockhopper.h"
//using namespace System;
 
#pragmacomment (lib, "../SDK/rockhopper.lib")
 
namespace IntelSDK {

 

publicenumclassSDKRockhopperDataType
        {
               ROCKHOPPER_DATA_TYPE_SAMPLE_INT_16,
               ROCKHOPPER_DATA_TYPE_FEATURE_INT_16
        };
        //[Serializable]
        publicrefstructSDKAsrEngineStatistics
        {
 
        public:
               void setValue(intval)
               {
                       value = val;
               }
               int getValue()
               {
                       return value;
               }
               void setSignalvl(intval)
               {
                       signalvl = val;
               }
               int getSigalvl()
               {
                       return signalvl;
               }
               void setSamples_captured_ms(intval)
               {
                       samples_captured_ms = val;
               }
               int gettSamples_captured_ms()
               {
                       return samples_captured_ms;
               }
               void setFrames_extracted_ms(intval)
               {
                       frames_extracted_ms = val;
               }
               int getFrames_extracted_ms()
               {
                       return frames_extracted_ms;
               }
               void setFrames_decoded_ms(intval)
               {
                       frames_decoded_ms = val;
               }
               int getFrames_decoded_ms()
               {
                       return frames_decoded_ms;
               }
 
               void setUttRtFactor(floatval)
               {
                       uttRtFactor = val;
               }
               float getUttRtFactor()
               {
                       return uttRtFactor;
               }
               void setUtt_min_snr(intval)
               {
                       utt_min_snr = val;
               }
               int getUtt_min_snr()
               {
                       return utt_min_snr;
               }
               void setUtt_max_snr(intval)
               {
                       utt_max_snr = val;
               }
               int getUtt_max_snr()
               {
                       return utt_max_snr;
               }
               void setUtt_snr(intval)
               {
                       utt_snr = val;
               }
               int getUtt_snr()
               {
                       return utt_snr;
               }

 

private:
               int value;
               int signalvl;
               int samples_captured_ms;
               int frames_extracted_ms;
               int frames_decoded_ms;
               float uttRtFactor;
               int utt_min_snr;
               int utt_max_snr;
               int utt_snr;
 
        };
 
        publicdelegatevoiddelegateEventCallback(int eventCode, int value);
        publicdelegateintdelegateUtteranceCallback(System::String^ UtteranceText);
        publicdelegatelong  Delegate_SDKUtteranceCallback(void* p, constshort* samples, int nSamples, constchar* UtteranceId, constchar* UtteranceText, float score, int isFinal);
        publicdelegatevoid  Delegate_SDKFSSetEventCallback(void* p, int eventCode, int value);
 
        publicrefclassOffLineSDK
        {
        private:
               ASR_HANDLE asrengine = 0;
               WFST_HANDLE wfst = 0;
        public:
               System::String^ getTest(System::String^ name);
               OffLineSDK();
               ~OffLineSDK();
               int SDKRockhopperFSStartEngine();
               int SDKRockhopperFSStopEngine();
               int SDKRockhopperFSInitialize(System::String^ configurationFilename, System::String^ resourceDirectory, System::String^ userResourceDirectory);
               int SDKRockhopperFSUpdateDynResource(System::String^ configurationFilename, System::String^ resourceDirectory, System::String^ userResourceDirectory, inttagId);
               int SDKRockhopperFSSetResultCallback();
               int  SDKRockhopperFSReleaseEngine();
               int  SDKRockhopperFSGetStatistics(SDKAsrEngineStatistics^ stats);
               int  SDKRockhopperFSPushSamples(array< int>^ samples, intnSamples);
               int  SDKRockhopperFSConvertJSGFToFST(System::String^ configurationFilename, System::String^ grammar, System::String^ grammarRule, intgrammarSize, intgrammarRuleSize, intfirstWordID);
               int  SDKRockhopperFSConvertARPAToFST(System::String^ configurationFilename, array<short>^ arpa, intarpaSize, intfirstWordID);
               int  SDKRockhopperFSPushData(array<short>^ wfst_text, intelementCount, SDKRockhopperDataTypetype);
               int  SDKRockhopperFSReleaseFST();
               int     SDKRockhopperFSSetEventCallback();
 
        private:
               staticlong  SDKUtteranceCallback(void* p, constshort* samples, intnSamples, constchar* UtteranceId, constchar* UtteranceText, floatscore, intisFinal);
               staticvoid  SDKFSSetEventCallback(void* p, inteventCode, intvalue);
        public:
               staticeventdelegateEventCallback^ FSSetEventCallback;
               staticeventdelegateUtteranceCallback^ EventUtteranceCallback;
 
        };
}

 

 

C++ cli 源文件

 

#include"pch.h"
#include"IntelSDK.h"
#include<string>
#include<iostream>
#include<fstream>
#include<cvt/wstring>
#include<codecvt>
 
usingnamespace IntelSDK;
#include<msclr\marshal_cppstd.h>
 
usingnamespace System::Runtime::InteropServices;
 
constchar* ToCppString(System::String^ s)
{
        msclr::interop::marshal_context context;
        constchar* result = context.marshal_as<constchar*>(s);
        return result;
}
 
bool To_CharStar(System::String^ source, char*& target)
{
        pin_ptr<constwchar_t> wch = PtrToStringChars(source);
        int len = ((source->Length + 1) * 2);
        target = newchar[len];
        return wcstombs(target, wch, len) != -1;
}
 
bool To_string(System::String^ source, std::string& target)
{
        pin_ptr<constwchar_t> wch = PtrToStringChars(source);
        int len = ((source->Length + 1) * 2);
        char* ch = newchar[len];
        bool result = wcstombs(ch, wch, len) != -1;
        target= ch;
        delete ch;
        return result;
}
std::string StringToAscIIChars(System::String^ text)
{
        //System::IntPtr ptr=Marshal::SecureStringToGlobalAllocAnsi(text);
        std::string converted = msclr::interop::marshal_as<std::string>(text->ToString());
        //std::string converted = msclr::interop::marshal_as< std::string >(text);
 
        return converted;
}
std::string StringUtf8ToAscIIChars(System::String^ text) {
 
        std::string converted = msclr::interop::marshal_as< std::string >(text);
        return converted;
}
System::String^ UTF8_To_Managed_Str(constchar* chars/*const std::string& str*/)
{
        if (chars == nullptr/*|| chars == "" || chars == " " || strnlen_s(chars, INT_MAX) <= 1*/) { // todo what is  0x20
               return"";
        }
        std::string str = std::string(chars);
        int nwLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);
 
        wchar_t* pwBuf = newwchar_t[nwLen + 1];
        memset(pwBuf, 0, nwLen * 2 + 2);
 
        MultiByteToWideChar(CP_UTF8, 0, str.c_str(), (int)str.length(), pwBuf, nwLen);
 
        System::String^ pStr = gcnew System::String(pwBuf);
 
        delete[] pwBuf;
        pwBuf = NULL;
 
        return pStr;
}

 

 

System::String^ OffLineSDK::getTest(System::String^ name)
{
        //ASR_HANDLE handle = 0;
        returnname;
}
 
OffLineSDK::OffLineSDK()
{
        //throw gcnew System::NotImplementedException();
}
 
OffLineSDK::~OffLineSDK()
{
        //throw gcnew System::NotImplementedException();
        SDKRockhopperFSReleaseEngine();
        SDKRockhopperFSReleaseFST();
}
 
intOffLineSDK::SDKRockhopperFSStartEngine()
{
 
        /*GCHandle handle = GCHandle::Alloc(objEngine);
        System::IntPtr pointer = GCHandle::ToIntPtr(handle);
        void* ptr = pointer.ToPointer();*/
        //auto ret = RockhopperFSStartEngine(this->ptr);
        pin_ptr<ASR_HANDLE> pin = &asrengine;
        auto ret = RockhopperFSStartEngine(*pin);
        //handle.Free();
        return ret;
}
 
intOffLineSDK::SDKRockhopperFSStopEngine()
{
        auto ret = RockhopperFSStopEngine(asrengine);
        return ret;
 
}
 
int IntelSDK::OffLineSDK::SDKRockhopperFSInitialize(System::String^ configurationFilename, System::String^ resourceDirectory, System::String^ userResourceDirectory)
{
 
        std::string fileName = configurationFilename ? StringToAscIIChars(configurationFilename) : "";
        std::string directory = resourceDirectory ? StringToAscIIChars(resourceDirectory) : "";
        std::string userDirectory = userResourceDirectory ? StringUtf8ToAscIIChars(userResourceDirectory) : "";
 
        pin_ptr<ASR_HANDLE> pin = &asrengine;
 
        std::cout <<"get some info."<< std::endl;
        std::cout << fileName << std::endl;
        std::cout << directory << std::endl;
        std::cout << userDirectory << std::endl;
 
        // Convert Object^ to void*
        /*GCHandle handle = GCHandle::Alloc(objEngine);
        System::IntPtr pointer = GCHandle::ToIntPtr(handle);
        void* ptr = pointer.ToPointer();
 
        this->ptr = ptr;
        ASR_HANDLE asrengine2 = 0;*/
        //auto ret = RockhopperFSInitialize("./OffLineConfigFile/rh_params.txt", "./OffLineConfigFile/", "E:\\Code", pin);
 
        //std::string fileName1 = "./OffLineConfigFile/rh_params.txt";
        //std::string directory1 = "./OffLineConfigFile/";
        //std::string userDirectory1 = "E:\\code";
        //
        //auto ret = RockhopperFSInitialize(fileName1.c_str(), directory1.c_str(), userDirectory1.c_str(), pin);
        
        auto ret = RockhopperFSInitialize(fileName.c_str(), directory.c_str(), userDirectory.c_str(), pin);
        return ret;
}
 
int IntelSDK::OffLineSDK::SDKRockhopperFSUpdateDynResource(System::String^ configurationFilename, System::String^ resourceDirectory, System::String^ userResourceDirectory, inttagId)
{
        std::string fileName = configurationFilename ? StringToAscIIChars(configurationFilename) : "";
        std::string rDirectory = resourceDirectory ? StringUtf8ToAscIIChars(resourceDirectory) : "";
        std::string userDirectory = userResourceDirectory ? StringUtf8ToAscIIChars(userResourceDirectory) : "";
        pin_ptr<WFST_HANDLE> pin = &wfst;
        auto ret = RockhopperFSUpdateDynResource(fileName.c_str(), rDirectory.c_str(), userDirectory.c_str(), tagId, pin);
        return ret;
}
 
int IntelSDK::OffLineSDK::SDKRockhopperFSSetResultCallback()
{
 
        Delegate_SDKUtteranceCallback^ fp = gcnewDelegate_SDKUtteranceCallback(SDKUtteranceCallback);
        GCHandle gch = GCHandle::Alloc(fp);
        System::IntPtr ip = Marshal::GetFunctionPointerForDelegate(fp);
        UtteranceCallback cb = static_cast<UtteranceCallback>(ip.ToPointer());
 
        pin_ptr<ASR_HANDLE> pin = &asrengine;
 
        auto ret = RockhopperFSSetResultCallback(*pin, cb, NULL);
 
        return ret;
 
}
 
int IntelSDK::OffLineSDK::SDKRockhopperFSReleaseEngine()
{
        int res = -1;
        pin_ptr<ASR_HANDLE> pin = &asrengine;
 
        if (pin)
        {
               res = RockhopperFSReleaseEngine(*pin);
        }
        return res;
}
 
int IntelSDK::OffLineSDK::SDKRockhopperFSGetStatistics(SDKAsrEngineStatistics^ stats)
{
        return 0;
}
 
int IntelSDK::OffLineSDK::SDKRockhopperFSPushSamples(array<int>^ samples, intnSamples)
{
        return 0;
}
 
int IntelSDK::OffLineSDK::SDKRockhopperFSConvertJSGFToFST(System::String^ configurationFilename, System::String^ grammar, System::String^ grammarRule, intgrammarSize, intgrammarRuleSize, intfirstWordID)
{
        return 0;
}
 
int IntelSDK::OffLineSDK::SDKRockhopperFSConvertARPAToFST(System::String^ configurationFilename, array<short>^ arpa, intarpaSize, intfirstWordID)
{
        return 0;
}
 
int IntelSDK::OffLineSDK::SDKRockhopperFSPushData(array<short>^ wfst_text, intelementCount, SDKRockhopperDataTypetype)
{
        if (wfst_text == nullptr)
        {
               return  -3;
        }
        constint MAX_BUF_SIZE = 20480;
        short* sample;
        short buff[MAX_BUF_SIZE] = { 0 };
        /* if (elementCount > MAX_BUF_SIZE) {
                sample = new char[elementCount];
         }
         else {
                sample = buff;
         }*/
        sample = buff;
 
        for (int i = 0; i < (int)elementCount; i++)
        {
               sample[i] = wfst_text[i];
        }
        //RockhopperDataType type= ROCKHOPPER_DATA_TYPE_SAMPLE_INT_16;
 
        /*if (offlinetype == SDKRockhopperDataType::ROCKHOPPER_DATA_TYPE_SAMPLE_INT_16)
        {
               type = ROCKHOPPER_DATA_TYPE_SAMPLE_INT_16;
        }
        else
        {
               type = ROCKHOPPER_DATA_TYPE_FEATURE_INT_16;
        }*/
 
        auto ret = RockhopperFSPushData(asrengine, sample, elementCount, ROCKHOPPER_DATA_TYPE_SAMPLE_INT_16);
        return ret;
}
 
int IntelSDK::OffLineSDK::SDKRockhopperFSReleaseFST()
{
        auto ret = -1;
        if (wfst)
        {
               ret = RockhopperFSReleaseFST(wfst);
        }
        return ret;
}
 
int IntelSDK::OffLineSDK::SDKRockhopperFSSetEventCallback()
{
 
        Delegate_SDKFSSetEventCallback^ fp = gcnewDelegate_SDKFSSetEventCallback(SDKFSSetEventCallback);
        GCHandle gch = GCHandle::Alloc(fp);
        System::IntPtr ip = Marshal::GetFunctionPointerForDelegate(fp);
        EventCallback callBack = static_cast<EventCallback>(ip.ToPointer());
        pin_ptr<ASR_HANDLE> pin = &asrengine;
 
        auto res = RockhopperFSSetEventCallback(*pin, callBack, NULL);
        return res;
}
 
long IntelSDK::OffLineSDK::SDKUtteranceCallback(void* p, constshort* samples, intnSamples, constchar* UtteranceId, constchar* UtteranceText, floatscore, intisFinal)
{
 
        auto ret = EventUtteranceCallback(UTF8_To_Managed_Str(UtteranceText));
        //return 0;
        return ret;
}
 
void IntelSDK::OffLineSDK::SDKFSSetEventCallback(void* p, inteventCode, intvalue)
{
 
        FSSetEventCallback(eventCode, value);
 
}

 

/*++(do not edit the above line)************************************************************************************  “INTEL CONFIDENTIAL**  Copyright 2013 - 2018 Intel Corporation All Rights Reserved.**************************************************************************************  The source code contained or described herein and all documents related to**  the source code ("Material") are owned by Intel Corporation or its suppliers**  or licensors. Title to the Material remains with Intel Corporation or its**  suppliers and licensors. The Material may contain trade secrets and**  proprietary and confidential information of Intel Corporation and its**  suppliers and licensors, and is protected by worldwide copyright and trade**  secret laws and treaty provisions. No part of the Material may be used,**  copied, reproduced, modified, published, uploaded, posted, transmitted,**  distributed, or disclosed in any way without Intel’s prior express written**  permission.****  No license under any patent, copyright, trade secret or other intellectual**  property right is granted to or conferred upon you by disclosure or delivery**  of the Materials, either expressly, by implication, inducement, estoppel or**  otherwise. Any license under such intellectual property rights must be**  express and approved by Intel in writing.****  THE MATERIAL IS PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF**  ANY KIND INCLUDING WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT,**  OR FITNESS FOR A PARTICULAR PURPOSE. INTEL WILL NOT PROVIDE ANY SUPPORT,**  ASSISTANCE, INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE**  ANY UPDATES, ENHANCEMENTS OR EXTENSIONS.  Intel does not warrant or assume**  responsibility for the accuracy or completeness of any information, text,**  graphics, links or other items contained within the material.****  LIMITATION OF LIABILITY.  IN NO EVENT SHALL INTEL OR ITS SUPPLIERS BE LIABLE**  FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, LOST PROFITS,**  BUSINESS INTERRUPTION, OR LOST INFORMATION) ARISING OUT OF THE USE OF OR**  INABILITY TO USE THE MATERIAL, EVEN IF INTEL HAS BEEN ADVISED OF THE**  POSSIBILITY OF SUCH DAMAGES.****  *Third-party brands and names are the property of their respective owners.****  Unless otherwise agreed by Intel in writing, you may not remove or alter**  this notice or any other notice embedded in Materials by Intel**  or Intel’s suppliers or licensors in any way.?**********************************************************************************--*/
#ifndef _ROCKHOPPER_H_#define _ROCKHOPPER_H_
#ifdef ROCKHOPPER_LIBRARY_STATIC#   define ROCKHOPPER_API_EXPORT#else#   ifdef _WIN32#       if defined(ROCKHOPPER_EXPORT) /* Visual Studio */#           define ROCKHOPPER_API_EXPORT __declspec(dllexport)#       elif defined(__CYGWIN__) /* Disable this on Cygwin, it doesn't work */#           define ROCKHOPPER_API_EXPORT#       else#           define ROCKHOPPER_API_EXPORT __declspec(dllimport)#       endif#   else#       if defined(ROCKHOPPER_EXPORT)#           define ROCKHOPPER_API_EXPORT __attribute__((visibility("default")))#       else#           define ROCKHOPPER_API_EXPORT#       endif#   endif#endif
#ifdef __cplusplusextern "C" {#endif
    // left for compatibility    #define ROCKHOPPER_SUCCESS                  RH_NO_ERROR    #define ROCKHOPPER_ERROR                    RH_ERROR_GENERIC    #define ROCKHOPPER_UNKNOWN_ERROR            RH_ERROR_GENERIC    #define ROCKHOPPER_INVALID_PARAMETER        RH_ERROR_INVALID_PARAM    #define ROCKHOPPER_INVALID_HANDLE_VALUE     RH_ERROR_INVALID_HANDLE_VALUE    #define ROCKHOPPER_INVALID_PATH             RH_ERROR_INVALID_PATH
    // base error codes    #define RH_NO_ERROR                          0    #define RH_ERROR_GENERIC                    -1    #define RH_ERROR_OUT_OF_MEMORY              -2    #define RH_ERROR_FILE_IO                    -3    #define RH_ERROR_INVALID_RESOURCE           -4    #define RH_ERROR_INVALID_PARAM              -5    #define RH_ERROR_INVALID_HANDLE_VALUE       -6    #define RH_ERROR_INVALID_PATH               -7
    // Threading error codes    #define RH_ERROR_THREAD_ALREADY_STARTED     -10    #define RH_ERROR_THREAD_START_FAILED        -11    #define RH_ERROR_THREAD_STOP_FAILED         -12    #define RH_ERROR_THREAD_NOT_STARTED         -13
    // Communication error codes    #define RH_ERROR_OUTPUT_BUFFER_FULL         -20    #define RH_ERROR_MESSAGE_ENQUEUE_FAILED     -21
    // Rest error codes    #define RH_ERROR_MODULE_INIT_FAILED         -30    #define RH_ERROR_MODULE_NOT_INITIALIZED     -31    #define RH_ERROR_ENGINE_NOT_STARTED         -32    #define RH_ERROR_ENGINE_WRONG_STATE         -33    #define RH_ERROR_MEMORY_COPY                -34    #define RH_ERROR_TOO_SMALL_BUFFER           -35    #define RH_ERROR_DATA_OVERWRITTEN           -36    #define RH_ERROR_NOT_SUPPORTED              -37
    // Events    #define ROCKHOPPER_EVENT_ON_READY_FOR_SPEECH 1    #define ROCKHOPPER_EVENT_ON_SPEECH_BEGIN     2    #define ROCKHOPPER_EVENT_ON_SPEECH_END       3    #define ROCKHOPPER_EVENT_ON_RMS_CHANGED      4    #define ROCKHOPPER_EVENT_ON_ERROR            5    #define ROCKHOPPER_EVENT_ENGINE_STARTED      6    #define ROCKHOPPER_EVENT_ENGINE_STOPPED      7
    typedef void* ASR_HANDLE; // speech recognition engine handle type    typedef void* WFST_HANDLE; // Handle for a (dynamic) WFST resource
    typedef enum RockhopperDataType    {        ROCKHOPPER_DATA_TYPE_SAMPLE_INT_16,        ROCKHOPPER_DATA_TYPE_FEATURE_INT_16    } RockhopperDataType;
    /// C-style interface used intentionally to allow for bindings in    /// runtimes that don't support/understand C++ name mangling or    /// reference types
    typedef long(*UtteranceCallback)(        void* p,                    // callback function parameter passed in RockhopperFSSetResultCallback        const short* samples,       // Data buffer with utterance samples. Samples are sent only for final result.                                    // Utterance longer than source buffer length will be passed without samples(null pointer).        int   nSamples,             // number of samples in buffer        const char* utteranceId,    // wall clock time when utterance begins        const char* utteranceText,  // recognized text        float score,                // recognition score (LM)        int   isFinal               // 0: partial result, 1: final result (end of utterance)        );
    typedef void(*EventCallback)(        void* p,                    // callback function parameter passed in RockhopperFSSetEventCallback        int eventCode,              // event code        int value);                 // event value
#pragma pack(push, 4)    typedef struct _AsrEngineStatistics {        union {            struct {                unsigned int speech : 1;                unsigned int frontend : 3;                unsigned int scorer : 3;                unsigned int decoder : 3;                unsigned int reserved : 22;            } fields;            int value;        } state;        int signalvl;        int samples_captured_ms;        int frames_extracted_ms;        int frames_decoded_ms;        float uttRtFactor;        int utt_min_snr;        int utt_max_snr;        int utt_snr;    } AsrEngineStatistics;
#pragma pack(pop)    /**     * Initialize the ASR engine component.     *     * @param configurationFilename - absolute path to configuration file the ASR engine shall     *                                read all its configuration parameters from     * @param resourceDirectory - absolute path to resources listed in config file if relative path used     * @param userResourceDirectory - absolute path to user resources (e.g. dynamic lexicon)     *                                listed in config file if relative path used     * @param [outptr] asrengine - handle to ASR engine     * @return One of:     *         - ROCKHOPPER_SUCCESS (initialization completed successfully),     *         - ROCKHOPPER_INVALID_PATH (cannot access the indicated configurationFilename),     *         - ROCKHOPPER_UNKNOWN_ERROR (error)     */    ROCKHOPPER_API_EXPORT int RockhopperFSInitialize(const char* configurationFilename, const char* resourceDirectory,        const char* userResourceDirectory, ASR_HANDLE* asrengine);
    /**     * Update dynamic resource from a lexicon and a text acceptor WFST.     *     * @param configurationFilename - absolute path to configuration file the ASR engine shall     *                                read all its configuration parameters from     * @param resourceDirectory - absolute path of resource data folder (e.g. acoustic model)     * @param userResourceDirectory - absolute path to target folder to contain user generated data     *                                (e.g. dynamic lexicon)     * @param tagId - ID of meta tag in CL statistical language model the dictionary is "plugged in"     * @param wfst - Grammar wfst used for vocabulary.     *     * @return One of:     *         - ROCKHOPPER_SUCCESS (dynamic lexicon update completed successfully),     *         - ROCKHOPPER_INVALID_PATH (cannot access the indicated configurationFilename),     *         - ROCKHOPPER_UNKNOWN_ERROR (error)     */    ROCKHOPPER_API_EXPORT int RockhopperFSUpdateDynResource(const char* configurationFilename,        const char* resourceDirectory, const char* userResourceDirectory, int tagId,        WFST_HANDLE wfst);
    /**     * Set callback for result processing.     *     * @param [in] asrengine    - handle to ASR engine     * @param [in] rescallback  - result callback implementation to be invoked once     *                            utternace or its fragment is recognized     * @param [in] p            - callback parameter     * @return One of:     *         - ROCKHOPPER_SUCCESS (callback set successfully),     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),     *         - ROCKHOPPER_UNKNOWN_ERROR (error)     */    ROCKHOPPER_API_EXPORT int RockhopperFSSetResultCallback(ASR_HANDLE asrengine,        UtteranceCallback callback, const void* p);
    /**     * Set callback for events like start / stop engine, ready for speech, speech begin/end, error.     *     * @param [in] asrengine handle to ASR engine     * @param [in] evtcallback - event callback called whenever engine state is changing     * @param [in] p - callback parameter     * @return One of:     *         - ROCKHOPPER_SUCCESS (callback set successfully),     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),     *         - ROCKHOPPER_UNKNOWN_ERROR (error)     */    ROCKHOPPER_API_EXPORT int RockhopperFSSetEventCallback(ASR_HANDLE asrengine,        EventCallback callback, const void* p);
    /**     * Start phrase detection process.     * In response to this method the engine is expected to initialize the     * recognition and continue until a call to stop function is received.     *     * @param [in] asrengine - handle to ASR engine     * @return One of:     *         - ROCKHOPPER_SUCCESS (started successfully),     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),     *         - ROCKHOPPER_UNKNOWN_ERROR (error)     */    ROCKHOPPER_API_EXPORT int RockhopperFSStartEngine(ASR_HANDLE asrengine);
    /**     * Stop Rockhopper engine - resources are not released.     *     * @param [in] asrengine - handle to ASR engine     * @param [in] waitForEndOfUtteranceProcessing - flag:     *                                               True - requests deffered stop, routine does not return till last     *                                                      samples/frames in all intermediate buffers are processed     *                                               False - stops immediately if not doing batch file processing     * @return One of:     *         - ROCKHOPPER_SUCCESS (stopped successfully),     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle) ,     *         - ROCKHOPPER_UNKNOWN_ERROR (error)     */#ifdef __cplusplus    ROCKHOPPER_API_EXPORT int RockhopperFSStopEngine(ASR_HANDLE asrengine, int waitForEndOfUtteranceProcessing = 1);#else    ROCKHOPPER_API_EXPORT int RockhopperFSStopEngine(ASR_HANDLE asrengine, int waitForEndOfUtteranceProcessing);#endif
    /**     * Release resources of Rockhopper engine.     *     * @param [in] asrengine - handle to ASR engine     * @return One of:     *         - ROCKHOPPER_SUCCESS (released successfully),     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),     *         - ROCKHOPPER_UNKNOWN_ERROR (error)     */    ROCKHOPPER_API_EXPORT int RockhopperFSReleaseEngine(ASR_HANDLE asrengine);
    /**     * Read current Rockhopper state & statistics.     *     * @param [in] asrengine - handle to ASR engine     * @param [inout] stats - pointer to statistics buffer     * @return One of:     *         - ROCKHOPPER_SUCCESS (stopped successfully),     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),     *         - ROCKHOPPER_UNKNOWN_ERROR (error)     */    ROCKHOPPER_API_EXPORT int RockhopperFSGetStatistics(ASR_HANDLE asrengine, AsrEngineStatistics* stats);
    /**    * Feed stream source with samples from external application.    *    * @param [in] asrengine - handle to ASR engine    * @param [in] samples - samples buffer 16kHz mono 16bit resolution    * @param [in] nSamples - number of samples    * @return number of samples consumed by ASR engine ( >=0 ) or STATUS code ( <0 ):    *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),    *         - ROCKHOPPER_UNKNOWN_ERROR (error)    */    ROCKHOPPER_API_EXPORT int RockhopperFSPushSamples(ASR_HANDLE asrengine, short* samples, int nSamples);
    /**    * Feed stream source with data from external application.    *    * @param [in] asrengine - handle to ASR engine    * @param [in] data - pointer to buffer with data to push    * @param [in] elementsCount - number of elements of data, in case of:    *                               SAMPLE_INT_16 it is the number of samples    *                               FEATURE_INT_16 it is the number of features    *                               (must be aligned to features per frame set in config file)    * @param [in] type - type of data to push    * @return number of samples consumed by ASR engine ( >=0 ) or STATUS code ( <0 ):    *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),    *         - ROCKHOPPER_UNKNOWN_ERROR (error)    */    ROCKHOPPER_API_EXPORT int RockhopperFSPushData(ASR_HANDLE asrengine, void* data,        int elementsCount, RockhopperDataType type);
    /**     * Convert grammar specified in JSGF to a WFST     * The WFST is a transducer with input and output labels     *     * @param [in] configurationFilename - absoulute path to configuration file     *        the asr engine shall read all it's configuration parameters from     * @param [in] grammar - string buffer representing grammar in JSGF, null terminated     *                       (http://www.w3.org/TR/2000/NOTE-jsgf-20000605/)     * @param [in] grammarRule - root rule name (if not specified first public rule is selected)     * @param [in] grammarSize - Size of the grammar string buffer including terminating null     * @param [in] grammarRuleSize = Size of the grammarRule buffer including terminating null     * @param [in] firstWordID - Word ID of the first word in the generated WFST.     *                           It is important that word IDs of different resources do not overlap.     * @param [out] wfst - handle to resulting grammar WFST     *     * @return One of:     *         - ROCKHOPPER_SUCCESS (grammar converted successfully),     *         - ROCKHOPPER_UNKNOWN_ERROR (error)     */    ROCKHOPPER_API_EXPORT int RockhopperFSConvertJSGFToFST(const char *configurationFilename,                                                           const char* grammar,                                                           const char* grammarRule,                                                           int grammarSize,                                                           int grammarRuleSize,                                                           int firstWordID,                                                           WFST_HANDLE* wfst);
    /**     * Convert ARPA statistical language model into WFST that can be used with     * RockhopperFSUpdateDynResource() to create dynamic recognition resources     *     * @param [in] configurationFilename - absoulute path to configuration file     *        the asr engine shall read all it's configuration parameters from     * @param [in] arpa - string buffer representing grammar in ARPA format     * @param [in] arpaSize - Size of the arpa string buffer     * @param [in] firstWordID - Word ID of the first word in the generated WFST.     *                           It is important that word IDs of different resources do not overlap.     * @param [out] wfst - handle to resulting grammar WFST     *     * @return One of:     *         - ROCKHOPPER_SUCCESS (grammar converted successfully),     *         - ROCKHOPPER_UNKNOWN_ERROR (error)     */    ROCKHOPPER_API_EXPORT int RockhopperFSConvertARPAToFST(const char *configurationFilename,                                                           const char* arpa,                                                           int arpaSize,                                                           int firstWordID,                                                           WFST_HANDLE* wfst);
    /**     * Convert list of phrases into a Rockhopper WFST that can be used with     * RockhopperFSUpdateDynResource() to create dynamic recognition resources     *     * @param [in] configurationFilename - absoulute path to configuration file     *        the asr engine shall read all it's configuration parameters from     * @param [in] phrases - string buffer representing grammar in JSGF     *                       The different phrases are separated by the newline character '\n'     * @param [in] phrasesSize - Size of the phrases string buffer     * @param [in] firstWordID - Word ID of the first word in the generated WFST.     *                           It is important that word IDs of different resources do not overlap.     * @param [out] wfst - handle to resulting phrase grammar WFST     *     * @return One of:     *         - ROCKHOPPER_SUCCESS (grammar converted successfully),     *         - ROCKHOPPER_UNKNOWN_ERROR (error)     */    ROCKHOPPER_API_EXPORT int RockhopperFSConvertPhrasesToFST(const char* configurationFilename,                                                              const char* phrases,                                                              int phrasesSize,                                                              int firstWordID,                                                              WFST_HANDLE* wfst);
    /**     * Convert AT&T (OpenFST) ASCII text representation of a WFST into     * a Rockhopper WFST.     *     * @param [in] configurationFilename - absoulute path to configuration file     *        the asr engine shall read all it's configuration parameters from     * @param [in] wfst_text - ASCII representation of the WFST     * @param [in] text_size - Length of wfst_text in bytes     * @param [in] firstWordID - Word ID of the first word in the generated WFST.     *                           It is important that word IDs of different resources do not overlap.     * @param [out] wfst - Handle to the Rockhopper WFST     *     * @return One of:     *         - ROCKHOPPER_SUCCESS (grammar converted successfully),     *         - ROCKHOPPER_UNKNOWN_ERROR (error)     */    ROCKHOPPER_API_EXPORT int RockhopperFSConvertFST(const char *configurationFilename,                                                     const char *wfst_text,                                                     int text_size,                                                     int firstWordID,                                                     WFST_HANDLE* wfst);
    /**     * Release (dynamic) WFST resource.     *     * @param [in] wfst - handle to a WFST resource     * @return One of:     *         - ROCKHOPPER_SUCCESS (stopped successfully),     *         - ROCKHOPPER_INVALID_HANDLE_VALUE (invalid handle),     *         - ROCKHOPPER_UNKNOWN_ERROR (error)     */    ROCKHOPPER_API_EXPORT int RockhopperFSReleaseFST(WFST_HANDLE wfst);
    /**    * Get the Rockhopper version string.    *    * @param [out] versionString - pointer to char string with the version ID    * @return One of:    *         - ROCKHOPPER_SUCCESS (stopped successfully),    *         - ROCKHOPPER_UNKNOWN_ERROR (error)    */    ROCKHOPPER_API_EXPORT int RockhopperGetVersionString(const char **versionString);
#ifdef __cplusplus}#endif#endif



举报

相关推荐

0 条评论