in projects/speech2speech_translation/speech2speech.py [0:0]
def main():
"""Translates speech audio from one language to another.
Args: None
"""
args = parse_config_args(CONFIG_FILE)
if not args:
print("Failed to parse config file. Exiting.")
exit(1)
logger = logging.getLogger()
logger.setLevel(args.log.upper())
ch = logging.StreamHandler()
formatter = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
ch.setFormatter(formatter)
logger.addHandler(ch)
logger.info("Main started")
logger.info("args: %s", args)
if args.list_voices:
s2s.list_tts_voices(logger)
exit(0)
elif args.list_translate_languages:
s2s.list_translate_languages(logger)
exit(0)
gcs = s2s.parse_gcs_url(args.gcs_path)
if not gcs["path"].endswith("/"):
gcs["path"] += "/"
logger.info("GCS URL: %s", args.gcs_path)
logger.debug("GCS bucket: %s", gcs["bucket"])
logger.debug("GCS path: %s", gcs["path"])
prefix = s2s.generate_filename_prefix(args.filename_prefix) or ""
logger.info("Filename prefix: %s", prefix)
gcs_uri_input_audio = s2s.upload_file_to_gcs(
args.project_id,
gcs,
args.input_audio_file_path,
args.input_audio_file_name,
logger,
)
stt_response = s2s.speech_to_text(
args.project_id,
args.location,
args.source_language_code,
args.stt_model,
args.stt_timeout,
gcs_uri_input_audio,
logger,
)
transcript = s2s.parse_stt_response(
stt_response, gcs_uri_input_audio, args.stt_alternative, logger
)
translate_result = s2s.translate_text(
args.target_language, transcript, logger
)
logger.debug(
"Text (%s): %s",
translate_result["detectedSourceLanguage"],
translate_result["input"],
)
logger.debug(
"\nTranslation (%s): %s",
args.target_language,
translate_result["translatedText"],
)
s2s.text_to_speech(
args.project_id,
args.location,
args.target_voice,
args.target_voice_gender,
args.target_language_code,
translate_result["translatedText"],
args.tts_timeout,
gcs,
args.output_audio_file_name,
logger,
prefix,
)
if args.output_interim_files:
uri = s2s.upload_variable_to_gcs(
args.project_id,
gcs,
prefix + "transcript.txt",
transcript,
"text/plain; charset=utf-8",
)
logger.info("Transcript written to: %s", uri)
uri = s2s.upload_variable_to_gcs(
args.project_id,
gcs,
prefix + "translation.txt",
translate_result["translatedText"],
"text/plain; charset=utf-8",
)
logger.info("Translation written to: %s", uri)