天天看點

python科大訊飛語音接口不能用_Python用ctypes調用動态庫的方式使用科大訊飛語音識别...

ctypes 是 Python 的一個子產品,它提供了C語言相關的資料類型,可以友善的調用C語言編寫的DLL(Windows 動态連結庫)和so(Linux動态連結庫)。科大訊飛的語音識别用戶端SDK提供了Linux下的C語言SDK,卻沒有Python的。有了ctypes,我們就可以很輕松的用Python來使用科大訊飛的語音識别了。

python科大訊飛語音接口不能用_Python用ctypes調用動态庫的方式使用科大訊飛語音識别...

通過LoadLibrary()函數加載動态庫:xflib = ctypes.cdll.LoadLibrary('msc/libmsc.so')

在Python裡面調用C函數時主要是注意參數的類型。語音識别的接口的具體參數可以參考其提供的文檔,比如接口函數:const char* MSPAPI QISRSessionBegin( const char* grammarList, const char*

params, int* errorCode )

傳回的是一個char指針作為sessionID以供後續接口作為參數使用,在Python裡面要用ctypes.c_voidp類型:ret = ctypes.c_int()

sessionId = ctypes.c_voidp()

sessionId = xflib.QISRSessionBegin(None, param1, ret)

調用其它接口函數時,還可能用到如下ctypes的類型和接口:ctypes.create_string_buffer()

ctypes.addressof()

ctypes.byref()

ctypes.string_at()

ctypes.c_char_p()

ctypes.c_uint()

關于ctypes的更詳細說明可以參考官方文檔。

∟學習筆記整理于

∟作者:猿人學