To get the Text-to-Speech API working from a Python script on GCE, I tried using the following code running under GCE:
"""Synthesizes speech from the input string of text or ssml.
Note: ssml must be well-formed according to:
https://www.w3.org/TR/speech-synthesis/
"""
# Authorize server-to-server interactions from Google Compute Engine.
import httplib2
from oauth2client.contrib import gce
credentials = gce.AppAssertionCredentials(
scope='https://www.googleapis.com/auth/cloud-platform')
http = credentials.authorize(httplib2.Http())
from google.cloud import texttospeech
# Instantiates a client
client = texttospeech.TextToSpeechClient()
# Set the text input to be synthesized
synthesis_input = texttospeech.types.SynthesisInput(text="This is a test. It is only a test.")
# Build the voice request, select the language code ("en-US") and the ssml
# voice gender ("neutral")
voice = texttospeech.types.VoiceSelectionParams(
language_code='en-US',
ssml_gender=texttospeech.enums.SsmlVoiceGender.NEUTRAL)
# Select the type of audio file you want returned
audio_config = texttospeech.types.AudioConfig(
audio_encoding=texttospeech.enums.AudioEncoding.MP3)
# Perform the text-to-speech request on the text input with the selected
# voice parameters and audio file type
response = client.synthesize_speech(synthesis_input, voice, audio_config)
# The response's audio_content is binary.
with open('output.mp3', 'wb') as out:
# Write the response to the output file.
out.write(response.audio_content)
print('Audio content written to file "output.mp3"')
I expected a file, output.mp3, which would contain the speech for "This is a test. It is only a test."
I received: "PermissionDenied: 403 Request had insufficient authentication scopes."
I have used the You-Tube API and the authentication worked on that. What am I missing here?