def parse_config_args()

in projects/speech2speech_translation/speech2speech.py [0:0]


def parse_config_args(config_file):
    """Parses config.ini and command line args.

    Parses first the .ini -style config file, and then command line args.
    CLI args overwrite default values from the config file.

    Args:
      config_file: Path to config file.

    Returns:
      Configparser config.
    """
    config = configparser.ConfigParser()
    config["parameters"] = {}

    try:
        config.read_file(open(config_file, encoding="utf-8"))
    except FileNotFoundError as e:
        print(f"Config file {config_file} cannot be read: {e}")
        return None

    parser = argparse.ArgumentParser()

    parser.add_argument(
        "--project_id",
        default=config["parameters"]["project_id"],
        type=str,
        help="The Google Cloud project ID.",
    )
    parser.add_argument(
        "--location",
        default=config["parameters"]["location"],
        type=str,
        help="The Google Cloud location.",
    )
    parser.add_argument(
        "--gcs_path",
        default=config["parameters"]["gcs_path"],
        type=str,
        help=(
            "Google Cloud Storage path. " "Example: gs://bucket_name/dir1/dir2/"
        ),
    )
    parser.add_argument(
        "--stt_model",
        default=config["parameters"]["stt_model"],
        type=str,
        help=("Speech to Text model. " "Choices: long|short|telephony"),
    )
    parser.add_argument(
        "--stt_timeout",
        default=config["parameters"]["stt_timeout"],
        type=int,
        help="Speech to Text operation timeout in seconds.",
    )
    parser.add_argument(
        "--stt_alternative",
        default=config["parameters"]["stt_alternative"],
        type=int,
        help="Speech to Text results alternative index.",
    )
    parser.add_argument(
        "--input_audio_file_name",
        default=config["parameters"]["input_audio_file_name"],
        type=str,
        help="Input audio file name.",
    )
    parser.add_argument(
        "--input_audio_file_path",
        default=config["parameters"]["input_audio_file_path"],
        type=str,
        help="Input audio file path.",
    )
    parser.add_argument(
        "--output_audio_file_name",
        default=config["parameters"]["output_audio_file_name"],
        type=str,
        help="Output audio file name.",
    )
    parser.add_argument(
        "--source_language_code",
        default=config["parameters"]["source_language_code"],
        type=str,
        help="Source language code. Example: fi-FI.",
    )
    parser.add_argument(
        "--target_language",
        default=config["parameters"]["target_language"],
        type=str,
        help="Target language. Example: en",
    )
    parser.add_argument(
        "--target_language_code",
        default=config["parameters"]["target_language_code"],
        type=str,
        help="Target language code. Example: en-US",
    )
    parser.add_argument(
        "--target_voice",
        default=config["parameters"]["target_voice"],
        type=str,
        help="Target voice. Example: en-US-Wavenet-A",
    )
    parser.add_argument(
        "--target_voice_gender",
        default=config["parameters"]["target_voice_gender"],
        type=str,
        choices=["male", "female"],
        help="Target voice gender. Choices: female|male",
    )
    parser.add_argument(
        "--tts_timeout",
        default=config["parameters"]["tts_timeout"],
        type=int,
        help="Text to Speech operation timeout in seconds.",
    )
    parser.add_argument(
        "--log",
        default=config["parameters"]["log"],
        type=str,
        help="Logging level. Example --log debug",
    )
    parser.add_argument(
        "--list_translate_languages",
        action="store_true",
        help="List available translation languages.",
    )
    parser.add_argument(
        "--list_voices", action="store_true", help="List available TTS voices."
    )
    parser.add_argument(
        "--filename_prefix",
        default=config["parameters"]["filename_prefix"],
        type=str,
        choices=["none", "timestamp"],
        help=("Prefix for output file names. " "Choices: none|timestamp"),
    )
    parser.add_argument(
        "--output_interim_files",
        action="store_true",
        help=(
            "Output interim such as transcript "
            "and translation, and upload them to GCS."
        ),
    )

    args = parser.parse_args()

    return args