Python语言实现百度语音识别API的使用实例


Posted in Python onDecember 13, 2017

未来的一段时间,人工智能在市场上占有很重的位置,Python语言则是研究人工智能的最佳编程语言,下面,就让我们来感受一下它的魅力吧!

百度给的样例程序,不论C还是Java版,都分为method1和method2两种

前者称为隐式(post的是json串,音频数据编码到json里),后者称为显式(post的就是音频数据)

一开始考虑到pythonwave包处理的都是“字符串”,担心跟C语言的数组不一致,所以选择低效但保险的method1,

即先将音频数据base64编码,再加上采样率、通道数等信息汇集成dict,最后总体编码成json串

结果老是报:

3300输入参数不正确

先后试过urllib2和pycurl包,都是上面情况

不得已换用method2,成功(看来wave包对音频的存储并不是“字符串”)

#encoding=utf-8 
import wave 
import urllib, urllib2, pycurl 
import base64 
import json 
## get access token by api key & secret key 
 
def get_token(): 
  apiKey = "xxxxxxxx" 
  secretKey = "xxxxxxxxx" 
  auth_url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + apiKey + "&client_secret=" + secretKey; 
  res = urllib2.urlopen(auth_url) 
  json_data = res.read() 
  return json.loads(json_data)['access_token'] 
 
def dump_res(buf): 
  print buf 
## post audio to server 
def use_cloud(token): 
  fp = wave.open('vad_0.wav', 'rb') 
  nf = fp.getnframes() 
  f_len = nf * 2 
  audio_data = fp.readframes(nf) 
 
  cuid = "xxxxxxxxxx" #my xiaomi phone MAC 
  srv_url = 'http://vop.baidu.com/server_api' + '?cuid=' + cuid + '&token=' + token 
  http_header = [ 
    'Content-Type: audio/pcm; rate=8000', 
    'Content-Length: %d' % f_len 
  ] 
  c = pycurl.Curl() 
  c.setopt(pycurl.URL, str(srv_url)) #curl doesn't support unicode 
  #c.setopt(c.RETURNTRANSFER, 1) 
  c.setopt(c.HTTPHEADER, http_header)  #must be list, not dict 
  c.setopt(c.POST, 1) 
  c.setopt(c.CONNECTTIMEOUT, 30) 
  c.setopt(c.TIMEOUT, 30) 
  c.setopt(c.WRITEFUNCTION, dump_res) 
  c.setopt(c.POSTFIELDS, audio_data) 
  c.setopt(c.POSTFIELDSIZE, f_len) 
  c.perform() #pycurl.perform() has no return val  
if __name__ == "__main__": 
  token = get_token() 
  use_cloud(token)

运行结果

{"corpus_no":"6150045491002357923","err_msg":"success.","err_no":0,"result":["播放小苹果,"],"sn":"243903724071431919050"}

总结

以上就是本文关于Python语言实现百度语音识别API的使用实例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
用Python给文本创立向量空间模型的教程
Apr 23 Python
Python2中的raw_input() 与 input()
Jun 12 Python
Python win32com 操作Exce的l简单方法(必看)
May 25 Python
Python探索之ModelForm代码详解
Oct 26 Python
Python 中的lambda函数介绍
Oct 10 Python
Python文件常见操作实例分析【读写、遍历】
Dec 10 Python
Python实现使用request模块下载图片demo示例
May 24 Python
详解python实现小波变换的一个简单例子
Jul 18 Python
python内存管理机制原理详解
Aug 12 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
Python通过matplotlib绘制动画简单实例
Dec 13 #Python
Python数据结构与算法之字典树实现方法示例
Dec 13 #Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 #Python
python+VTK环境搭建及第一个简单程序代码
Dec 13 #Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 #Python
python+pygame简单画板实现代码实例
Dec 13 #Python
Python实现简单的语音识别系统
Dec 13 #Python
You might like
PHP 柱状图实现代码
2009/12/04 PHP
php array_walk() 数组函数
2011/07/12 PHP
PHP中将数组转成XML格式的实现代码
2011/08/08 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
JS的replace方法介绍
2012/10/20 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
python中list常用操作实例详解
2015/06/03 Python
Python中datetime模块参考手册
2017/01/13 Python
python如何读写csv数据
2018/03/21 Python
PyQT实现多窗口切换
2018/04/20 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
安全检查验收制度
2014/01/12 职场文书
教师节倡议书
2014/08/30 职场文书
行政人事主管岗位职责
2015/04/11 职场文书