human/asr/asr_base.py

50 lines
1.2 KiB
Python
Raw Permalink Normal View History

2024-10-09 12:19:00 +00:00
#encoding = utf8
import threading
2024-11-06 03:11:53 +00:00
from eventbus import EventBus
2024-10-09 12:19:00 +00:00
from .asr_observer import AsrObserver
class AsrBase:
def __init__(self):
2024-10-10 03:47:52 +00:00
self._hot_words_file = ''
2024-10-09 12:19:00 +00:00
self._sample_rate = 32000
self._samples_per_read = 100
self._observers = []
2024-11-06 03:11:53 +00:00
EventBus().register('stop', self._on_stop)
2024-10-09 12:19:00 +00:00
self._stop_event = threading.Event()
2024-11-04 13:44:51 +00:00
self._stop_event.set()
2024-11-08 23:39:03 +00:00
self._thread = threading.Thread(target=self._recognize_loop, name="AsrBaseThread")
2024-10-09 12:19:00 +00:00
self._thread.start()
2024-11-06 03:11:53 +00:00
def __del__(self):
EventBus().unregister('stop', self._on_stop)
def _on_stop(self, *args, **kwargs):
self.stop()
2024-10-09 12:19:00 +00:00
def _recognize_loop(self):
pass
def _notify_process(self, message: str):
2024-12-08 05:04:14 +00:00
EventBus().post('clear_cache')
2024-10-09 12:19:00 +00:00
for observer in self._observers:
observer.process(message)
def _notify_complete(self, message: str):
for observer in self._observers:
observer.completed(message)
def stop(self):
2024-11-04 13:44:51 +00:00
self._stop_event.clear()
2024-10-09 12:19:00 +00:00
self._thread.join()
def attach(self, observer: AsrObserver):
self._observers.append(observer)
def detach(self, observer: AsrObserver):
self._observers.remove(observer)