百度語音REST介面使用(python)
阿新 • • 發佈:2019-01-08
#! /usr/bin/env python3 import uuid import base64 import json import urllib.request import sys def get_token(): apiKey = "xxxxxxx" secretKey = "xxxxxxxxxxx" auth_url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + apiKey + "&client_secret=" + secretKey res = urllib.request.urlopen(auth_url) json_data = res.read().decode() return json.loads(json_data)['access_token'] def baidu_asr(speech_file): with open(speech_file, 'rb') as f: speech_data = f.read() speech_base64=base64.b64encode(speech_data).decode('utf-8') speech_length=len(speech_data) data_dict = {'format':'wav', 'rate':8000, 'channel':1, 'cuid':mac_address, 'token':access_token, 'lan':'zh', 'speech':speech_base64, 'len':speech_length} json_data = json.dumps(data_dict).encode('utf-8') json_length = len(json_data) asr_server = 'http://vop.baidu.com/server_api' request = urllib.request.Request(url=asr_server) request.add_header("Content-Type", "application/json") request.add_header("Content-Length", json_length) fs = urllib.request.urlopen(url=request, data=json_data) result_str = fs.read().decode('utf-8') json_resp = json.loads(result_str) return json_resp if __name__ == "__main__": access_token = get_token() mac_address=uuid.UUID(int=uuid.getnode()).hex[-12:] speech_file = r'test1.wav' json_resp = baidu_asr(speech_file) print(json_resp)empty