乐趣区

原 Python用ctypes调用动态库的方式使用科大讯飞语音识别

ctypes 是 Python 的一个模块,它提供了 C 语言相关的数据类型,可以方便的调用 C 语言编写的 DLL(Windows 动态链接库)和 so(Linux 动态链接库)。科大讯飞的语音识别客户端 SDK 提供了 Linux 下的 C 语言 SDK,却没有 Python 的。有了 ctypes,我们就可以很轻松的用 Python 来使用科大讯飞的语音识别了。

通过 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 的更详细说明可以参考官方文档。
我的学习笔记来自于猿人学 Python 教程

退出移动版