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;
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;
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文件的文件名可值,該文件里的類應該是一個語音識別的監聽器類,實現的功能是:當監測到有語音輸入時,該監聽器類自動調用相應函數,來實現所需的功能
這個是可以實現的。
注:test.pcm是語音文件,可以用audacity軟件打開,選擇 文件-導入-裸數據。 設置采樣率為8000Hz。點擊播放就能聽見聲音了。
這個時候程序跑起來還有問題,需要將apiKey 以及secretKey填寫上。這兩個值是你申請應用對應的分配好的。
cuid填本機mac地址就可以了,這個值我試過好像無所謂沒啥要求。
程序能跑起來,并且按照正常返回識別的語音結果。但是返回結果的編碼為GBK,所以漢字顯示為亂碼,需要對其進行一次轉碼。轉碼的代碼是我自己加上去的
網頁標題:java本地語音識別代碼 java語音識別成文字
路徑分享:http://vcdvsql.cn/article38/dopgipp.html
成都網站建設公司_創新互聯,為您提供全網營銷推廣、用戶體驗、微信公眾號、移動網站建設、品牌網站制作、定制開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