diff options
Diffstat (limited to 'agl_service_voiceagent/service.py')
-rw-r--r-- | agl_service_voiceagent/service.py | 70 |
1 files changed, 45 insertions, 25 deletions
diff --git a/agl_service_voiceagent/service.py b/agl_service_voiceagent/service.py index 784d8d9..9682b56 100644 --- a/agl_service_voiceagent/service.py +++ b/agl_service_voiceagent/service.py @@ -25,15 +25,14 @@ generated_dir = os.path.join(current_dir, "generated") sys.path.append(generated_dir) import argparse -from agl_service_voiceagent.utils.config import set_config_path, load_config, update_config_value, get_config_value +from agl_service_voiceagent.utils.config import set_config_path, load_config, update_config_value, get_config_value, get_logger from agl_service_voiceagent.utils.common import add_trailing_slash from agl_service_voiceagent.server import run_server from agl_service_voiceagent.client import run_client - def print_version(): print("Automotive Grade Linux (AGL)") - print(f"Voice Agent Service v0.3.0") + print(f"Voice Agent Service v0.4.0") def main(): @@ -59,8 +58,11 @@ def main(): server_parser.add_argument('--audio-store-dir', required=False, help='Directory to store the generated audio files.') server_parser.add_argument('--log-store-dir', required=False, help='Directory to store the generated log files.') + client_parser.add_argument('--server-address', required=True, help='Address of the gRPC server running the Voice Agent Service.') + client_parser.add_argument('--server-port', required=True, help='Port of the gRPC server running the Voice Agent Service.') client_parser.add_argument('--mode', required=True, help='Mode to run the client in. Supported modes: "wake-word", "auto" and "manual".') - client_parser.add_argument('--nlu', required=True, help='NLU engine to use. Supported NLU egnines: "snips" and "rasa".') + client_parser.add_argument('--nlu', help='NLU engine to use. Supported NLU egnines: "snips" and "rasa".') + client_parser.add_argument('--recording-time', help='Number of seconds to continue recording the voice command. Required by the \'manual\' mode. Defaults to 10 seconds.') args = parser.parse_args() @@ -70,19 +72,24 @@ def main(): elif args.subcommand == 'run-server': if not args.default and not args.config: if not args.stt_model_path: - raise ValueError("The --stt-model-path is missing. Please provide a value. Use --help to see available options.") + print("Error: The --stt-model-path is missing. Please provide a value. Use --help to see available options.") + exit(1) if not args.snips_model_path: - raise ValueError("The --snips-model-path is missing. Please provide a value. Use --help to see available options.") + print("Error: The --snips-model-path is missing. Please provide a value. Use --help to see available options.") + exit(1) if not args.rasa_model_path: - raise ValueError("The --rasa-model-path is missing. Please provide a value. Use --help to see available options.") + print("Error: The --rasa-model-path is missing. Please provide a value. Use --help to see available options.") + exit(1) if not args.intents_vss_map_path: - raise ValueError("The --intents-vss-map-path is missing. Please provide a value. Use --help to see available options.") + print("Error: The --intents-vss-map-path is missing. Please provide a value. Use --help to see available options.") + exit(1) if not args.vss_signals_spec_path: - raise ValueError("The --vss-signals-spec is missing. Please provide a value. Use --help to see available options.") + print("Error: The --vss-signals-spec-path is missing. Please provide a value. Use --help to see available options.") + exit(1) # Contruct the default config file path config_path = os.path.join(current_dir, "config.ini") @@ -90,6 +97,9 @@ def main(): # Load the config values from the config file set_config_path(config_path) load_config() + + logger = get_logger() + logger.info("Starting Voice Agent Service in server mode using CLI provided params...") # Get the values provided by the user stt_path = args.stt_model_path @@ -135,6 +145,9 @@ def main(): print(f"New config file path provided: {cli_config_path}. Overriding the default config file path.") set_config_path(cli_config_path) load_config() + + logger = get_logger() + logger.info(f"Starting Voice Agent Service in server mode using provided config file at path '{cli_config_path}' ...") elif args.default: # Contruct the default config file path @@ -144,33 +157,40 @@ def main(): set_config_path(config_path) load_config() + logger = get_logger() + logger.info(f"Starting Voice Agent Service in server mode using the default config file...") + # create the base audio dir if not exists if not os.path.exists(get_config_value('BASE_AUDIO_DIR')): os.makedirs(get_config_value('BASE_AUDIO_DIR')) - - # create the base log dir if not exists - if not os.path.exists(get_config_value('BASE_LOG_DIR')): - os.makedirs(get_config_value('BASE_LOG_DIR')) run_server() elif args.subcommand == 'run-client': - # Contruct the default config file path - config_path = os.path.join(current_dir, "config.ini") - - # Load the config values from the config file - set_config_path(config_path) - load_config() - + server_address = args.server_address + server_port = args.server_port + nlu_engine = "" mode = args.mode + recording_time = 5 + if mode not in ['wake-word', 'auto', 'manual']: - raise ValueError("Invalid mode. Supported modes: 'wake-word', 'auto' and 'manual'. Use --help to see available options.") + print("Error: Invalid value for --mode. Supported modes: 'wake-word', 'auto' and 'manual'. Use --help to see available options.") + exit(1) - model = args.nlu - if model not in ['snips', 'rasa']: - raise ValueError("Invalid NLU engine. Supported NLU engines: 'snips' and 'rasa'. Use --help to see available options.") + if mode in ["auto", "manual"]: + if not args.nlu: + print("Error: The --nlu flag is missing. Please provide a value for intent engine. Supported NLU engines: 'snips' and 'rasa'. Use --help to see available options.") + exit(1) + + nlu_engine = args.nlu + if nlu_engine not in ['snips', 'rasa']: + print("Error: Invalid value for --nlu. Supported NLU engines: 'snips' and 'rasa'. Use --help to see available options.") + exit(1) + + if mode == "manual" and args.recording_time: + recording_time = int(args.recording_time) - run_client(mode, model) + run_client(server_address, server_port, mode, nlu_engine, recording_time) else: print_version() |