亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中怎么通過調用jna實現語音識別功能

發布時間:2021-07-01 17:22:16 來源:億速云 閱讀:289 作者:Leah 欄目:編程語言

Java中怎么通過調用jna實現語音識別功能,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

JNA

java調用.dll獲取.so一般通過JNI,但是JNI的使用比較復雜,需要用C另寫一個共享庫進行適配。而JNA是一個自動適配工具,通過它調用.dll只需要一個借口即可。

官網:https://github.com/twall/jna/。下載jna.jar即可。

編寫接口

科大訊飛語音云主要提供語音合成和語音識別兩個方面的東西,我主要使用語音識別這塊的功能。

建立接口QTSR,繼承Library。

將msc.dll等文件復制到項目根目錄。

Java中怎么通過調用jna實現語音識別功能

加載msc.dll

QTSR INSTANCE = (QTSR) Native.loadLibrary("msc", QTSR.class);

然后來看一下msc.dll公開了哪些方法。首先是QISRInit,這是一個全局初始化函數。

Java中怎么通過調用jna實現語音識別功能

它的返回值為int,參數是const char*。int還是java的int,但是char*就對應的是java的String了。

所以在QTSR中添加方法:

public int QISRInit(String configs);

返回值在msp_errors.h中定義,等一下我們還是要弄在java里面去。

繼續看QISRInit函數,在官方文檔中有調用示例:

const char* configs=“server_url=dev.voicecloud.cn, timeout=10000, vad_enable=true”;     int   ret = QISRInit( configs );     if(MSP_SUCCESS != ret )     {             printf( “QISRInit failed, error code is: %d”, ret );     }

對應的在java中的調用代碼如下:

String config = "server_url=dev.voicecloud.cn, timeout=10000, vad_enable=true";   int code = QTSR.INSTANCE.QISRInit(config);   if (code != 0) {     System.out.println("QISRInit failed, error code is:" + code);   }

我們在看一個函數:QISRSessionBegin,這個開始一路ISR會話。

Java中怎么通過調用jna實現語音識別功能

還是剛才的思路,char*對應java的String,但是注意一下int *errorCode。這個函數其實傳入兩個參數,傳出兩個參數。即本身返回的sessionId,還有errorCode。

這里的int*對應的是jna的IntByReference。所以添加方法:

public String QISRSessionBegin(String grammarList, String params,IntByReference errorCode);

同樣看看官方示例:

/* vad_timeout和vad_speech_tail兩個參數只有在打開VAD功能時才生效 */ const char*      params=     “ssm=1,sub=iat,aue=speex-wb;7,auf=audio/L16;rate=16000,ent=sms16k,rst=plain,vad_timeout=1000,vad_speech_tail=1000”;   int ret = MSP_SUCCESS;     const char*     session_id = QISRSessionBegin( NULL, params, &ret );     if(MSP_SUCCESS != ret )     {             printf( “QISRSessionBegin failed, error code is: %d”, ret );     }

在java這樣寫:

String params = "ssm=1,sub=iat,aue=speex-wb;7,auf=audio/L16;rate=16000,ent=sms16k,rst=plain,vad_timeout=1000,vad_speech_tail=1000";   IntByReference errorCode = new IntByReference();   String sessionId = QTSR.INSTANCE.QISRSessionBegin(null, params,errorCode);

運行效果:

Java中怎么通過調用jna實現語音識別功能

其他的函數處理方式大致相同,這里貼上一個c和java在jna中的類型對應表:

Java中怎么通過調用jna實現語音識別功能

其中Unsigned類型和signed在java中對應是一樣的。

.h文件和常量處理

在SDK的include目錄有4個.h文件,定義了一些常量,比如上面一節中的0其實是msp_errors.h中MSP_SUCCESS。

我以msp_errors.h為例,建立一個接口Msp_errors,繼承StdCallLibrary。

照著msp_errors.h中的定義在Msp_errors中進行定義。

public static final int MSP_SUCCESS = 0;   public static final int ERROR_FAIL  = -1;   public static final int ERROR_EXCEPTION= -2;   public static final int ERROR_GENERAL= 10100;      public static final int ERROR_OUT_OF_MEMORY= 10101;        public static final int ERROR_FILE_NOT_FOUND= 10102;       public static final int ERROR_NOT_SUPPORT= 10103;

