from pathlib import Path
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
def read_text(path: str) -> str:
|
return (ROOT / path).read_text(encoding="utf-8")
|
|
|
def require(condition: bool, message: str) -> None:
|
if not condition:
|
raise SystemExit(message)
|
|
|
def main() -> None:
|
audio_service = read_text("main/audio/audio_service.cc")
|
afe_pos = audio_service.find("wake_word_ = std::make_unique<AfeWakeWord>();")
|
custom_pos = audio_service.find("wake_word_ = std::make_unique<CustomWakeWord>();")
|
require(afe_pos != -1, "AfeWakeWord selection is missing")
|
require(custom_pos != -1, "CustomWakeWord fallback is missing")
|
require(afe_pos < custom_pos, "AfeWakeWord must be preferred before CustomWakeWord when WakeNet exists")
|
|
sdkconfig = read_text("sdkconfig")
|
defaults = read_text("sdkconfig.defaults.esp32s3")
|
assets_script = read_text("scripts/build_default_assets.py")
|
multinet_enabled = "CONFIG_SR_MN_CN_MULTINET" in sdkconfig and "CONFIG_SR_MN_CN_NONE=y" not in sdkconfig
|
defaults_enabled = "CONFIG_SR_MN_CN_MULTINET" in defaults
|
require(multinet_enabled, "sdkconfig must enable a Chinese MultiNet model")
|
require(defaults_enabled, "sdkconfig.defaults.esp32s3 must enable a Chinese MultiNet model")
|
require(
|
"wake_word_config['use_custom_wake_word'] or wake_word_config['use_afe_wake_word']" in assets_script,
|
"assets build must package MultiNet when AFE wake word is enabled",
|
)
|
|
|
if __name__ == "__main__":
|
main()
|