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 相关文章推荐
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
Jul 01 Python
python实现下载文件的三种方法
Feb 09 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
浅谈Django学习migrate和makemigrations的差别
Jan 18 Python
python读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
Python远程视频监控程序的实例代码
May 05 Python
如何使用pyinstaller打包32位的exe程序
May 26 Python
在Python中过滤Windows文件名中的非法字符方法
Jun 10 Python
Python实现点云投影到平面显示
Jan 18 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 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
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
PHP安全上传图片的方法
2015/03/21 PHP
php判断一个数组是否为有序的方法
2015/03/27 PHP
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
AngularJS动态加载模块和依赖的方法分析
2016/11/08 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
Vue代码整洁之去重方法整理
2019/08/06 Javascript
nodejs和react实现即时通讯简易聊天室功能
2019/08/21 NodeJs
JS实现容器模块左右拖动效果
2020/01/14 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
Python中的hypot()方法使用简介
2015/05/18 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
解读! Python在人工智能中的作用
2017/11/14 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
Python字典对象实现原理详解
2019/07/01 Python
基于Pytorch SSD模型分析
2020/02/18 Python
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
Martinelli官方商店:西班牙皮鞋和高跟鞋品牌
2019/07/30 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
Java基础面试题
2012/11/02 面试题
学校端午节活动方案
2014/08/23 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
小学总务工作总结
2015/08/13 职场文书
Java获取字符串编码格式实现思路
2022/09/23 Java/Android