in experiments/babel/app/pages/chirphd_voices.py [0:0]
def on_click_babel(e: me.ClickEvent): # pylint: disable=unused-argument
"""invokes the babel endpoint
Args:
e (me.ClickEvent): event click
"""
state = me.state(PageState)
state.is_loading = True
if not state.statement:
print("no statement provided. not synthesizing.")
return
state.audio_output_infos.clear()
yield
post_object = {"statement": state.statement}
print(post_object)
endpoint = f"{config.BABEL_ENDPOINT}/babel"
print(f"endpoint: {endpoint}")
req = urllib.request.Request(endpoint)
if "localhost" not in endpoint:
credentials, project_id = google.auth.default()
print(f"project id: {project_id}")
credentials.refresh(googlerequests.Request())
print(f"credentials.token {credentials.token}")
urlinfo = urllib.parse.urlparse(endpoint)
audience = f"{urlinfo.scheme}://{urlinfo.netloc}/"
print(f"audience: {audience}")
auth_req = google.auth.transport.requests.Request()
id_token = google.oauth2.id_token.fetch_id_token(auth_req, audience)
print(f"id token {id_token}")
req.add_header("Authorization", f"Bearer {id_token}")
req.add_header("Content-Type", "application/json; charset=utf-8")
bindata = str(json.dumps(post_object)).encode("utf-8")
response = urllib.request.urlopen(req, bindata)
response_as_string = response.read().decode("utf-8")
print(response_as_string)
data = json.loads(response_as_string)
# state.audio_output_uri = f"{BUCKET_PATH}{data.get("outputfiles")[0]}"
# state.audio_output_infos.clear()
# for f in data.get("audio_metadata"):
# state.audio_output_infos.append(f"{BUCKET_PATH}{f}")
print(data.get("audio_metadata"))
state.audio_output_metadata.clear()
state.audio_output_metadata = [
BabelMetadata(item) for item in data.get("audio_metadata")
]
state.is_loading = False
yield