message_processor.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. """
  2. 百度实时语音识别消息处理器
  3. 说明:不改动原有讯飞(AIUI)流程,单独提供百度处理器。
  4. 该处理器负责启动/停止百度实时语音识别流程,核心音频采集、VAD门控、通道过滤、
  5. 以及自回声抑制(在助手播报期间暂停上行音频)等逻辑由 `handlers.baidu.speech_handler.BaiduSpeechHandler` 内部实现。
  6. """
  7. from utils.logger import logger
  8. import time
  9. from typing import Optional
  10. from handlers.baidu.speech_handler import BaiduSpeechHandler
  11. class BaiduMessageProcessor:
  12. """百度实时语音识别消息处理器"""
  13. def __init__(self) -> None:
  14. self._running: bool = False
  15. self._handler: Optional[BaiduSpeechHandler] = None
  16. def start(self) -> bool:
  17. """启动百度实时语音识别主流程"""
  18. try:
  19. logger.info("初始化百度实时语音识别处理器…")
  20. self._handler = BaiduSpeechHandler()
  21. logger.info("启动百度实时语音识别…")
  22. ok = self._handler.start_recognition()
  23. if not ok:
  24. logger.error("百度实时语音识别启动失败")
  25. return False
  26. self._running = True
  27. logger.info("百度实时语音识别处理器已启动")
  28. return True
  29. except Exception as e:
  30. logger.error(f"百度处理器启动异常: {e}")
  31. return False
  32. def run_forever(self) -> None:
  33. """保持运行(供主循环调用)"""
  34. while self._running:
  35. time.sleep(1)
  36. def stop(self) -> None:
  37. """停止百度实时语音识别主流程"""
  38. self._running = False
  39. if self._handler:
  40. try:
  41. self._handler.stop_recognition()
  42. except Exception as e:
  43. logger.error(f"停止百度处理器异常: {e}")
  44. logger.info("百度实时语音识别处理器已停止")