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 相关文章推荐
PHP魔术方法__ISSET、__UNSET使用实例
Nov 25 Python
Python列表(list)常用操作方法小结
Feb 02 Python
十个Python程序员易犯的错误
Dec 15 Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 Python
python得到windows自启动列表的方法
Oct 14 Python
TensorFlow实现简单的CNN的方法
Jul 18 Python
python 字符串常用方法汇总详解
Sep 16 Python
python实现人像动漫化的示例代码
May 17 Python
让Django的BooleanField支持字符串形式的输入方式
May 20 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 Python
利用Python优雅的登录校园网
Oct 21 Python
python实现批量提取指定文件夹下同类型文件
Apr 05 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/11/24 PHP
php 读取文件乱码问题
2010/02/20 PHP
基于PHP的微信公众号的开发流程详解
2020/08/07 PHP
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
JavaScript中继承用法实例分析
2015/05/16 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
vue-cli webpack 开发环境跨域详解
2017/05/18 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
装修设计师求职信
2014/02/26 职场文书
关于环保的建议书400字
2014/03/12 职场文书
志愿者活动总结
2014/04/28 职场文书
小学家长学校培训材料
2014/08/24 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
HDFS免重启挂载新磁盘
2022/04/06 Servers
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
2022/04/29 Servers