这里使用百度智能云API接口调用为例(可以使用AipSpeech和request直接做出来,但不是本文目的):

调用API接口前您需要:

1、注册百度智能云并进行实名认证

2、打开左上角那三个杠的图标(导航栏):产品服务-人工智能(语音技术)

3、下载并安装python3

4、创建百度智能云APP(用于调用API),创建方法网上很多就不再赘述。

一:代码

详细代码和注释如下:

from urllib.request import urlopen
from urllib.request import Request
from urllib.parse import urlencode
import json
import base64#说明:百度智能云用户APP监控报表每小时更新一次(自测,非实时更新)
AppID=1#'25046940'#用户唯一标识(必填项),实际使用时需要将AppID改为25046940,目前为了测试异常处理
# (实测结果显示对该号码小幅度改动不影响结果,说明百度智能云内部对该号码进行了模糊查询),用于API接口传参
API_KEY = 'GjssEQmW6F5wmE59XFYfB21A'#接口钥匙,用于鉴权认证
SECRET_KEY = 'EVfTGNv8Se0wqoHhovXx6PAkltlWYS9Z'#密钥,用于鉴权认证
TOKEN_URL = 'http://openapi.baidu.com/oauth/2.0/token'#鉴权认证传参网址,固定
ASR_URL = 'http://vop.baidu.com/server_api'#API接口传参网址,固定
file_path=r'./audio/16k.pcm'#pcm语音文件路径#语音文件读取
speach_data=open(file_path,mode='rb').read()#打开并读取pcm语音文件为类二进制数据
length=len(speach_data)
base64_data=base64.b64encode(speach_data)#将类二进制数据转化为二进制数据
base64_data=str(base64_data,encoding='utf-8')#使用utf-8转换成二进制字符串
print('输出原始类二进制文件长度:',length)
print('转换为二进制文件输出:',base64_data[:10])#获取认证
# 向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数
# 举例完整结构为https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&client_secret=0rDSjzQ20XUj5itV6WRtznPQSzr5pVw2&
params_token = {'grant_type': 'client_credentials',  # 必须参数,固定为client_credentials'client_id': API_KEY,  # API钥匙'client_secret': SECRET_KEY}  # 密钥
post_data_token = urlencode(params_token)#字典转化为网址序列
print('字典转化为网址序列:',post_data_token)
post_data_token = post_data_token.encode('utf-8')#二进制序列编码为utf-8格式的二进制序列
print('二进制序列编码为utf-8格式的二进制序列:',post_data_token)
def token(post_data,url=TOKEN_URL,headers={}):result=Request(url=url,data=post_data,headers=headers)#通过传入网址和参数爬取网址内容,headers主要用于拥有反爬机制的网址result=urlopen(result).read()#可视化网页爬取数据(转化为二进制字符串)urlopen是专门打开网页文件的open,该结果默认为json数据,json数据的本质:字符串print('爬取结果:',result)print('解码爬取结果:',result.decode())result=json.loads(result.decode())#加载json解码数据并转化为字典(实际不用解码,load能自己解码,但是为了保持代码结构的完整性保留了下来)return result
token=token(post_data_token,url=TOKEN_URL)['access_token']#获取access_token(认证编号)
print('查看token数据类型:',type(token))#传入API参数和数据并获取结果
params = {'format': 'pcm',#文件格式(必填项)'rate': 16000,#采样率,值越高,语料传到API接口内的语料越精细(或者越丰富,涉及到连续与离散),识别精度越高(必填项)'token': token,#认证编号(必填项)'cuid': AppID,  # 用户唯一标识(必填项)(实测结果显示对该号码小幅度改动不影响结果,说明百度智能云内部对该号码进行了模糊查询)'channel': 1,#仅支持单声道,固定值1(必填项)'speech': base64_data,#本地语音文件的二进制语音数据 ,需要进行base64 编码成二进制数据。与len参数连一起使用。'len': length#本地语音文件的的字节数,单位字节}
post_data=json.dumps(params).encode('utf-8')#将参数转化为utf-8编码格式的json数据,json数据的本质:字符串
print('参数输出:',post_data[:30])#存在的问题:为何token函数不可复用?
# result=token(post_data,url=ASR_URL,headers={'Content-Type':'application/json'})
result = Request(url=ASR_URL, data=post_data, headers={'Content-Type':'application/json'})  # 通过传入网址和参数爬取网址内容,headers主要用于拥有反爬机制的网址
result = urlopen(result).read()  # 可视化网页爬取数据(转化为二进制字符串)urlopen是专门打开网页文件的open,该结果默认为json数据,json数据的本质:字符串
print('爬取结果:', result)
print('解码爬取结果:', result.decode())
result = json.loads(result.decode())  # 加载json解码数据并转化为字典(实际不用解码,load能自己解码,但是为了保持代码结构的完整性保留了下来)errocode_= {}
with open(r'./百度智能云API错误码大全.txt','r',encoding='utf-8') as f:r=f.readlines()num=0for i in range(int(len(r)/8+1)):num0=r[num].strip()num1=r[num+2].strip()num2=r[num+4].strip()num3=r[num+6].strip()errocode_[f"{num0}"]=[num1,num2,num3]num+=8try:print('最终结果:',result['result'][0])
except KeyError as err:errocode=str(result['err_no'])print(f"!!!获取失败,错误来源:{errocode_[errocode][0]}\n错误原因:{errocode_[errocode][1]}\n解决方案:{errocode_[errocode][2]}")

二:数据

1、关于文件pcm语音文件需要自己录制。

2、将下面文本块复制存为“百度智能云API错误码大全.txt”并与上述代码文件放置同一路径

3300用户输入错误输入参数不正确请仔细核对文档及参照demo,核对输入参数3301用户输入错误音频质量过差请上传清晰的音频3302用户输入错误鉴权失败token字段校验失败。请使用正确的API_KEY 和 SECRET_KEY生成。或QPS、调用量超出限额。或音频采样率不正确(可尝试更换为16k采样率)。3303服务端问题语音服务器后端问题请将api返回结果反馈至论坛或者QQ群3304用户请求超限用户的请求QPS超限请降低识别api请求频率 (qps以appId计算,移动端如果共用则累计)3305用户请求超限用户的日pv(日请求量)超限请“申请提高配额”,如果暂未通过,请降低日请求量3307服务端问题语音服务器后端识别出错问题目前请确保16000的采样率音频时长低于30s。如果仍有问题,请将api返回结果反馈至论坛或者QQ群3308用户输入错误音频过长音频时长不超过60s,请将音频时长截取为60s以下3309用户输入错误音频数据问题服务端无法将音频转为pcm格式,可能是长度问题,音频格式问题等。 请将输入的音频时长截取为60s以下,并核对下音频的编码,是否是16K, 16bits,单声道。3310用户输入错误输入的音频文件过大语音文件共有3种输入方式: json 里的speech 参数(base64后); 直接post 二进制数据,及callback参数里url。 分别对应三种情况:json超过10M;直接post的语音文件超过10M;callback里回调url的音频文件超过10M3311用户输入错误采样率rate参数不在选项里目前rate参数仅提供16000,填写4000即会有此错误3312用户输入错误音频格式format参数不在选项里目前格式仅仅支持pcm,wav或amr,如填写mp3即会有此错误

有问题请联系邮箱:1055365751@qq.com

使用python内置函数进行常规API接口调用相关推荐

  1. 【Python知识点梳理】5.Python内置函数

    5.Python内置函数 文章目录 1.内置函数简介 2.数据运算 3.类型转换 4.序列操作 5.Set集合 7.其他内置函数 6.综合练习 总结 1.内置函数简介   任何一门编程语言的核心操作都 ...

  2. python 内置函数

    python 内置函数 Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你 可以随时调用这些函数,不需要定义. abs()     # 求一个数的绝 ...

  3. python怎么用函数查看变量类型_查看变量类型的Python内置函数是()。

    [单选题]下列不属于反射的是( ) [判断题]传统通俗史学有普及型和通俗型 [单选题]当前最流行和最受重视的资料分析是( ). [简答题]什么情况下采用斜视图比较合适? [单选题]下列命题正确的是( ...

  4. python内置函数可以返回列表元组_Python内置函数()可以返回列表、元组、字典、集合、字符串以及range对象中元素个数....

    Python内置函数()可以返回列表.元组.字典.集合.字符串以及range对象中元素个数. 青岛远洋运输有限公司冷聚吉船长被评为全国十佳海员.()A:错B:对 有源逆变是将直流电逆变成其它频率的交流 ...

  5. pythonpass函数_有的python内置函数怎么就一个pass?

    你看到的是pass,但可能现实并非如此. 火车上信号太差了,待我移动一下再续-- 先随便扯扯吧-- 既然提到Python内置函数的实现,就涉及到Python本身的实现方式了,也就是这个解释器是怎么实现 ...

  6. python内置函数用来返回数值型序列中所有元素之和_Python内置函数______用来返回数值型序列中所有元素之和...

    [填空题]表达式 int(4**0.5) 的值为 [判断题]3+4j不是合法的Python表达式. [填空题]已知列表对象x = ['11', '2', '3'],则表达式 max(x) 的值为 [填 ...

  7. 列举5个python内置函数_Python5个内建高阶函数的使用

    描述 本文结合各种实际的例子详细讲解了Python5个内建高阶函数的使用,能够帮助理解Python的数据结构和提高数据处理的效率,这5个函数分别是: map reduce filter sorted/ ...

  8. Python 内置函数sorted()在高级用法

    对于Python内置函数sorted(),先拿来跟list(列表)中的成员函数list.sort()进行下对比.在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的. ...

  9. 8个实用的Python内置函数

    python中有许多内置函数,不像print那么广为人知,但它们却异常的强大,用好了可以大大提高代码效率. 这次来梳理下8个好用的python内置函数. 1.set() 当需要对一个列表进行去重操作的 ...

  10. python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...

    Python之shutil模块11个常用函数详解,python内置函数是什么 shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查 ...

最新文章

  1. 成为优秀UI设计师需要具备哪些条件?
  2. angularjs通过ng-change和watch两种方式实现对表单输入改变的监控
  3. 不使用配置文件动态注册HttpModule
  4. Python装饰器、生成器、内置函数、Json-Day05
  5. powerdesign怎么画分析类图_画一个彭于晏
  6. 100个网络基础知识,赶紧收藏吧!
  7. python中的repr是什么意思_python中str和repr有什么区别
  8. linux 直接映射 页表大小,linux 启动过程临时页表到底映射了多大内存?
  9. mysql8.0版本的服务器名称_Linux服务器配置-VSFTP服务配置(六)
  10. LKT系列加密芯片如何预置openssl生成的rsa密钥完成运算(三)
  11. php完全匹配,如何在PHP中使用正则表达式找到完全匹配的内容?
  12. TYUT-A2专题题解
  13. 【BZOJ1417】Pku3156 Interconnect
  14. Python3实现顺序查找、冒泡排序、选择排序
  15. 看到前一篇文章的感慨
  16. 【学堂在线数据挖掘:理论方法笔记】第九天(4.3)
  17. liux环境下配置jdk
  18. 菜鸟教程 Python100例答案
  19. 谭永霞电路分析第三版课后答案_《电路分析》谭永霞西南交通大学课后习题和其答案.pdf...
  20. 16进制颜色透明度对照表

热门文章

  1. 梦三国则么修改服务器时间,梦三国如何窗口,梦三国设置
  2. Python爬虫——爬取豆瓣VIP书籍信息并存入数据库
  3. DVD驱动器打开拒绝访问
  4. seleniumwire获取百度指数
  5. 计算机里面的Profile怎么翻译比较好?
  6. 【C语言】扫雷游戏详解及完整代码
  7. 扫雷代码(包含扩展函数)
  8. Cydia怎样添加威锋源
  9. 内网穿透服务器搭建教程,NPS使用教程
  10. mysql调用耗时_记一次服务器执行MySQL耗时问题