package asr import ( "encoding/json" "fmt" ) // HotwordEntry represents a single hotword for context JSON. type HotwordEntry struct { Word string `json:"word"` } // HotwordsContext represents the context JSON structure for hotwords. type HotwordsContext struct { Hotwords []HotwordEntry `json:"hotwords"` } // BuildHotwordsContext converts a list of hotword strings to context JSON string. // Returns empty string if hotwords list is empty. func BuildHotwordsContext(hotwords []string) (string, error) { if len(hotwords) == 0 { return "", nil } entries := make([]HotwordEntry, 0, len(hotwords)) for _, word := range hotwords { if word != "" { entries = append(entries, HotwordEntry{Word: word}) } } if len(entries) == 0 { return "", nil } ctx := HotwordsContext{Hotwords: entries} data, err := json.Marshal(ctx) if err != nil { return "", fmt.Errorf("marshal hotwords context: %w", err) } return string(data), nil }