博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3 使用百度云 API 接口实现音频文件转写
阅读量:4230 次
发布时间:2019-05-26

本文共 3446 字,大约阅读时间需要 11 分钟。

注意事项

本文参考链接: .

百度智能云的官方文档是有JAVA SDK文档的,如果你想用Python来调用百度接口实现音频文件转写的话,那你就来对了。

操作系统:Windows

Python:3.6
注意事项:
语音识别要求支持的语音格式
原始 PCM 的录音参数必须符合 8k/16k 采样率、16bit 位深、单声道,支持的压缩格式有:pcm(不压缩)、wav、opus、amr、x-flac。
简单说,语音参数必需要 8k/16k 采样率、16bit 位深、单声道,不然会出现内容和文字不相符的情况。

APP_ID, API_KEY, SECRET_KEY的获取

既然要用人家的服务,肯定会有些限制,不过这些都是可以理解的。首先进入百度AI开放平台,通过百度云或者百度其他账号登录进入控制台,然后按照如下流程即可获得你想要的东西:

1、页面右上方“控制台”点击进入,登录百度账号,进入百度云管理后台页面。2、左侧导航栏上方,依次选择 产品服务->人工智能->智能呼叫中心,进入应用“概览”页面。3、服务申请。点击“创建应用”,“接口选择”已默认勾选完成,如无其他需求,无需勾选,完成其他资料后,点击最下方“立即创建”按钮。4、应用成功则页面显示“创建完毕”,点击”返回应用列表”, 查看新创建应用详情,记录AppID,API Key,Secret Key。

话不多说,直接上代码了

// An highlighted blockimport jsonimport requestsimport timeAPP_ID = '********' # 你申请的APP_IDAPI_KEY = '***************' # 你申请的API_KEYSECRET_KEY = '*****************' # # 你申请的SECRET_KEYdef get_access_token(cltid, srt_key): # 获取访问令牌    # oauth_url = 'https://openapi.baidu.com/oauth/2.0/token'    oauth_url = 'https://aip.baidubce.com/oauth/2.0/token'    args_data = {
'grant_type': 'client_credentials', 'client_id': cltid, 'client_secret': srt_key, } cnt_type = {
'Content-Type': 'application/json; charset=UTF-8'} resp = requests.post(oauth_url, data=args_data, headers=cnt_type) print("get baidu center info...") if resp.status_code != 200: print("have http error", resp.status_code) return None cnt = resp.json() # 获取的内容变为字典 cnt['expires_in'] += int(time.time()) # 将有效期时间记录 with open('baidu.ck', 'w', encoding='utf-8') as fp: res = {
'access_token': cnt['access_token'], 'expires_in': cnt['expires_in']} json.dump(res, fp) return cnt['access_token']def upload_audio_file(access_token): # 上传你要识别的音频文件,得按照人家规定的参数和格式 # speed_url = 'http://vop.baidu.com/server_api' speed_url = 'https://aip.baidubce.com/rpc/2.0/session/offline/upload/asr?access_token={%s}' % access_token # args_data = {'format': 'pcm', # 'rate': 8000, # 'channel': 1, # 'cuid': 'rocky_shop', # 应用名称,可随意取名 # 'token': atoken, # } args_data = {
"appId": APP_ID, "companyName": "百度", # 这个可以修改 "callId": "20e59200-57da-423e-b613-6a8ce126d0a7", # 这个也可以改 "agentFileUrl": "http://***", # 你语音文件的url,要公网可访问的地址,你写上之后可以自己先下载试一下 "suffix": "wav", } header = {
'Content-Type': 'application/json'} resp = requests.post(speed_url, data=json.dumps(args_data), headers=header) info = resp.json() return infodef get_text_from_url(access_token): # 获取识别结果。免费用户是整点识别,上传之后得等待... datas = {
"category": "OFFLINE_ASR_RESULT", "paras": {
"appId": APP_ID, # 百度云appId,必选 "callId": "20e59200-57da-423e-b613-6a8ce126d0a7" # 用户上传某一通的callId,必选 } } data_url = 'https://aip.baidubce.com/rpc/2.0/search/info?access_token={%s}' % access_token header = {
'Content-Type': 'application/json'} response = requests.post(data_url, data=json.dumps(datas), headers=header) information = response.json() return information# 结果解析的东西自己随便写,如果提前不太清楚返回数据的格式,可以先整个都print出来,然后做相应的解析。至于识别结果的准确性,这个不好说...access_token = get_access_token(API_KEY, SECRET_KEY)print(access_token)info = upload_audio_file(access_token)print(info)result = get_text_from_url(access_token)print(result)# tmp = result['data']['content']# print(tmp)# tmp_list = eval(tmp)# for x in tmp_list:# print(x['sentence'])

上传成功以后就慢慢等…

运行结果示意图

转载地址:http://nsjqi.baihongyu.com/

你可能感兴趣的文章
UVM:7.6.1 检查后门访问中hdl 路径的sequence
查看>>
UVM:7.6.2 检查默认值的sequence
查看>>
UVM:7.7.1 使用reg_predictor
查看>>
UVM:7.7.2 使用UVM_PREDICT_DIRECT功能与mirror 操作
查看>>
UVM:7.7.3 寄存器模型的随机化与update
查看>>
UVM:7.7.4 扩展位宽
查看>>
UVM:7.8.1 get_root_blocks
查看>>
UVM:7.8.2 get_reg_by_offset 函数
查看>>
UVM:8.2.2 重载的方式及种类
查看>>
UVM:8.2.3 复杂的重载
查看>>
UVM:8.3.1 重载transaction
查看>>
Log4j配置
查看>>
Struts2中过滤器和拦截器的区别
查看>>
51单片机:led灯闪烁10次后熄灭
查看>>
增加windows下Tomcat运行时的内存
查看>>
tomcat群集中session共享的几个方案
查看>>
查找google谷歌北京IP地址的方法
查看>>
入门 | 一文概览深度学习中的激活函数
查看>>
一分钟整明白Tensorflow Extended
查看>>
人工智能再次参加高考:和作家比写作文,AI能打多少分?
查看>>