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读取配置文件模块ConfigParser
May 11 Python
带你了解python装饰器
Jun 15 Python
用Python中的turtle模块画图两只小羊方法
Apr 09 Python
Python实现的爬取百度贴吧图片功能完整示例
May 10 Python
python hough变换检测直线的实现方法
Jul 12 Python
pandas 选取行和列数据的方法详解
Aug 08 Python
Python datetime包函数简单介绍
Aug 28 Python
Django异步任务线程池实现原理
Dec 17 Python
Python网络爬虫四大选择器用法原理总结
Jun 01 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
全网最全python库selenium自动化使用详细教程
Jan 12 Python
在pyCharm中下载第三方库的方法
Apr 18 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中static,const与define的使用区别
2013/06/18 PHP
修改apache配置文件去除thinkphp url中的index.php
2014/01/17 PHP
Yii配置文件用法详解
2014/12/04 PHP
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
流量统计器如何鉴别C#:WebBrowser中伪造referer
2015/01/07 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
详解datagrid使用方法(重要)
2020/11/06 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
Python 正则表达式入门(中级篇)
2016/12/07 Python
带你了解python装饰器
2017/06/15 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
局域网内python socket实现windows与linux间的消息传送
2019/04/19 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
美容师的职业规划书
2013/12/27 职场文书
二手书店创业计划书
2014/01/16 职场文书
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
运动会演讲稿
2014/05/07 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
《比的意义》教学反思
2016/02/18 职场文书
责任书格式
2019/04/18 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript
MySQL中order by的执行过程
2022/06/05 MySQL