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教程。
版权申明:若没有特殊说明,文章皆是猿人学原创,没有猿人学授权,请勿以任何形式转载。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
java版spring cloud+spring boot 社交电子商务平台--Spring cloud gateway限流
限流一般有两个实现方式,令牌桶和漏桶。 金牌桶是初始化令牌(容器)的个数,通过拿走里边的令牌就能通过, 没有令牌不能报错,可以设置向容器中增加令牌的速度和最大个数 漏桶是向里边放入请求,当请求数量达到最大值后,丢弃,漏桶中的数据以一定速度流出,没有则不流出 金牌桶实现方式如下: pom <dependency> <groupId>com.github.vladimir-bukhtoyarov</groupId> <artifactId>bucket4j-core</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis-reactive</artifactId> </dependenc...
- 下一篇
聊聊Python 3 的字符串:str 和 bytes 的区别
Python2的字符串有两种:str 和 unicode,Python3的字符串也有两种:str 和 bytes。Python2 的 str 相当于 Python3 的bytes,而unicode相当于Python3的str。 Python2里面的str和unicode是可以混用的,在都是英文字母的时候str和unicode没有区别。而Python3 严格区分文本(str)和二进制数据(bytes),文本总是unicode,用str类型,二进制数据则用bytes类型表示,这样严格的限制也让我们对如何使用它们有了清晰的认识,这是很棒的。 Python2 和 Python3 的区别 通过以下代码我们认识以下Python2和Python3的字符串混用情况: # Python2中: In [1]: 'a' == u'a' Out[1]: True In [2]: 'a' in u'a' Out[2]: True In [3]: '编程' == u'编程' /usr/local/bin/ipython:1: UnicodeWarning: Unicode equal comparison fai...
相关文章
文章评论
共有0条评论来说两句吧...