使用很簡單的,比如MSP_SUCCESS 就是Msp_errors.MSP_SUCCESS。

完整代碼和文件

這個只是語音識別部分的,語音合成的話我記得有人做過jni接口的。

*QTSR.java

package com.cnblogs.htynkn;     import com.sun.jna.Library;  import com.sun.jna.Native;  import com.sun.jna.Pointer;  import com.sun.jna.ptr.IntByReference;     /**   * @author 夜明的孤行燈   * @date 2012-7-5   */    public interface QTSR extends Library {      QTSR INSTANCE = (QTSR) Native.loadLibrary("msc", QTSR.class);         /**       * 初始化MSC的ISR部分       *       * @param configs       *            初始化時傳入的字符串,以指定合成用到的一些配置參數,各個參數以“參數名=參數值”的形式出現,大小寫不敏感,不同的參數之間以“       *            ,”或“\n”隔開,不設置任何值時可以傳入NULL或空串:       * @return 如果函數調用成功返回MSP_SUCCESS,否則返回錯誤代碼,錯誤代碼參見msp_errors       */     public int QISRInit(String configs);         /**       * 開始一個ISR會話       *       * @param grammarList       *            uri-list格式的語法,可以是一個語法文件的URL或者一個引擎內置語法列表。可以同時指定多個語法,不同的語法之間以“,”       *            隔開。進行語音聽寫時不需要語法,此參數設定為NULL或空串即可;進行語音識別時則需要語法,語法可以在此參數中指定,       *            也可以隨后調用QISRGrammarActivate指定識別所用的語法。       * @param params       *            本路ISR會話使用的參數,可設置的參數及其取值范圍請參考《可設置參數列表_MSP20.xls》,各個參數以“參數名=參數值”       *            的形式出現,不同的參數之間以“,”或者“\n”隔開。       * @param errorCode       *            如果函數調用成功則其值為MSP_SUCCESS,否則返回錯誤代碼,錯誤代碼參見msp_errors。幾個主要的返回值:       *            MSP_ERROR_NOT_INIT 未初始化 MSP_ERROR_INVALID_PARA 無效的參數       *            MSP_ERROR_NO_LICENSE 開始一路會話失敗       * @return MSC為本路會話建立的ID,用來唯一的標識本路會話,供以后調用其他函數時使用。函數調用失敗則會返回NULL。       */     public String QISRSessionBegin(String grammarList, String params,              IntByReference errorCode);         /**       * 傳入語法       *       * @param sessionID       *            由QISRSessionBegin返回過來的會話ID。       * @param grammar       *            語法字符串       * @param type       *            語法類型,可以是uri-list、abnf、xml等       * @param weight       *            本次傳入語法的權重,本參數在MSP 2.0中會被忽略。       * @return 如果函數調用成功返回MSP_SUCCESS,否則返回錯誤代碼,錯誤代碼參見msp_errors       */     public int QISRGrammarActivate(String sessionID, String grammar,              String type, int weight);         /**       * 寫入用來識別的語音       *       * @param sessionID       *            由QISRSessionBegin返回過來的會話ID。       * @param waveData       *            音頻數據緩沖區起始地址       * @param waveLen       *            音頻數據長度,其大小不能超過設定的max_audio_size       * @param audioStatus       *            用來指明用戶本次識別的音頻是否發送完畢,可能值如下:       *            MSP_AUDIO_SAMPLE_FIRST = 1 第一塊音頻       *            MSP_AUDIO_SAMPLE_CONTINUE = 2 還有后繼音頻       *            MSP_AUDIO_SAMPLE_LAST = 4 最后一塊音頻       * @param epStatus       *            端點檢測(End-point detected)器所處的狀態,可能的值如下:       *            MSP _EP_LOOKING_FOR_SPEECH = 0 還沒有檢測到音頻的前端點。       *            MSP _EP_IN_SPEECH = 1 已經檢測到了音頻前端點,正在進行正常的音頻處理。       *            MSP _EP_AFTER_SPEECH = 3 檢測到音頻的后端點,后繼的音頻會被MSC忽略。       *            MSP _EP_TIMEOUT = 4 超時。       *            MSP _EP_ERROR= 5 出現錯誤。       *            MSP _EP_MAX_SPEECH = 6 音頻過大。       * @param recogStatus       *            識別器所處的狀態       * @return       */     public int QISRAudioWrite(String sessionID, Pointer waveData, int waveLen,              int audioStatus, IntByReference epStatus, IntByReference recogStatus);         /**       * 獲取識別結果       *       * @param sessionID 由QISRSessionBegin返回過來的會話ID。       * @param rsltStatus 識別結果的狀態,其取值范圍和含義請參考QISRAudioWrite的參數recogStatus       * @param waitTime 與服務器交互的間隔時間,可以控制和服務器的交互頻度。單位為ms,建議取值為5000。       * @param errorCode 如果函數調用成功返回MSP_SUCCESS,否則返回錯誤代碼,錯誤代碼參見msp_errors       * @return 函數執行成功并且獲取到識別結果時返回識別結果,函數執行成功沒有獲取到識別結果時返回NULL       */     public String QISRGetResult(String sessionID, IntByReference rsltStatus,              int waitTime, IntByReference errorCode);         /**       * 結束一路會話       *       * @param sessionID 由QISRSessionBegin返回過來的會話ID。       * @param hints 結束本次會話的原因描述,用于記錄日志,便于用戶查閱或者跟蹤某些問題。       * @return       */     public int QISRSessionEnd(String sessionID, String hints);         /**       * 獲取與識別交互相關的參數       *       * @param sessionID 由QISRSessionBegin返回過來的會話ID。       * @param paramName 要獲取的參數名稱;支持同時查詢多個參數,查詢多個參數時,參數名稱按“,” 或“\n”分隔開來。       * @param paramValue 獲取的參數值,以字符串形式返回;查詢多個參數時,參數值之間以“;”分開,不支持的參數將返回空的值。       * @param valueLen 參數值的長度。       * @return       */     public int QISRGetParam(String sessionID, String paramName,              String paramValue, IntByReference valueLen);         /**       * 逆初始化MSC的ISR部分       *       * @return       */     public int QISRFini();  }   *Msp_errors  ?  package com.cnblogs.htynkn;     import com.sun.jna.win32.StdCallLibrary;     /**   * @author 夜明的孤行燈   * @date 2012-7-5   */    public interface Msp_errors extends StdCallLibrary {      public static final int MSP_SUCCESS = 0;      public static final int ERROR_FAIL  = -1;      public static final int ERROR_EXCEPTION= -2;      public static final int ERROR_GENERAL= 10100;   /* 0x2774 */     public static final int ERROR_OUT_OF_MEMORY= 10101;     /* 0x2775 */     public static final int ERROR_FILE_NOT_FOUND= 10102;    /* 0x2776 */     public static final int ERROR_NOT_SUPPORT= 10103;   /* 0x2777 */     public static final int ERROR_NOT_IMPLEMENT= 10104;     /* 0x2778 */     public static final int ERROR_ACCESS= 10105;    /* 0x2779 */     public static final int ERROR_INVALID_PARA= 10106;  /* 0x277A */     public static final int ERROR_INVALID_PARA_VALUE= 10107;    /* 0x277B */     public static final int ERROR_INVALID_HANDLE= 10108;    /* 0x277C */     public static final int ERROR_INVALID_DATA= 10109;  /* 0x277D */     public static final int ERROR_NO_LICENSE= 10110;    /* 0x277E */     public static final int ERROR_NOT_INIT= 10111;  /* 0x277F */     public static final int ERROR_NULL_HANDLE= 10112;   /* 0x2780 */     public static final int ERROR_OVERFLOW= 10113;  /* 0x2781 */     public static final int ERROR_TIME_OUT= 10114;  /* 0x2782 */     public static final int ERROR_OPEN_FILE= 10115;     /* 0x2783 */     public static final int ERROR_NOT_FOUND= 10116;     /* 0x2784 */     public static final int ERROR_NO_ENOUGH_BUFFER= 10117;  /* 0x2785 */     public static final int ERROR_NO_DATA= 10118;   /* 0x2786 */     public static final int ERROR_NO_MORE_DATA= 10119;  /* 0x2787 */     public static final int ERROR_NO_RESPONSE_DATA= 10120;  /* 0x2788 */     public static final int ERROR_ALREADY_EXIST= 10121;     /* 0x2789 */     public static final int ERROR_LOAD_MODULE= 10122;   /* 0x278A */     public static final int ERROR_BUSY  = 10123;    /* 0x278B */     public static final int ERROR_INVALID_CONFIG= 10124;    /* 0x278C */     public static final int ERROR_VERSION_CHECK= 10125;     /* 0x278D */     public static final int ERROR_CANCELED= 10126;  /* 0x278E */     public static final int ERROR_INVALID_MEDIA_TYPE= 10127;    /* 0x278F */     public static final int ERROR_CONFIG_INITIALIZE= 10128;     /* 0x2790 */     public static final int ERROR_CREATE_HANDLE= 10129;     /* 0x2791 */     public static final int ERROR_CODING_LIB_NOT_LOAD= 10130;   /* 0x2792 */    /* Error codes of network 10200(0x27D8)*/     public static final int ERROR_NET_GENERAL= 10200;   /* 0x27D8 */     public static final int ERROR_NET_OPENSOCK= 10201;  /* 0x27D9 */   /* Open socket */     public static final int ERROR_NET_CONNECTSOCK= 10202;   /* 0x27DA */   /* Connect socket */     public static final int ERROR_NET_ACCEPTSOCK = 10203;   /* 0x27DB */   /* Accept socket */     public static final int ERROR_NET_SENDSOCK= 10204;  /* 0x27DC */   /* Send socket data */     public static final int ERROR_NET_RECVSOCK= 10205;  /* 0x27DD */   /* Recv socket data */     public static final int ERROR_NET_INVALIDSOCK= 10206;   /* 0x27DE */   /* Invalid socket handle */     public static final int ERROR_NET_BADADDRESS = 10207;   /* 0x27EF */   /* Bad network address */     public static final int ERROR_NET_BINDSEQUENCE= 10208;  /* 0x27E0 */   /* Bind after listen/connect */     public static final int ERROR_NET_NOTOPENSOCK= 10209;   /* 0x27E1 */   /* Socket is not opened */     public static final int ERROR_NET_NOTBIND= 10210;   /* 0x27E2 */   /* Socket is not bind to an address */     public static final int ERROR_NET_NOTLISTEN  = 10211;   /* 0x27E3 */   /* Socket is not listening */     public static final int ERROR_NET_CONNECTCLOSE= 10212;  /* 0x27E4 */   /* The other side of connection is closed */     public static final int ERROR_NET_NOTDGRAMSOCK= 10213;  /* 0x27E5 */   /* The socket is not datagram type */     public static final int ERROR_NET_DNS= 10214;   /* 0x27E6 */   /* domain name is invalid or dns server does not function well */    /* Error codes of mssp message 10300(0x283C) */     public static final int ERROR_MSG_GENERAL= 10300;   /* 0x283C */     public static final int ERROR_MSG_PARSE_ERROR= 10301;   /* 0x283D */     public static final int ERROR_MSG_BUILD_ERROR= 10302;   /* 0x283E */     public static final int ERROR_MSG_PARAM_ERROR= 10303;   /* 0x283F */     public static final int ERROR_MSG_CONTENT_EMPTY= 10304;     /* 0x2840 */     public static final int ERROR_MSG_INVALID_CONTENT_TYPE      = 10305;    /* 0x2841 */     public static final int ERROR_MSG_INVALID_CONTENT_LENGTH    = 10306;    /* 0x2842 */     public static final int ERROR_MSG_INVALID_CONTENT_ENCODE    = 10307;    /* 0x2843 */     public static final int ERROR_MSG_INVALID_KEY= 10308;   /* 0x2844 */     public static final int ERROR_MSG_KEY_EMPTY= 10309;     /* 0x2845 */     public static final int ERROR_MSG_SESSION_ID_EMPTY= 10310;  /* 0x2846 */     public static final int ERROR_MSG_LOGIN_ID_EMPTY= 10311;    /* 0x2847 */     public static final int ERROR_MSG_SYNC_ID_EMPTY= 10312;     /* 0x2848 */     public static final int ERROR_MSG_APP_ID_EMPTY= 10313;  /* 0x2849 */     public static final int ERROR_MSG_EXTERN_ID_EMPTY= 10314;   /* 0x284A */     public static final int ERROR_MSG_INVALID_CMD= 10315;   /* 0x284B */     public static final int ERROR_MSG_INVALID_SUBJECT= 10316;   /* 0x284C */     public static final int ERROR_MSG_INVALID_VERSION= 10317;   /* 0x284D */     public static final int ERROR_MSG_NO_CMD= 10318;    /* 0x284E */     public static final int ERROR_MSG_NO_SUBJECT= 10319;    /* 0x284F */     public static final int ERROR_MSG_NO_VERSION= 10320;    /* 0x2850 */     public static final int ERROR_MSG_MSSP_EMPTY= 10321;    /* 0x2851 */     public static final int ERROR_MSG_NEW_RESPONSE= 10322;  /* 0x2852 */     public static final int ERROR_MSG_NEW_CONTENT= 10323;   /* 0x2853 */     public static final int ERROR_MSG_INVALID_SESSION_ID        = 10324;    /* 0x2854 */    /* Error codes of DataBase 10400(0x28A0)*/     public static final int ERROR_DB_GENERAL= 10400;    /* 0x28A0 */     public static final int ERROR_DB_EXCEPTION= 10401;  /* 0x28A1 */     public static final int ERROR_DB_NO_RESULT= 10402;  /* 0x28A2 */     public static final int ERROR_DB_INVALID_USER= 10403;   /* 0x28A3 */     public static final int ERROR_DB_INVALID_PWD= 10404;    /* 0x28A4 */     public static final int ERROR_DB_CONNECT= 10405;    /* 0x28A5 */     public static final int ERROR_DB_INVALID_SQL= 10406;    /* 0x28A6 */     public static final int ERROR_DB_INVALID_APPID= 10407;  /* 0x28A7 */    /* Error codes of Resource 10500(0x2904)*/     public static final int ERROR_RES_GENERAL= 10500;   /* 0x2904 */     public static final int ERROR_RES_LOAD = 10501;     /* 0x2905 */   /* Load resource */     public static final int ERROR_RES_FREE = 10502;     /* 0x2906 */   /* Free resource */     public static final int ERROR_RES_MISSING = 10503;  /* 0x2907 */   /* Resource File Missing */     public static final int ERROR_RES_INVALID_NAME  = 10504;    /* 0x2908 */   /* Invalid resource file name */     public static final int ERROR_RES_INVALID_ID    = 10505;    /* 0x2909 */   /* Invalid resource ID */     public static final int ERROR_RES_INVALID_IMG   = 10506;    /* 0x290A */   /* Invalid resource image pointer */     public static final int ERROR_RES_WRITE= 10507;     /* 0x290B */   /* Write read-only resource */     public static final int ERROR_RES_LEAK = 10508;     /* 0x290C */   /* Resource leak out */     public static final int ERROR_RES_HEAD = 10509;     /* 0x290D */   /* Resource head currupt */     public static final int ERROR_RES_DATA = 10510;     /* 0x290E */   /* Resource data currupt */     public static final int ERROR_RES_SKIP = 10511;     /* 0x290F */   /* Resource file skipped */    /* Error codes of TTS 10600(0x2968)*/     public static final int ERROR_TTS_GENERAL= 10600;   /* 0x2968 */     public static final int ERROR_TTS_TEXTEND = 10601;  /* 0x2969 */  /* Meet text end */     public static final int ERROR_TTS_TEXT_EMPTY= 10602;    /* 0x296A */  /* no synth text */    /* Error codes of Recognizer 10700(0x29CC) */     public static final int ERROR_REC_GENERAL= 10700;   /* 0x29CC */     public static final int ERROR_REC_INACTIVE= 10701;  /* 0x29CD */     public static final int ERROR_REC_GRAMMAR_ERROR= 10702;     /* 0x29CE */     public static final int ERROR_REC_NO_ACTIVE_GRAMMARS        = 10703;    /* 0x29CF */     public static final int ERROR_REC_DUPLICATE_GRAMMAR= 10704;     /* 0x29D0 */     public static final int ERROR_REC_INVALID_MEDIA_TYPE        = 10705;    /* 0x29D1 */     public static final int ERROR_REC_INVALID_LANGUAGE= 10706;  /* 0x29D2 */     public static final int ERROR_REC_URI_NOT_FOUND= 10707;     /* 0x29D3 */     public static final int ERROR_REC_URI_TIMEOUT= 10708;   /* 0x29D4 */     public static final int ERROR_REC_URI_FETCH_ERROR= 10709;   /* 0x29D5 */    /* Error codes of Speech Detector 10800(0x2A30) */     public static final int ERROR_EP_GENERAL= 10800;    /* 0x2A30 */     public static final int ERROR_EP_NO_SESSION_NAME= 10801;    /* 0x2A31 */     public static final int ERROR_EP_INACTIVE  = 10802;     /* 0x2A32 */     public static final int ERROR_EP_INITIALIZED    = 10803;    /* 0x2A33 */    /* Error codes of TUV */       public static final int ERROR_TUV_GENERAL= 10900;   /* 0x2A94 */     public static final int ERROR_TUV_GETHIDPARAM       = 10901;    /* 0x2A95 */   /* Get Busin Param huanid*/     public static final int ERROR_TUV_TOKEN= 10902;     /* 0x2A96 */   /* Get Token */     public static final int ERROR_TUV_CFGFILE= 10903;   /* 0x2A97 */   /* Open cfg file */     public static final int ERROR_TUV_RECV_CONTENT  = 10904;    /* 0x2A98 */   /* received content is error */     public static final int ERROR_TUV_VERFAIL    = 10905;   /* 0x2A99 */   /* Verify failure */    /* Error codes of IMTV */     public static final int ERROR_LOGIN_SUCCESS= 11000;     /* 0x2AF8 */   /* 成功 */     public static final int ERROR_LOGIN_NO_LICENSE          = 11001;    /* 0x2AF9 */   /* 試用次數結束,用戶需要付費 */     public static final int ERROR_LOGIN_SESSIONID_INVALID       = 11002;    /* 0x2AFA */   /* SessionId失效,需要重新登錄通行證 */     public static final int ERROR_LOGIN_SESSIONID_ERROR= 11003;     /* 0x2AFB */   /* SessionId為空,或者非法 */     public static final int ERROR_LOGIN_UNLOGIN       = 11004;  /* 0x2AFC */   /* 未登錄通行證 */     public static final int ERROR_LOGIN_INVALID_USER            = 11005;    /* 0x2AFD */   /* 用戶ID無效 */     public static final int ERROR_LOGIN_INVALID_PWD             = 11006;    /* 0x2AFE */   /* 用戶密碼無效 */     public static final int ERROR_LOGIN_SYSTEM_ERROR= 11099;    /* 0x2B5B */   /* 系統錯誤 */    /* Error codes of HCR */     public static final int ERROR_HCR_GENERAL= 11100;      public static final int ERROR_HCR_RESOURCE_NOT_EXIST        = 11101;      public static final int ERROR_HCR_CREATE= 11102;      public static final int ERROR_HCR_DESTROY= 11103;      public static final int ERROR_HCR_START= 11104;      public static final int ERROR_HCR_APPEND_STROKES= 11105;      public static final int ERROR_HCR_GET_RESULT= 11106;      public static final int ERROR_HCR_SET_PREDICT_DATA= 11107;      public static final int ERROR_HCR_GET_PREDICT_RESULT        = 11108;        /* Error codes of http 12000(0x2EE0) */     public static final int ERROR_HTTP_BASE= 12000; /* 0x2EE0 */    /*Error codes of ISV */     public static final int ERROR_ISV_NO_USER  = 13000; /* 32C8 */    /* the user doesn't exist */    /* Error codes of Lua scripts */     public static final int ERROR_LUA_BASE= 14000;    /* 0x36B0 */     public static final int ERROR_LUA_YIELD= 14001; /* 0x36B1 */     public static final int ERROR_LUA_ERRRUN= 14002;    /* 0x36B2 */     public static final int ERROR_LUA_ERRSYNTAX= 14003; /* 0x36B3 */     public static final int ERROR_LUA_ERRMEM= 14004;    /* 0x36B4 */     public static final int ERROR_LUA_ERRERR= 14005;    /* 0x36B5 */ }

看完上述內容,你們掌握Java中怎么通過調用jna實現語音識別功能的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新竹市| 迁安市| 盐津县| 呼图壁县| 靖江市| 田阳县| 萝北县| 江阴市| 揭东县| 洛宁县| 牙克石市| 福鼎市| 绥滨县| 伊宁县| 壤塘县| 万宁市| 虎林市| 安仁县| 和静县| 江山市| 那曲县| 肃宁县| 顺昌县| 定结县| 三江| 和林格尔县| 绿春县| 深水埗区| 石家庄市| 普兰店市| 长岛县| 中西区| 年辖:市辖区| 梅河口市| 大洼县| 鸡泽县| 九寨沟县| 鹿邑县| 保德县| 汉源县| 石台县|