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实现的防DDoS脚本
Feb 08 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
Apr 04 Python
Python里disconnect UDP套接字的方法
Apr 23 Python
python通过邮件服务器端口发送邮件的方法
Apr 30 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
Python实现批量压缩图片
Jan 25 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 Python
详解Python的循环结构知识点
May 20 Python
用python打印1~20的整数实例讲解
Jul 01 Python
使用python实现对元素的长截图功能
Nov 14 Python
python实现电子词典
Mar 03 Python
keras在构建LSTM模型时对变长序列的处理操作
Jun 29 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 超链接 抓取实现代码
2009/06/29 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
jquery 获取索引值在一定范围的列表方法
2018/01/25 jQuery
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
2019/04/17 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
Python中enumerate函数代码解析
2017/10/31 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
Java面试题及答案
2012/09/08 面试题
顶岗实习计划书
2014/01/10 职场文书
大三毕业自我鉴定
2014/01/15 职场文书
浙江文明网签名寄语
2014/01/18 职场文书
学校募捐倡议书
2014/05/14 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
校运会加油稿大全
2015/07/22 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers
关于Redis的主从复制及哨兵问题
2022/06/16 Redis