Fix keyword spotting. (#1689)
Reset the stream right after detecting a keyword
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user