Skip to content

Commit e180453

Browse files
author
Eric Wheeler
committed
Reload --vosk-grammar-file JSON on SIGHUP
This commit adds support for reloading the grammar configuration on SIGHUP. This is accomplished by moving the recognizer initialization into its own function so that the signal handler can call it on reload. A reload of the recognizer is fast because it does not reload the model and only applies the grammar. Signed-off-by: Eric Wheeler <vosk-git@z.ewheeler.org>
1 parent ddac32a commit e180453

1 file changed

Lines changed: 19 additions & 10 deletions

File tree

nerd-dictation

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -939,21 +939,29 @@ def text_from_vosk_pipe(
939939

940940
vosk.SetLogLevel(-1)
941941

942-
if not vosk_grammar_file:
943-
grammar_json = ""
944-
else:
945-
with open(vosk_grammar_file, encoding="utf-8") as fh:
946-
grammar_json = fh.read()
947-
948942
# Allow for loading the model to take some time:
949943
if verbose >= 1:
950944
sys.stderr.write("Loading model...\n")
951945
model = vosk.Model(vosk_model_dir)
952946

953-
if grammar_json == "":
954-
rec = vosk.KaldiRecognizer(model, sample_rate)
955-
else:
956-
rec = vosk.KaldiRecognizer(model, sample_rate, grammar_json)
947+
rec = None
948+
949+
def vosk_load_recognizer():
950+
nonlocal vosk_grammar_file
951+
nonlocal rec
952+
953+
if not vosk_grammar_file:
954+
grammar_json = ""
955+
else:
956+
with open(vosk_grammar_file, encoding="utf-8") as fh:
957+
grammar_json = fh.read()
958+
959+
if grammar_json == "":
960+
rec = vosk.KaldiRecognizer(model, sample_rate)
961+
else:
962+
rec = vosk.KaldiRecognizer(model, sample_rate, grammar_json)
963+
964+
vosk_load_recognizer()
957965

958966
if verbose >= 1:
959967
sys.stderr.write("Model loaded.\n")
@@ -1119,6 +1127,7 @@ def text_from_vosk_pipe(
11191127
if verbose >= 1:
11201128
sys.stderr.write("Reload.\n")
11211129
process_fn("")
1130+
vosk_load_recognizer()
11221131
return
11231132

11241133
import signal

0 commit comments

Comments
 (0)