1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python3 使用百度云 API 接口实现音频文件转写

Python3 使用百度云 API 接口实现音频文件转写

时间:2023-12-06 13:54:07

相关推荐

Python3 使用百度云 API 接口实现音频文件转写

注意事项

本文参考链接: /v2/article/detail/DKQLR7RK0517ACP7.html.

百度智能云的官方文档是有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 = '/oauth/2.0/token'oauth_url = '/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 Nonecnt = 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 = '/server_api'speed_url = '/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 = '/rpc/2.0/search/info?access_token={%s}' % access_tokenheader = {'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'])

上传成功以后就慢慢等…

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。