]> git.basschouten.com Git - openhab-addons.git/commitdiff
[vosk] Upgrade sdk and handle UnsatisfiedLinkError exceptions (#13391)
authorGiviMAD <GiviMAD@users.noreply.github.com>
Sat, 17 Sep 2022 07:27:09 +0000 (09:27 +0200)
committerGitHub <noreply@github.com>
Sat, 17 Sep 2022 07:27:09 +0000 (09:27 +0200)
* [vosk] update sdk
* [vosk] handle unsatisfied link error exceptions

Signed-off-by: Miguel Álvarez <miguelwork92@gmail.com>
bundles/org.openhab.voice.voskstt/pom.xml
bundles/org.openhab.voice.voskstt/src/main/java/org/openhab/voice/voskstt/internal/VoskSTTService.java

index 8a32bcc9c1e2092aaa11ba29d7b43bf405e98f02..ca0554b900511e8312321ef8837197cd1efde38f 100644 (file)
@@ -17,7 +17,7 @@
     <dependency>
       <groupId>com.alphacephei</groupId>
       <artifactId>vosk</artifactId>
-      <version>0.3.33</version>
+      <version>0.3.38</version>
       <scope>compile</scope>
     </dependency>
     <!--Deps -->
index 532ffbb22c3ced05fd6dd14232c258609f4b9656..c1e0bce66ed8a25f649573a01605ff16118a2a8c 100644 (file)
@@ -113,6 +113,8 @@ public class VoskSTTService implements STTService {
                 loadModel();
             } catch (IOException e) {
                 logger.warn("IOException loading model: {}", e.getMessage());
+            } catch (UnsatisfiedLinkError e) {
+                logger.warn("Missing native dependency: {}", e.getMessage());
             }
         } else {
             try {
@@ -164,7 +166,7 @@ public class VoskSTTService implements STTService {
         };
     }
 
-    private Model getModel() throws IOException {
+    private Model getModel() throws IOException, UnsatisfiedLinkError {
         var model = this.model;
         if (model != null) {
             return model;
@@ -172,7 +174,7 @@ public class VoskSTTService implements STTService {
         return loadModel();
     }
 
-    private Model loadModel() throws IOException {
+    private Model loadModel() throws IOException, UnsatisfiedLinkError {
         unloadModel();
         var modelFile = new File(MODEL_PATH);
         if (!modelFile.exists() || !modelFile.isDirectory()) {
@@ -263,6 +265,13 @@ public class VoskSTTService implements STTService {
                 } else {
                     sttListener.sttEventReceived(new SpeechRecognitionErrorEvent(config.errorMessage));
                 }
+            } catch (UnsatisfiedLinkError e) {
+                logger.warn("Missing native dependency: {}", e.getMessage());
+                if (config.errorMessage.isBlank()) {
+                    sttListener.sttEventReceived(new SpeechRecognitionErrorEvent("Error"));
+                } else {
+                    sttListener.sttEventReceived(new SpeechRecognitionErrorEvent(config.errorMessage));
+                }
             } finally {
                 if (recognizer != null) {
                     recognizer.close();