Python用ctypes調用動態庫的方式使用科大訊飛語音識別

個人學習筆記來自於猿人學Python教程python

ctypes 是 Python 的一個模塊,它提供了C語言相關的數據類型,能夠方便的調用C語言編寫的DLL(Windows 動態連接庫)和so(Linux動態連接庫)。科大訊飛的語音識別客戶端SDK提供了Linux下的C語言SDK,卻沒有Python的。有了ctypes,咱們就能夠很輕鬆的用Python來使用科大訊飛的語音識別了。session

經過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類型:ui

ret = ctypes.c_int()
sessionId = ctypes.c_voidp()
sessionId = xflib.QISRSessionBegin(None, param1, ret)

調用其它接口函數時,還可能用到以下ctypes的類型和接口:spa

  • ctypes.create_string_buffer()
  • ctypes.addressof()
  • ctypes.byref()
  • ctypes.string_at()
  • ctypes.c_char_p()
  • ctypes.c_uint()

關於ctypes的更詳細說明能夠參考官方文檔。指針

相關文章
相關標籤/搜索