"""Run: python proficiency.py audio.wav [--transcript 'words actually spoken'].""" import argparse import json import os from oruk import Oruk def main(): parser = argparse.ArgumentParser(description="Continuous word pronunciation and legacy CEFR") parser.add_argument("audio") parser.add_argument("--transcript", help="Omit for automatic transcription") args = parser.parse_args() with Oruk(api_key=os.environ["ORUK_API_KEY"]) as client: result = client.proficiency(args.audio, model="oruk-proficiency-1", transcript=args.transcript) p = result["proficiency"] # None is unavailable, not a zero score. Partial results may contain scored words. output = { "model_version": p["model_version"], "pronunciation_check": p["continuous_check"], "recording_score": p["score"], "components": p["components"], "words": p["words"], "alignment_metadata": p["continuous_metadata"], "legacy_check": result["check"], "usage": result["usage"], } if result["check"]["status"] != "insufficient_audio": output["cefr"] = p["cefr"] output["cefr_score"] = p["cefr_score"] # original 0–5 scale print(json.dumps(output, indent=2)) if __name__ == "__main__": main()