import os import sys import argparse import time import torch project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) sys.path.insert(0, project_root) from arthaml.inference import Translator def main(): parser = argparse.ArgumentParser() parser.add_argument('text', nargs='?', type=str, help='English text to translate') parser.add_argument('--interactive', action='store_true', help='Run in interactive mode') args = parser.parse_args() device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') model_path = os.path.join(project_root, 'models/best_model.pth') vocab_en_path = os.path.join(project_root, 'data/processed/vocab_en.json') vocab_kn_path = os.path.join(project_root, 'data/processed/vocab_kn.json') if not os.path.exists(model_path): print(f"Error: Could not find model at {model_path}") return print("Loading Translator...") start_load = time.time() translator = Translator(model_path, vocab_en_path, vocab_kn_path, device) print(f"Loaded in {(time.time() - start_load)*1000:.0f}ms") if args.interactive: print("Interactive mode started. Enter 'q' to quit.") while True: try: text = input("Enter English text (q to quit): ") if text.lower().strip() == 'q': break start = time.time() translation = translator.translate(text) elapsed = (time.time() - start) * 1000 print(f"Kannada translation: {translation}") print(f"Time taken: {elapsed:.2f} ms") except (KeyboardInterrupt, EOFError): break elif args.text: start = time.time() translation = translator.translate(args.text) elapsed = (time.time() - start) * 1000 print(f"Kannada translation: {translation}") print(f"Time taken: {elapsed:.2f} ms") else: parser.print_help() if __name__ == "__main__": main()