zoukankan      html  css  js  c++  java
  • 遇到的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 ' '

         * @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<msclrmarshal_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 ' '     * @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

  • 相关阅读:
    ElementUI 之 Message,自动弹出,信息不显示问题
    eslint 对下一行不要校验报错
    <input type="file"> accept属性筛选文件类型
    纯 css 控制隔行变色
    本地启动服务,两个进程分别监听两个端口,导致两个 URL 不同
    tap 事件会触发两次问题
    时间宝贵-----
    有些人,得到和失去,你都会后悔!
    前调清新,中调醇厚,后调悠长。
    office 格式定义
  • 原文地址:https://www.cnblogs.com/bruce1992/p/14598068.html
Copyright © 2011-2022 走看看