From f690e608f2a7ff76530d1d4603b2786eb18aa3cf Mon Sep 17 00:00:00 2001 From: Kyle K Date: Mon, 19 Oct 2020 00:33:01 -0500 Subject: aws polly python example --- aws-polly.py | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ speech.mp3 | Bin 0 -> 13054 bytes 2 files changed, 55 insertions(+) create mode 100644 aws-polly.py create mode 100644 speech.mp3 diff --git a/aws-polly.py b/aws-polly.py new file mode 100644 index 0000000..151f2f4 --- /dev/null +++ b/aws-polly.py @@ -0,0 +1,55 @@ +# https://docs.aws.amazon.com/polly/latest/dg/get-started-what-next.html + +"""Getting Started Example for Python 2.7+/3.3+""" +from boto3 import Session +from botocore.exceptions import BotoCoreError, ClientError +from contextlib import closing +import os +import sys +import subprocess +from tempfile import gettempdir + +# Create a client using the credentials and region defined in the [polly-windows] +# section of the AWS credentials file (~/.aws/credentials). +session = Session(profile_name="polly-windows") +polly = session.client("polly") + +try: + # Request speech synthesis + response = polly.synthesize_speech(Text="hello sexy, you're my master!", OutputFormat="mp3", + VoiceId="Justin") +except (BotoCoreError, ClientError) as error: + # The service returned an error, exit gracefully + print(error) + sys.exit(-1) + +# Access the audio stream from the response +if "AudioStream" in response: + # Note: Closing the stream is important because the service throttles on the + # number of parallel connections. Here we are using contextlib.closing to + # ensure the close method of the stream object will be called automatically + # at the end of the with statement's scope. + with closing(response["AudioStream"]) as stream: + output = os.path.join(gettempdir(), "speech.mp3") + + try: + # Open a file for writing the output as a binary stream + with open(output, "wb") as file: + file.write(stream.read()) + except IOError as error: + # Could not write to file, exit gracefully + print(error) + sys.exit(-1) + +else: + # The response didn't contain audio data, exit gracefully + print("Could not stream audio") + sys.exit(-1) + +# Play the audio using the platform's default player +if sys.platform == "win32": + os.startfile(output) +else: + # The following works on macOS and Linux. (Darwin = mac, xdg-open = linux). + opener = "open" if sys.platform == "darwin" else "xdg-open" + subprocess.call([opener, output]) \ No newline at end of file diff --git a/speech.mp3 b/speech.mp3 new file mode 100644 index 0000000..8de30e1 Binary files /dev/null and b/speech.mp3 differ -- cgit v1.2.3