package com.tsystems.flutter_vosk_wakeword

import org.json.JSONArray

class WakewordDetector(private val wakeWords: ArrayList<String>) {

    /**
     * 检查部分识别文本中是否包含任何一个唤醒词
     */
    fun checkForWakeWord(partialText: String): Boolean {
        if (partialText.isBlank()) return false
        // 简单包含匹配，可以根据需求改为更复杂的匹配逻辑
        return wakeWords.any { wakeWord -> partialText.contains(wakeWord, ignoreCase = true) }
    }

    /**
     * 为Vosk生成语法字符串，这可以提高唤醒词的识别准确率
     * 例如，对于 ["你好小帅", "你好小美"]，生成 "[\"你好小帅\", \"你好小美\", \"[unk]\"]"
     */
    fun getVoskGrammar(): String {
        val jsonArray = JSONArray()
        wakeWords.forEach { jsonArray.put(it) }
        // 添加 [unk] 允许识别唤醒词之外的其他词语
        jsonArray.put("[unk]")
        return jsonArray.toString()
    }
}