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的词法分析与语法分析
May 18 Python
django认证系统实现自定义权限管理的方法
Jul 16 Python
Python SQL查询并生成json文件操作示例
Aug 17 Python
解决python "No module named pip" 的问题
Oct 13 Python
python 分离文件名和路径以及分离文件名和后缀的方法
Oct 21 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
python 多进程共享全局变量之Manager()详解
Aug 15 Python
Django xadmin开启搜索功能的实现
Nov 15 Python
python3 配置logging日志类的操作
Apr 08 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 Python
python库Tsmoothie模块数据平滑化异常点抓取
Jun 10 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 levenshtein()函数用法讲解
2019/03/08 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
js性能优化技巧
2015/11/29 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
Python内置数据类型详解
2014/08/18 Python
Python分治法定义与应用实例详解
2017/07/28 Python
python删除文本中行数标签的方法
2018/05/31 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
Python3.5多进程原理与用法实例分析
2019/04/05 Python
Python Pandas 箱线图的实现
2019/07/23 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
.NET remoting的两种通道是什么
2016/05/31 面试题
数控加工专业毕业生自荐信
2013/09/27 职场文书
学校万圣节活动方案
2014/02/13 职场文书
竞聘演讲稿
2014/04/24 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL