Synchronous recognize only accepts inline audio up to about 60 seconds, which is why you are hitting that limit. For anything longer, use longrunningrecognize, the async method. Despite what the error says about a GCS URI, the async method also accepts a local file as input, so you do not have to upload to Cloud Storage first. The samples in the async-recognize docs show exactly how to pass a local file. Source: https://github.com/googleapis/python-speech/issues/18
Source: https://github.com/googleapis/python-speech/issues/18