diff --git a/gentle/language_model_transcribe.py b/gentle/language_model_transcribe.py index 1a36e198..e4a18379 100644 --- a/gentle/language_model_transcribe.py +++ b/gentle/language_model_transcribe.py @@ -60,6 +60,8 @@ def align_progress(audio_f, transcript, proto_langdir, nnet_dir, want_progress=F os.unlink(gen_hclg_filename) def show_progress(tran, ms=None): + if tran.get("error"): + return tran if tran.get("preview") is not None: # Yield some partial information return {"preview": tran["preview"], @@ -99,7 +101,9 @@ def _normal_transcribe(audio_f, proto_langdir, nnet_dir, want_progress=False): yield { "transcript": "", "words": [], + "error": "No transcript provided." } + return try: k = standard_kaldi.Kaldi(nnet_dir, hclg_path, proto_langdir) diff --git a/serve.py b/serve.py index f3ec4fef..32e607f7 100644 --- a/serve.py +++ b/serve.py @@ -113,7 +113,18 @@ def save(): want_progress=True) result = None for result in progress: - if result.get("preview") is not None: + if result.get("error") is not None: + status["status"] = "ERROR" + status["error"] = result["error"] + + # Save the status so that errors are recovered on restart of the server + # XXX: This won't work, because the endpoint will override this file + # XXX(2): duplicated code. + with open(os.path.join(outdir, 'status.json'), 'w') as jsfile: + json.dump(status, jsfile, indent=2) + return + + elif result.get("preview") is not None: status["message"] = result["preview"] status["t"] = result["t"] else: