speech/main.py (37 lines of code) (raw):

import os from flask import Flask, redirect, render_template, request from google.cloud import storage from google.cloud import speech from google.cloud.speech import enums from google.cloud.speech import types app = Flask(__name__) @app.route('/') def homepage(): # Return a Jinja2 HTML template and pass in image_entities as a parameter. return render_template('homepage.html') # Transcribes the audio file specified by the source_uri. # Adapted from: https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/speech/cloud-client/transcribe.py def transcribe_audio(source_uri): # Create a Speech Client object to interact with the Speech Client Library. client = speech.SpeechClient() # Create audio and config objects that you'll need to call the API. audio = types.RecognitionAudio(uri=source_uri) config = types.RecognitionConfig( encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16, sample_rate_hertz=16000, language_code='en-US') # Call the Speech API using the Speech Client's recognize function. response = client.recognize(config, audio) return response @app.route('/upload_audio', methods=['GET', 'POST']) def upload_audio(): # Create a Cloud Storage client. storage_client = storage.Client() # Get the Cloud Storage bucket that the file will be uploaded to. bucket = storage_client.get_bucket(os.environ.get('CLOUD_STORAGE_BUCKET')) # Create a new blob and upload the file's content to Cloud Storage. audio = request.files['file'] blob = bucket.blob(audio.filename) blob.upload_from_string( audio.read(), content_type=audio.content_type) # Retrieve a Speech API response for the audio file stored in Cloud Storage source_uri = 'gs://{}/{}'.format(os.environ.get('CLOUD_STORAGE_BUCKET'), blob.name) response = transcribe_audio(source_uri) results = response.results # Redirect to the home page. return render_template('homepage.html', results=results) @app.errorhandler(500) def server_error(e): return """ An internal error occurred: <pre>{}</pre> See logs for full stacktrace. """.format(e), 500 if __name__ == '__main__': # This is used when running locally. Gunicorn is used to run the # application on Google App Engine. See entrypoint in app.yaml. app.run(host='127.0.0.1', port=8080, debug=True)