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双向链表实现实例代码
Nov 21 Python
讲解Python中if语句的嵌套用法
May 14 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
Jul 01 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
Oct 01 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
python通过http下载文件的方法详解
Jul 26 Python
PHP统计代码行数的小代码
Sep 19 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 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代码
2013/03/24 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
JS 控制非法字符的输入代码
2009/12/04 Javascript
jQuery UI-Draggable 参数集合
2010/01/10 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
js读取配置文件自写
2014/02/11 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
在Docker快速部署Node.js应用的详细步骤
2016/09/02 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
js构造函数创建对象是否加new问题
2018/01/22 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
python 算法 排序实现快速排序
2012/06/05 Python
跟老齐学Python之编写类之二方法
2014/10/11 Python
Python and、or以及and-or语法总结
2015/04/14 Python
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
深入理解python中的select模块
2017/04/23 Python
Python实现k-means算法
2018/02/23 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
在python中利用GDAL对tif文件进行读写的方法
2018/11/29 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
美国床垫连锁店:Mattress Firm
2021/02/13 全球购物
班长演讲稿范文
2014/04/24 职场文书
品质保证书格式
2015/02/28 职场文书
未中标通知书
2015/04/17 职场文书