Search code examples
pythonapispeech-to-textatt

Using the AT&T Speech to Text API With Python


I am trying to use the AT&T speech to text API. So far, I can get the access token

def get_access_token(client_id, client_secret):
headers = {'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'application/json'}

data = {'client_id': client_id, 'client_secret': client_secret, 'scope': 'SPEECH',
        'grant_type': 'client_credentials'}

response = requests.post(oauth_url, data=data, headers=headers)
return response.text

So far, this is what I have for sending the audio file to get the json response:

def get_text_from_file(file, access_token):
headers = {'Authorization': 'Bearer ' + access_token, 'Accept': 'application/json', 'Content-Type': 'audio/wav',
           'X-SpeechContext': 'Generic', 'Connection': 'Keep-Alive'}

But I am not sure how to send the file. Can anyone help?


Solution

  • This is what I just got working, using the requests library, and a couple of other resources I'll link below

    import json
    import requests
    
    class ATTSpeech:
        CLIENT_ID = "SOME"
        CLIENT_SECRET = "ID"
        TOKEN = None
    
        def __init__(self, *args, **kwargs):
            self.get_token()
    
    
        def get_token(self):
            # Get Access Token via OAuth.
            # https://matrix.bf.sl.attcompute.com/apps/constellation-sandbox
            response = requests.post("https://api.att.com/oauth/token", {
                "client_id": self.CLIENT_ID,
                "client_secret": self.CLIENT_SECRET,
                "grant_type": "client_credentials",
                "scope": "SPEECH,STTC"
            })
            content = json.loads(response.content)
            self.TOKEN = content["access_token"]
    
    
        def text_from_file(self, path):
    
            with open(path, 'rb') as f:
                response = requests.post("https://api.att.com/speech/v3/speechToText",
                    headers = {
                        "Authorization": "Bearer %s" % self.TOKEN,
                        "Accept": "application/json",
                        "Content-Type": "audio/wav",
                        "X-SpeechContext": "Generic",
                }, data=f)
            content = json.loads(response.content)
            return content
    

    https://sites.google.com/site/brssbrss/attspeechapi

    http://changingjasper.blogspot.com/2014/06/making-jasper-use-at-speech-api.html

    Usage is something like the below, assuming you saved this file as ATTEngine

    from ATTEngine import ATTSpeech
    a = ATTSpeech()
    a.text_from_file('/Users/issackelly/Desktop/here.wav')