1. 程式人生 > >百度語音REST介面使用(python)

百度語音REST介面使用(python)


#! /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