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 Mysql数据库操作 Perl操作Mysql数据库
Jan 12 Python
python编写爬虫小程序
May 14 Python
Python base64编码解码实例
Jun 21 Python
python 全局变量的import机制介绍
Sep 07 Python
tensorflow实现简单的卷积网络
May 24 Python
如何基于python实现画不同品种的樱花树
Jan 03 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
解决python3插入mysql时内容带有引号的问题
Mar 02 Python
Pytorch高阶OP操作where,gather原理
Apr 30 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
matplotlib基础绘图命令之errorbar的使用
Aug 13 Python
python 实现单例模式的5种方法
Sep 23 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 无限极分类
2008/03/27 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
js获取页面description的方法
2015/05/21 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
对于js垃圾回收机制的理解
2017/09/14 Javascript
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
2020/05/27 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
python 检查文件mime类型的方法
2018/12/08 Python
Django利用cookie保存用户登录信息的简单实现方法
2019/05/27 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
深入探究HTML5的History API
2015/07/09 HTML / CSS
丝芙兰巴西官方商城:SEPHORA巴西
2016/10/31 全球购物
转让协议书范本
2014/04/15 职场文书
年检委托书
2014/08/30 职场文书
springboot中一些比较常用的注解总结
2021/06/11 Java/Android
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python