From 06480711410f2e4b7141520532610457062fee7c Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Mon, 25 Sep 2023 12:27:18 +0200 Subject: [PATCH] ports/stm32: Fix microspeech demo. - Need to poll events to schedule the audio callback after switching from pendsv. - Fixes #1904 --- .../10-Arduino-Boards/Nicla-Vision/02-Audio/micro_speech.py | 2 +- .../10-Arduino-Boards/Portenta-H7/01-Audio/micro_speech.py | 2 +- src/omv/ports/stm32/modules/py_micro_speech.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/examples/10-Arduino-Boards/Nicla-Vision/02-Audio/micro_speech.py b/scripts/examples/10-Arduino-Boards/Nicla-Vision/02-Audio/micro_speech.py index 0cead2c1d..98931c103 100644 --- a/scripts/examples/10-Arduino-Boards/Nicla-Vision/02-Audio/micro_speech.py +++ b/scripts/examples/10-Arduino-Boards/Nicla-Vision/02-Audio/micro_speech.py @@ -23,7 +23,7 @@ audio.start_streaming(speech.audio_callback) while True: # Run micro-speech without a timeout and filter detections by label index. - idx = speech.listen(model, timeout=0, threshold=0.78, filter=[2, 3]) + idx = speech.listen(model, timeout=0, threshold=0.70, filter=[2, 3]) led = led_green if idx == 2 else led_red print(labels[idx]) for i in range(0, 4): diff --git a/scripts/examples/10-Arduino-Boards/Portenta-H7/01-Audio/micro_speech.py b/scripts/examples/10-Arduino-Boards/Portenta-H7/01-Audio/micro_speech.py index 0cead2c1d..98931c103 100644 --- a/scripts/examples/10-Arduino-Boards/Portenta-H7/01-Audio/micro_speech.py +++ b/scripts/examples/10-Arduino-Boards/Portenta-H7/01-Audio/micro_speech.py @@ -23,7 +23,7 @@ audio.start_streaming(speech.audio_callback) while True: # Run micro-speech without a timeout and filter detections by label index. - idx = speech.listen(model, timeout=0, threshold=0.78, filter=[2, 3]) + idx = speech.listen(model, timeout=0, threshold=0.70, filter=[2, 3]) led = led_green if idx == 2 else led_red print(labels[idx]) for i in range(0, 4): diff --git a/src/omv/ports/stm32/modules/py_micro_speech.c b/src/omv/ports/stm32/modules/py_micro_speech.c index b080b8ee4..9c9294a70 100644 --- a/src/omv/ports/stm32/modules/py_micro_speech.c +++ b/src/omv/ports/stm32/modules/py_micro_speech.c @@ -170,7 +170,7 @@ STATIC mp_obj_t py_micro_speech_listen(uint n_args, const mp_obj_t *args, mp_map uint32_t start = HAL_GetTick(); while (timeout == 0 || (HAL_GetTick() - start) < timeout) { - __WFI(); + MICROPY_EVENT_POLL_HOOK if (microspeech->new_slices == false) { continue;