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的Zato发送AMQP消息的教程
Apr 16 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
Jul 06 Python
Python中input与raw_input 之间的比较
Aug 20 Python
python批量设置多个Excel文件页眉页脚的脚本
Mar 14 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
Python数学形态学实例分析
Sep 06 Python
Python操作多维数组输出和矩阵运算示例
Nov 28 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
Feb 16 Python
Python Numpy 控制台完全输出ndarray的实现
Feb 19 Python
使用Python打造一款间谍程序的流程分析
Feb 21 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
一个ftp类(ini.php)
2006/10/09 PHP
php如何获取文件的扩展名
2015/10/28 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
实例讲解php将字符串输出到HTML
2019/01/27 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
Jquery ajax传递复杂参数给WebService的实现代码
2011/08/08 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
2013/09/23 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
js实现飞机大战小游戏
2020/08/26 Javascript
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
Python实现手势识别
2020/10/21 Python
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
工程监理应届生求职信
2013/11/09 职场文书
一个大学生十年的职业规划
2014/01/17 职场文书
考试不及格的检讨书
2014/01/22 职场文书
教师党员自我评价范文
2015/03/04 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript