mirror of
https://github.com/laurent22/joplin.git
synced 2024-11-24 08:12:24 +02:00
210 lines
6.6 KiB
Diff
210 lines
6.6 KiB
Diff
diff --git a/android/build.gradle b/android/build.gradle
|
|
index 6afcbbf0cc8ca2d69dd78077d61e59a90b2136bb..9f8d72b4ec5b2b3d290975d6a255917c95300854 100644
|
|
--- a/android/build.gradle
|
|
+++ b/android/build.gradle
|
|
@@ -67,19 +67,19 @@ repositories {
|
|
}
|
|
|
|
// Generate UUIDs for each models contained in android/src/main/assets/
|
|
-tasks.register('genUUID') {
|
|
- doLast {
|
|
- fileTree(dir: "$rootDir/app/src/main/assets", exclude: ['*/*']).visit { fileDetails ->
|
|
- if (fileDetails.directory) {
|
|
- def odir = file("$rootDir/app/src/main/assets/$fileDetails.relativePath")
|
|
- def ofile = file("$odir/uuid")
|
|
- mkdir odir
|
|
- ofile.text = UUID.randomUUID().toString()
|
|
- }
|
|
- }
|
|
- }
|
|
-}
|
|
-preBuild.dependsOn genUUID
|
|
+// tasks.register('genUUID') {
|
|
+// doLast {
|
|
+// fileTree(dir: "$rootDir/app/src/main/assets", exclude: ['*/*']).visit { fileDetails ->
|
|
+// if (fileDetails.directory) {
|
|
+// def odir = file("$rootDir/app/src/main/assets/$fileDetails.relativePath")
|
|
+// def ofile = file("$odir/uuid")
|
|
+// mkdir odir
|
|
+// ofile.text = UUID.randomUUID().toString()
|
|
+// }
|
|
+// }
|
|
+// }
|
|
+// }
|
|
+// preBuild.dependsOn genUUID
|
|
|
|
def kotlin_version = getExtOrDefault('kotlinVersion')
|
|
|
|
diff --git a/android/src/main/java/com/reactnativevosk/VoskModule.kt b/android/src/main/java/com/reactnativevosk/VoskModule.kt
|
|
index 0e2b6595b1b2cf1ee01c6c64239c4b0ea37fce19..5a8539b9cce8951967640dba755e29a4e3ff404a 100644
|
|
--- a/android/src/main/java/com/reactnativevosk/VoskModule.kt
|
|
+++ b/android/src/main/java/com/reactnativevosk/VoskModule.kt
|
|
@@ -19,13 +19,25 @@ class VoskModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMo
|
|
return "Vosk"
|
|
}
|
|
|
|
+ @ReactMethod
|
|
+ fun addListener(type: String?) {
|
|
+ // Keep: Required for RN built in Event Emitter Calls.
|
|
+ }
|
|
+
|
|
+ @ReactMethod
|
|
+ fun removeListeners(type: Int?) {
|
|
+ // Keep: Required for RN built in Event Emitter Calls.
|
|
+ }
|
|
+
|
|
override fun onResult(hypothesis: String) {
|
|
// Get text data from string object
|
|
val text = getHypothesisText(hypothesis)
|
|
|
|
// Stop recording if data found
|
|
if (text != null && text.isNotEmpty()) {
|
|
- cleanRecognizer();
|
|
+ // Don't auto-stop the recogniser - we want to do that when the user
|
|
+ // presses on "stop" only.
|
|
+ // cleanRecognizer();
|
|
sendEvent("onResult", text)
|
|
}
|
|
}
|
|
@@ -93,12 +105,11 @@ class VoskModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMo
|
|
@ReactMethod
|
|
fun loadModel(path: String, promise: Promise) {
|
|
cleanModel();
|
|
- StorageService.unpack(context, path, "models",
|
|
- { model: Model? ->
|
|
- this.model = model
|
|
- promise.resolve("Model successfully loaded")
|
|
- }
|
|
- ) { e: IOException ->
|
|
+
|
|
+ try {
|
|
+ this.model = Model(path);
|
|
+ promise.resolve("Model successfully loaded")
|
|
+ } catch (e: IOException) {
|
|
this.model = null
|
|
promise.reject(e)
|
|
}
|
|
@@ -153,6 +164,25 @@ class VoskModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMo
|
|
cleanRecognizer();
|
|
}
|
|
|
|
+ @ReactMethod
|
|
+ fun stopOnly() {
|
|
+ if (speechService != null) {
|
|
+ speechService!!.stop()
|
|
+ }
|
|
+ }
|
|
+
|
|
+ @ReactMethod
|
|
+ fun cleanup() {
|
|
+ if (speechService != null) {
|
|
+ speechService!!.shutdown();
|
|
+ speechService = null
|
|
+ }
|
|
+ if (recognizer != null) {
|
|
+ recognizer!!.close();
|
|
+ recognizer = null;
|
|
+ }
|
|
+ }
|
|
+
|
|
@ReactMethod
|
|
fun unload() {
|
|
cleanRecognizer();
|
|
diff --git a/lib/typescript/index.d.ts b/lib/typescript/index.d.ts
|
|
index 441e41cc402cca3a60b34978ef4fea976076259c..a173acebb4b314402550442ad471e0f7c706e3c4 100644
|
|
--- a/lib/typescript/index.d.ts
|
|
+++ b/lib/typescript/index.d.ts
|
|
@@ -10,6 +10,8 @@ export default class Vosk {
|
|
currentRegisteredEvents: EmitterSubscription[];
|
|
start: (grammar?: string[] | null) => Promise<String>;
|
|
stop: () => void;
|
|
+ stopOnly: () => void;
|
|
+ cleanup: () => void;
|
|
unload: () => void;
|
|
onResult: (onResult: (e: VoskEvent) => void) => EventSubscription;
|
|
onFinalResult: (onFinalResult: (e: VoskEvent) => void) => EventSubscription;
|
|
diff --git a/package.json b/package.json
|
|
index 707eddb8d68007f93071ac659c5b087c935c5f01..90ebe20f224eeec472c377df1fef9b15f2ff8200 100644
|
|
--- a/package.json
|
|
+++ b/package.json
|
|
@@ -11,12 +11,9 @@
|
|
"src",
|
|
"lib",
|
|
"android",
|
|
- "ios",
|
|
"cpp",
|
|
- "react-native-vosk.podspec",
|
|
"!lib/typescript/example",
|
|
"!android/build",
|
|
- "!ios/build",
|
|
"!**/__tests__",
|
|
"!**/__fixtures__",
|
|
"!**/__mocks__"
|
|
diff --git a/react-native-vosk.podspec b/react-native-vosk.podspec
|
|
deleted file mode 100644
|
|
index e3d41b90c5eef890c7a5108aaf16ac07d34a698b..0000000000000000000000000000000000000000
|
|
--- a/react-native-vosk.podspec
|
|
+++ /dev/null
|
|
@@ -1,41 +0,0 @@
|
|
-require "json"
|
|
-
|
|
-package = JSON.parse(File.read(File.join(__dir__, "package.json")))
|
|
-folly_version = '2021.06.28.00-v2'
|
|
-folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
|
|
-
|
|
-Pod::Spec.new do |s|
|
|
- s.name = "react-native-vosk"
|
|
- s.version = package["version"]
|
|
- s.summary = package["description"]
|
|
- s.homepage = package["homepage"]
|
|
- s.license = package["license"]
|
|
- s.authors = package["author"]
|
|
-
|
|
- s.platforms = { :ios => "10.0" }
|
|
- s.source = { :git => "https://github.com/riderodd/react-native-vosk.git", :tag => "#{s.version}" }
|
|
-
|
|
- s.source_files = "ios/**/*.{h,m,mm,swift}"
|
|
- s.resource_bundles = { 'Vosk' => ['ios/Vosk/*'] }
|
|
-
|
|
- s.dependency "React-Core"
|
|
- s.frameworks = "Accelerate"
|
|
- s.library = "c++"
|
|
- s.vendored_frameworks = "ios/libvosk.xcframework"
|
|
- s.requires_arc = true
|
|
-
|
|
- # Don't install the dependencies when we run `pod install` in the old architecture.
|
|
- if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
|
|
- s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
|
|
- s.pod_target_xcconfig = {
|
|
- "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
|
|
- "CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
|
|
- }
|
|
-
|
|
- s.dependency "React-Codegen"
|
|
- s.dependency "RCT-Folly", folly_version
|
|
- s.dependency "RCTRequired"
|
|
- s.dependency "RCTTypeSafety"
|
|
- s.dependency "ReactCommon/turbomodule/core"
|
|
- end
|
|
-end
|
|
diff --git a/src/index.tsx b/src/index.tsx
|
|
index d9f90c921d89b1b4d85e145443ed3376546a368a..29e4068dbd7500828a73145bd25497a52c9bf638 100644
|
|
--- a/src/index.tsx
|
|
+++ b/src/index.tsx
|
|
@@ -69,6 +69,15 @@ export default class Vosk {
|
|
VoskModule.stop();
|
|
};
|
|
|
|
+ stopOnly = () => {
|
|
+ VoskModule.stopOnly();
|
|
+ };
|
|
+
|
|
+ cleanup = () => {
|
|
+ this.cleanListeners();
|
|
+ VoskModule.cleanup();
|
|
+ };
|
|
+
|
|
unload = () => {
|
|
this.cleanListeners();
|
|
VoskModule.unload();
|