python调用百度REST API实现语音识别
作者:Hail-Linux 发布时间:2023-08-28 19:44:44
标签:python,REST,API,语音识别
目前,语音识别,即将语音内容转换为文字的技术已经比较成熟,遥想当时锤子发布会上展示的讯飞输入法语音识别,着实让讯飞火了一把。由于此类语音识别需要采集大量的样本,才能达到一定的准确度,个人很难从零开始搭建。但是,许多拥有语音识别技术的公司,或多或少会提供一些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 "错误"
来源:https://blog.csdn.net/wr132/article/details/58733613


猜你喜欢
- (function($) { (function($) { $.preload = function(data, cfg) { return
- 本文实例为大家分享了python实现批量格式转换的具体代码,供大家参考,具体内容如下深度学习过程中总是绕不开数据集的制作,有时候实际图片格式
- 如下所示:import webbrowserimport codecsimport timewith open("test.txt
- 解决办法一(ThinkPHP官方提供的办法,我并没有测试过):升级到ThinkPHP3.1最新的UploadFile.class.php(h
- 这两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互。但他们的功能不尽相同。举两个小例子。 >>> r
- 工作中每天需要收集部门内的FR文件,发送给外部部门的同事帮忙上传,这么发了有大半年,昨天亮光一闪,为什么不做成自动化呢,于是用python实
- 如下所示:df = df[df['cityname']==u'北京市']记得,如果用的python2,一定要
- 不少需要用到sql2005的程序,有很多新手还是会操作,这里写个详细的图文教程送个菜鸟们,高手请飘过。适用于独立主机的朋友使用,如果你还没安
- 本文实例为大家分享了python绘制彩虹图的具体代码,供大家参考,具体内容如下from turtle import *#控制彩虹路径def
- Python中有以下几个基本的数据类型:整数 int字符串 str浮点数 float集合 set列表 list元组 tuple字典 dict
- 函数的基本结构Python中的函数基本结构:def 函数名([参数列表]): 语句 几点说明:
- Pycharm时一个非常好用的IDE,但是一开始的时候甚至会因为.py文件不能运行而束手无策。。。 这里需要说明一下Pycharm的作用,P
- 我们可以使用Basemap这个工具包来实现中国地图的绘制首先需要加载一些包:import numpy as npimport matplot
- asp中fso怎样判断一个盘上是否有文件,实例代码,需要的朋友可以试试:<% dim objfolder dim
- 下面是用SA-FileUp组件上传一个HTML文件的程序:fileup.htm < HTM
- 本文实例讲述了Python实现判断给定列表是否有重复元素的方法。分享给大家供大家参考,具体如下:题目很简单,只是简单温习一个方法,most_
- 条件1、能够上网2、必须是你的好友3、必须能二维码登录网页微信发送示例# 使用微信接口给微信好友发送消息,import itchat&nbs
- 今天在 经纬 同学blog看到的。有这么一段代码:<ul id="demo"><li>
- 前言,在pytorch中,当服务器上的gpu被占用时,很多时候我们想先用cpu调试下代码,那么就需要进行gpu和cpu的切换。方法1:x.t
- ?图解redis通信协议请求协议:请求协议一般格式:*<参数数量> CR LF$<参数 1 的字节数量> CR LF