import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Modified;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
*/
@NonNullByDefault
@Component(configurationPid = SERVICE_PID, property = Constants.SERVICE_PID + "=" + SERVICE_PID)
-@ConfigurableService(category = SERVICE_CATEGORY, label = SERVICE_NAME, description_uri = SERVICE_CATEGORY + ":"
- + SERVICE_ID)
+@ConfigurableService(category = SERVICE_CATEGORY, label = SERVICE_NAME
+ + " Keyword Spotter", description_uri = SERVICE_CATEGORY + ":" + SERVICE_ID)
public class PorcupineKSService implements KSService {
private static final String PORCUPINE_FOLDER = Path.of(OpenHAB.getUserDataFolder(), "porcupine").toString();
private static final String EXTRACTION_FOLDER = Path.of(OpenHAB.getUserDataFolder(), "porcupine", "extracted")
@Activate
protected void activate(ComponentContext componentContext, Map<String, Object> config) {
- this.config = new Configuration(config).as(PorcupineKSConfiguration.class);
this.bundleContext = componentContext.getBundleContext();
+ modified(config);
+ }
+
+ @Modified
+ protected void modified(Map<String, Object> config) {
+ this.config = new Configuration(config).as(PorcupineKSConfiguration.class);
if (this.config.apiKey.isBlank()) {
logger.warn("Missing pico voice api key to use Porcupine Keyword Spotter");
}
+ localKeywordPath);
}
String env = getPorcupineEnv();
- String keywordPath = "porcupine/resources/keyword_files/" + env + "/" + keyWord.replace(" ", "_") + "_"
- + env + ".ppn";
+ String keywordPath = Path
+ .of("porcupine", "resources", "keyword_files", env, keyWord.replace(" ", "_") + "_" + env + ".ppn")
+ .toString();
return prepareLib(bundleContext, keywordPath);
} else {
throw new IllegalArgumentException(