python调用百度REST API实现语音识别


Posted in Python onAugust 30, 2018

目前,语音识别,即将语音内容转换为文字的技术已经比较成熟,遥想当时锤子发布会上展示的讯飞输入法语音识别,着实让讯飞火了一把。由于此类语音识别需要采集大量的样本,才能达到一定的准确度,个人很难从零开始搭建。但是,许多拥有语音识别技术的公司,或多或少会提供一些API或者SDK供开发者使用,这样就把语音识别的门槛降到了一个很低的程度,只需几行代码即可实现。下面我介绍以下如何使用Python调用百度的REST API实现一个简单的语音识别。

注册账号,并成为开发者

打开 http://yuyin.baidu.com/ ,并且使用你的百度账号登陆,如果你不是开发者,系统会自动引导你申请成为开发者。

创建应用

打开 http://yuyin.baidu.com/app ,点击创建应用,应用名称自己取,选择合适的应用类型。下一步,服务类型选择语音识别,继续点击下一步,然后就可以关闭了。

刷新当前页面,你就可以看到自己创建的应用,点击查看key,这些是进行身份识别的关键信息。

代码编写

在 http://yuyin.baidu.com/docs/asr/54 可以查看官方文档,百度提供了两种方法:隐式发送是将音频数据打包转换成一个字符串,放到json数据包中来发送;显示发送则是直接发送语音数据。本代码使用隐式发送。

注意:使用前要将你的应用信息填入适当位置

#!/usr/bin/env python
# coding: utf-8
import urllib2
import json
import base64
import os

#设置应用信息
baidu_server = "https://openapi.baidu.com/oauth/2.0/token?"
grant_type = "client_credentials"
client_id = "" #填写API Key
client_secret = "" #填写Secret Key

#合成请求token的URL
url = baidu_server+"grant_type="+grant_type+"&client_id="+client_id+"&client_secret="+client_secret

#获取token
res = urllib2.urlopen(url).read()
data = json.loads(res)
token = data["access_token"]
print token

#设置音频属性,根据百度的要求,采样率必须为8000,压缩格式支持pcm(不压缩)、wav、opus、speex、amr
VOICE_RATE = 8000
WAVE_FILE = "test.wav" #音频文件的路径
USER_ID = "hail_hydra" #用于标识的ID,可以随意设置
WAVE_TYPE = "wav"

#打开音频文件,并进行编码
f = open(WAVE_FILE, "r")
speech = base64.b64encode(f.read())
size = os.path.getsize(WAVE_FILE)
update = json.dumps({"format":WAVE_TYPE, "rate":VOICE_RATE, 'channel':1,'cuid':USER_ID,'token':token,'speech':speech,'len':size})
headers = { 'Content-Type' : 'application/json' } 
url = "http://vop.baidu.com/server_api"
req = urllib2.Request(url, update, headers)

r = urllib2.urlopen(req)


t = r.read()
result = json.loads(t)
print result
if result['err_msg']=='success.':
  word = result['result'][0].encode('utf-8')
  if word!='':
    if word[len(word)-3:len(word)]==',':
      print word[0:len(word)-3]
    else:
      print word
  else:
    print "音频文件不存在或格式错误"
else:
  print "错误"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python下10个简单实例代码
Nov 15 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
详解Python静态网页爬取获取高清壁纸
Apr 23 Python
python GUI实现小球满屏乱跑效果
May 09 Python
python实现感知机线性分类模型示例代码
Jun 02 Python
python递归法解决棋盘分割问题
Jul 17 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
pandas to_excel 添加颜色操作
Jul 14 Python
浅谈python出错时traceback的解读
Jul 15 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
Jan 08 Python
总结python多进程multiprocessing的相关知识
Jun 29 Python
Python中的 Set 与 dict
Mar 13 Python
python调用百度语音REST API
Aug 30 #Python
python调用百度语音识别api
Aug 30 #Python
python实现ID3决策树算法
Aug 29 #Python
python实现C4.5决策树算法
Aug 29 #Python
python机器学习之KNN分类算法
Aug 29 #Python
深入理解python中sort()与sorted()的区别
Aug 29 #Python
Python实现拷贝/删除文件夹的方法详解
Aug 29 #Python
You might like
基于PHP静态类的原罪详解
2013/05/06 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
PHP检测用户语言的方法
2015/06/15 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
javascript full screen 全屏显示页面元素的方法
2013/09/27 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
玩转方法:call和apply
2014/05/08 Javascript
Javascript字符串对象的常用方法简明版
2014/06/26 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
轮播图组件js代码
2016/08/08 Javascript
js 获取今天以及过去日期
2017/04/11 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
python利用不到一百行代码实现一个小siri
2017/03/02 Python
python安装scipy的方法步骤
2019/06/26 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
什么是servlet链?
2014/07/13 面试题
助人为乐表扬信范文
2014/01/14 职场文书
迟到检讨书1000字
2014/01/15 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
土地租赁协议书
2015/01/29 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS