Fix keyword spotting. (#1689)

Reset the stream right after detecting a keyword
This commit is contained in:
Fangjun Kuang
2025-01-20 16:41:10 +08:00
committed by GitHub
parent b943341fb1
commit 8b989a851c
43 changed files with 813 additions and 293 deletions

View File

@@ -67,6 +67,7 @@ void PybindKeywordSpotter(py::module *m) {
py::arg("keywords"), py::call_guard<py::gil_scoped_release>())
.def("is_ready", &PyClass::IsReady,
py::call_guard<py::gil_scoped_release>())
.def("reset", &PyClass::Reset, py::call_guard<py::gil_scoped_release>())
.def("decode_stream", &PyClass::DecodeStream,
py::call_guard<py::gil_scoped_release>())
.def(

View File

@@ -104,8 +104,8 @@ class KeywordSpotter(object):
)
provider_config = ProviderConfig(
provider=provider,
device = device,
provider=provider,
device=device,
)
model_config = OnlineModelConfig(
@@ -131,6 +131,9 @@ class KeywordSpotter(object):
)
self.keyword_spotter = _KeywordSpotter(keywords_spotter_config)
def reset_stream(self, s: OnlineStream):
self.keyword_spotter.reset(s)
def create_stream(self, keywords: Optional[str] = None):
if keywords is None:
return self.keyword_spotter.create_stream()

View File

@@ -98,6 +98,9 @@ class TestKeywordSpotter(unittest.TestCase):
if r:
print(f"{r} is detected.")
results[i] += f"{r}/"
keyword_spotter.reset_stream(s)
if len(ready_list) == 0:
break
keyword_spotter.decode_streams(ready_list)
@@ -158,6 +161,9 @@ class TestKeywordSpotter(unittest.TestCase):
if r:
print(f"{r} is detected.")
results[i] += f"{r}/"
keyword_spotter.reset_stream(s)
if len(ready_list) == 0:
break
keyword_spotter.decode_streams(ready_list)