package com.cnblogs.htynkn;

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供臨翔網(wǎng)站建設(shè)、臨翔做網(wǎng)站、臨翔網(wǎng)站設(shè)計、臨翔網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、臨翔企業(yè)網(wǎng)站模板建站服務(wù),十載臨翔做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
public interface QTSR extends Library {
QTSR INSTANCE = (QTSR) Native.loadLibrary("msc", QTSR.class);
/**
* 初始化MSC的ISR部分
*
* @param configs
* 初始化時傳入的字符串,以指定合成用到的一些配置參數(shù),各個參數(shù)以“參數(shù)名=參數(shù)值”的形式出現(xiàn),大小寫不敏感,不同的參數(shù)之間以“
* ,”或“\n”隔開,不設(shè)置任何值時可以傳入NULL或空串:
* @return 如果函數(shù)調(diào)用成功返回MSP_SUCCESS,否則返回錯誤代碼,錯誤代碼參見msp_errors
*/
public int QISRInit(String configs);
/**
* 開始一個ISR會話
*
* @param grammarList
* uri-list格式的語法,可以是一個語法文件的URL或者一個引擎內(nèi)置語法列表。可以同時指定多個語法,不同的語法之間以“,”
* 隔開。進行語音聽寫時不需要語法,此參數(shù)設(shè)定為NULL或空串即可;進行語音識別時則需要語法,語法可以在此參數(shù)中指定,
* 也可以隨后調(diào)用QISRGrammarActivate指定識別所用的語法。
* @param params
* 本路ISR會話使用的參數(shù),可設(shè)置的參數(shù)及其取值范圍請參考《可設(shè)置參數(shù)列表_MSP20.xls》,各個參數(shù)以“參數(shù)名=參數(shù)值”
* 的形式出現(xiàn),不同的參數(shù)之間以“,”或者“\n”隔開。
* @param errorCode
* 如果函數(shù)調(diào)用成功則其值為MSP_SUCCESS,否則返回錯誤代碼,錯誤代碼參見msp_errors。幾個主要的返回值:
* MSP_ERROR_NOT_INIT 未初始化 MSP_ERROR_INVALID_PARA 無效的參數(shù)
* MSP_ERROR_NO_LICENSE 開始一路會話失敗
* @return MSC為本路會話建立的ID,用來唯一的標識本路會話,供以后調(diào)用其他函數(shù)時使用。函數(shù)調(diào)用失敗則會返回NULL。
*/
public String QISRSessionBegin(String grammarList, String params,
IntByReference errorCode);
/**
* 傳入語法
*
* @param sessionID
* 由QISRSessionBegin返回過來的會話ID。
* @param grammar
* 語法字符串
* @param type
* 語法類型,可以是uri-list、abnf、xml等
* @param weight
* 本次傳入語法的權(quán)重,本參數(shù)在MSP 2.0中會被忽略。
* @return 如果函數(shù)調(diào)用成功返回MSP_SUCCESS,否則返回錯誤代碼,錯誤代碼參見msp_errors
*/
public int QISRGrammarActivate(String sessionID, String grammar,
String type, int weight);
/**
* 寫入用來識別的語音
*
* @param sessionID
* 由QISRSessionBegin返回過來的會話ID。
* @param waveData
* 音頻數(shù)據(jù)緩沖區(qū)起始地址
* @param waveLen
* 音頻數(shù)據(jù)長度,其大小不能超過設(shè)定的max_audio_size
* @param audioStatus
* 用來指明用戶本次識別的音頻是否發(fā)送完畢,可能值如下:
* MSP_AUDIO_SAMPLE_FIRST = 1 第一塊音頻
* MSP_AUDIO_SAMPLE_CONTINUE = 2 還有后繼音頻
* MSP_AUDIO_SAMPLE_LAST = 4 最后一塊音頻
* @param epStatus
* 端點檢測(End-point detected)器所處的狀態(tài),可能的值如下:
* MSP _EP_LOOKING_FOR_SPEECH = 0 還沒有檢測到音頻的前端點。
* MSP _EP_IN_SPEECH = 1 已經(jīng)檢測到了音頻前端點,正在進行正常的音頻處理。
* MSP _EP_AFTER_SPEECH = 3 檢測到音頻的后端點,后繼的音頻會被MSC忽略。
* MSP _EP_TIMEOUT = 4 超時。
* MSP _EP_ERROR= 5 出現(xiàn)錯誤。
* MSP _EP_MAX_SPEECH = 6 音頻過大。
* @param recogStatus
* 識別器所處的狀態(tài)
* @return
*/
public int QISRAudioWrite(String sessionID, Pointer waveData, int waveLen,
int audioStatus, IntByReference epStatus, IntByReference recogStatus);
/**
* 獲取識別結(jié)果
*
* @param sessionID 由QISRSessionBegin返回過來的會話ID。
* @param rsltStatus 識別結(jié)果的狀態(tài),其取值范圍和含義請參考QISRAudioWrite的參數(shù)recogStatus
* @param waitTime 與服務(wù)器交互的間隔時間,可以控制和服務(wù)器的交互頻度。單位為ms,建議取值為5000。
* @param errorCode 如果函數(shù)調(diào)用成功返回MSP_SUCCESS,否則返回錯誤代碼,錯誤代碼參見msp_errors
* @return 函數(shù)執(zhí)行成功并且獲取到識別結(jié)果時返回識別結(jié)果,函數(shù)執(zhí)行成功沒有獲取到識別結(jié)果時返回NULL
*/
public String QISRGetResult(String sessionID, IntByReference rsltStatus,
int waitTime, IntByReference errorCode);
/**
* 結(jié)束一路會話
*
* @param sessionID 由QISRSessionBegin返回過來的會話ID。
* @param hints 結(jié)束本次會話的原因描述,用于記錄日志,便于用戶查閱或者跟蹤某些問題。
* @return
*/
public int QISRSessionEnd(String sessionID, String hints);
/**
* 獲取與識別交互相關(guān)的參數(shù)
*
* @param sessionID 由QISRSessionBegin返回過來的會話ID。
* @param paramName 要獲取的參數(shù)名稱;支持同時查詢多個參數(shù),查詢多個參數(shù)時,參數(shù)名稱按“,” 或“\n”分隔開來。
* @param paramValue 獲取的參數(shù)值,以字符串形式返回;查詢多個參數(shù)時,參數(shù)值之間以“;”分開,不支持的參數(shù)將返回空的值。
* @param valueLen 參數(shù)值的長度。
* @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;
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 */ /* 試用次數(shù)結(jié)束,用戶需要付費 */
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 */ /* 系統(tǒng)錯誤 */
/* 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 */
根據(jù)這個java文件的文件名可值,該文件里的類應(yīng)該是一個語音識別的監(jiān)聽器類,實現(xiàn)的功能是:當監(jiān)測到有語音輸入時,該監(jiān)聽器類自動調(diào)用相應(yīng)函數(shù),來實現(xiàn)所需的功能
這個是可以實現(xiàn)的。
注:test.pcm是語音文件,可以用audacity軟件打開,選擇 文件-導入-裸數(shù)據(jù)。 設(shè)置采樣率為8000Hz。點擊播放就能聽見聲音了。
這個時候程序跑起來還有問題,需要將apiKey 以及secretKey填寫上。這兩個值是你申請應(yīng)用對應(yīng)的分配好的。
cuid填本機mac地址就可以了,這個值我試過好像無所謂沒啥要求。
程序能跑起來,并且按照正常返回識別的語音結(jié)果。但是返回結(jié)果的編碼為GBK,所以漢字顯示為亂碼,需要對其進行一次轉(zhuǎn)碼。轉(zhuǎn)碼的代碼是我自己加上去的
網(wǎng)頁標題:java本地語音識別代碼 java語音識別成文字
路徑分享:http://www.chinadenli.net/article38/dopgipp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、用戶體驗、微信公眾號、移動網(wǎng)站建設(shè)、品牌網(wǎng)站制作、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)