diff --git a/example/android/build/reports/problems/problems-report.html b/example/android/build/reports/problems/problems-report.html
deleted file mode 100644
index 8d897b7..0000000
--- a/example/android/build/reports/problems/problems-report.html
+++ /dev/null
@@ -1,663 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- Gradle Configuration Cache
-
-
-
-
-
-
- Loading...
-
-
-
-
-
-
-
diff --git a/example/android/settings.gradle.kts b/example/android/settings.gradle.kts
index 1eb7419..b5a7fc3 100644
--- a/example/android/settings.gradle.kts
+++ b/example/android/settings.gradle.kts
@@ -31,3 +31,7 @@ plugins {
}
include(":app")
+
+// 显式包含 flutter_vosk_wakeword 插件的 android 模块
+include(":flutter_vosk_wakeword")
+project(":flutter_vosk_wakeword").projectDir = File(settings.rootDir, "../../packages/flutter_vosk_wakeword/android")
\ No newline at end of file
diff --git a/example/pubspec.lock b/example/pubspec.lock
index 892b6ed..84e9646 100644
--- a/example/pubspec.lock
+++ b/example/pubspec.lock
@@ -209,6 +209,13 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.2"
+ flutter_vosk_wakeword:
+ dependency: transitive
+ description:
+ path: "../packages/flutter_vosk_wakeword"
+ relative: true
+ source: path
+ version: "0.0.1"
flutter_web_plugins:
dependency: transitive
description: flutter
@@ -635,5 +642,5 @@ packages:
source: hosted
version: "1.1.0"
sdks:
- dart: ">=3.6.0 <4.0.0"
+ dart: ">=3.6.2 <4.0.0"
flutter: ">=3.27.1"
diff --git a/example/pubspec.yaml b/example/pubspec.yaml
index e659557..a28acd0 100644
--- a/example/pubspec.yaml
+++ b/example/pubspec.yaml
@@ -42,52 +42,11 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter
-
- # The "flutter_lints" package below contains a set of recommended lints to
- # encourage good coding practices. The lint set provided by the package is
- # activated in the `analysis_options.yaml` file located at the root of your
- # package. See that file for information about deactivating specific lint
- # rules and activating additional ones.
flutter_lints: ^5.0.0
-# For information on the generic Dart part of this file, see the
-# following page: https://dart.dev/tools/pub/pubspec
+# overrides_dependencies:
+# flutter_vosk_wakeword:
+# path: ../packages/flutter_vosk_wakeword
-# The following section is specific to Flutter packages.
flutter:
-
- # The following line ensures that the Material Icons font is
- # included with your application, so that you can use the icons in
- # the material Icons class.
- uses-material-design: true
-
- # To add assets to your application, add an assets section, like this:
- # assets:
- # - images/a_dot_burr.jpeg
- # - images/a_dot_ham.jpeg
-
- # An image asset can refer to one or more resolution-specific "variants", see
- # https://flutter.dev/to/resolution-aware-images
-
- # For details regarding adding assets from package dependencies, see
- # https://flutter.dev/to/asset-from-package
-
- # To add custom fonts to your application, add a fonts section here,
- # in this "flutter" section. Each entry in this list should have a
- # "family" key with the font family name, and a "fonts" key with a
- # list giving the asset and other descriptors for the font. For
- # example:
- # fonts:
- # - family: Schyler
- # fonts:
- # - asset: fonts/Schyler-Regular.ttf
- # - asset: fonts/Schyler-Italic.ttf
- # style: italic
- # - family: Trajan Pro
- # fonts:
- # - asset: fonts/TrajanPro.ttf
- # - asset: fonts/TrajanPro_Bold.ttf
- # weight: 700
- #
- # For details regarding fonts from package dependencies,
- # see https://flutter.dev/to/font-from-package
+ uses-material-design: true
\ No newline at end of file
diff --git a/packages/flutter_vosk_wakeword/android/build.gradle b/packages/flutter_vosk_wakeword/android/build.gradle
index 7a071eb..7728240 100644
--- a/packages/flutter_vosk_wakeword/android/build.gradle
+++ b/packages/flutter_vosk_wakeword/android/build.gradle
@@ -41,6 +41,10 @@ android {
sourceSets {
main.java.srcDirs += "src/main/kotlin"
test.java.srcDirs += "src/test/kotlin"
+
+ main {
+ assets.srcDirs += ["models/src/main/assets"]
+ }
}
defaultConfig {
@@ -64,3 +68,8 @@ android {
}
}
}
+
+dependencies {
+ implementation 'com.alphacephei:vosk-android:0.3.70'
+// implementation project(":models")
+}
diff --git a/packages/flutter_vosk_wakeword/android/models/build.gradle b/packages/flutter_vosk_wakeword/android/models/build.gradle
new file mode 100644
index 0000000..87086b8
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/build.gradle
@@ -0,0 +1,32 @@
+apply plugin: "com.android.library"
+apply plugin: "kotlin-android"
+
+android {
+ // 为这个模块设置一个独立的命名空间
+ namespace "com.tsystems.models"
+ compileSdk = 35
+
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+ }
+
+ kotlinOptions {
+ jvmTarget = JavaVersion.VERSION_11
+ }
+
+ defaultConfig {
+ minSdk = 21
+ }
+
+ sourceSets {
+ // 这是最关键的一步:告诉Gradle这个模块的assets资源在哪里
+ // 我们直接指向模块的根目录,Gradle会自动寻找 src/main/assets
+ main.assets.srcDirs = ['src/main/assets']
+ }
+
+ // 由于这个模块只包含资源,我们可以禁用一些不需要的Java/Kotlin编译任务
+ libraryVariants.all { variant ->
+ variant.generateBuildConfigProvider.get().enabled = false
+ }
+}
\ No newline at end of file
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/README b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/README
new file mode 100644
index 0000000..0b5d9e5
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/README
@@ -0,0 +1,6 @@
+Chinese Vosk model for mobile
+
+CER results
+
+23.54% speechio_02
+38.29% speechio_06
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/am/final.mdl b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/am/final.mdl
new file mode 100644
index 0000000..f7cf1de
Binary files /dev/null and b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/am/final.mdl differ
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/conf/mfcc.conf b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/conf/mfcc.conf
new file mode 100644
index 0000000..12fdad4
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/conf/mfcc.conf
@@ -0,0 +1,8 @@
+--use-energy=false
+--sample-frequency=16000
+--num-mel-bins=40
+--num-ceps=40
+--low-freq=40
+--high-freq=-200
+--allow-upsample=true
+--allow-downsample=true
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/conf/model.conf b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/conf/model.conf
new file mode 100644
index 0000000..9ae12a7
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/conf/model.conf
@@ -0,0 +1,10 @@
+--min-active=200
+--max-active=5000
+--beam=12.0
+--lattice-beam=4.0
+--acoustic-scale=1.0
+--frame-subsampling-factor=3
+--endpoint.silence-phones=1:2:3:4:5:6:7:8:9:10
+--endpoint.rule2.min-trailing-silence=0.5
+--endpoint.rule3.min-trailing-silence=1.0
+--endpoint.rule4.min-trailing-silence=2.0
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/graph/Gr.fst b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/graph/Gr.fst
new file mode 100644
index 0000000..ee4580d
Binary files /dev/null and b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/graph/Gr.fst differ
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/graph/HCLr.fst b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/graph/HCLr.fst
new file mode 100644
index 0000000..2ad6e8f
Binary files /dev/null and b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/graph/HCLr.fst differ
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/graph/disambig_tid.int b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/graph/disambig_tid.int
new file mode 100644
index 0000000..c1a114f
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/graph/disambig_tid.int
@@ -0,0 +1,39 @@
+11845
+11846
+11847
+11848
+11849
+11850
+11851
+11852
+11853
+11854
+11855
+11856
+11857
+11858
+11859
+11860
+11861
+11862
+11863
+11864
+11865
+11866
+11867
+11868
+11869
+11870
+11871
+11872
+11873
+11874
+11875
+11876
+11877
+11878
+11879
+11880
+11881
+11882
+11883
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/graph/phones/word_boundary.int b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/graph/phones/word_boundary.int
new file mode 100644
index 0000000..9f3713e
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/graph/phones/word_boundary.int
@@ -0,0 +1,646 @@
+1 nonword
+2 begin
+3 end
+4 internal
+5 singleton
+6 nonword
+7 begin
+8 end
+9 internal
+10 singleton
+11 begin
+12 end
+13 internal
+14 singleton
+15 begin
+16 end
+17 internal
+18 singleton
+19 begin
+20 end
+21 internal
+22 singleton
+23 begin
+24 end
+25 internal
+26 singleton
+27 begin
+28 end
+29 internal
+30 singleton
+31 begin
+32 end
+33 internal
+34 singleton
+35 begin
+36 end
+37 internal
+38 singleton
+39 begin
+40 end
+41 internal
+42 singleton
+43 begin
+44 end
+45 internal
+46 singleton
+47 begin
+48 end
+49 internal
+50 singleton
+51 begin
+52 end
+53 internal
+54 singleton
+55 begin
+56 end
+57 internal
+58 singleton
+59 begin
+60 end
+61 internal
+62 singleton
+63 begin
+64 end
+65 internal
+66 singleton
+67 begin
+68 end
+69 internal
+70 singleton
+71 begin
+72 end
+73 internal
+74 singleton
+75 begin
+76 end
+77 internal
+78 singleton
+79 begin
+80 end
+81 internal
+82 singleton
+83 begin
+84 end
+85 internal
+86 singleton
+87 begin
+88 end
+89 internal
+90 singleton
+91 begin
+92 end
+93 internal
+94 singleton
+95 begin
+96 end
+97 internal
+98 singleton
+99 begin
+100 end
+101 internal
+102 singleton
+103 begin
+104 end
+105 internal
+106 singleton
+107 begin
+108 end
+109 internal
+110 singleton
+111 begin
+112 end
+113 internal
+114 singleton
+115 begin
+116 end
+117 internal
+118 singleton
+119 begin
+120 end
+121 internal
+122 singleton
+123 begin
+124 end
+125 internal
+126 singleton
+127 begin
+128 end
+129 internal
+130 singleton
+131 begin
+132 end
+133 internal
+134 singleton
+135 begin
+136 end
+137 internal
+138 singleton
+139 begin
+140 end
+141 internal
+142 singleton
+143 begin
+144 end
+145 internal
+146 singleton
+147 begin
+148 end
+149 internal
+150 singleton
+151 begin
+152 end
+153 internal
+154 singleton
+155 begin
+156 end
+157 internal
+158 singleton
+159 begin
+160 end
+161 internal
+162 singleton
+163 begin
+164 end
+165 internal
+166 singleton
+167 begin
+168 end
+169 internal
+170 singleton
+171 begin
+172 end
+173 internal
+174 singleton
+175 begin
+176 end
+177 internal
+178 singleton
+179 begin
+180 end
+181 internal
+182 singleton
+183 begin
+184 end
+185 internal
+186 singleton
+187 begin
+188 end
+189 internal
+190 singleton
+191 begin
+192 end
+193 internal
+194 singleton
+195 begin
+196 end
+197 internal
+198 singleton
+199 begin
+200 end
+201 internal
+202 singleton
+203 begin
+204 end
+205 internal
+206 singleton
+207 begin
+208 end
+209 internal
+210 singleton
+211 begin
+212 end
+213 internal
+214 singleton
+215 begin
+216 end
+217 internal
+218 singleton
+219 begin
+220 end
+221 internal
+222 singleton
+223 begin
+224 end
+225 internal
+226 singleton
+227 begin
+228 end
+229 internal
+230 singleton
+231 begin
+232 end
+233 internal
+234 singleton
+235 begin
+236 end
+237 internal
+238 singleton
+239 begin
+240 end
+241 internal
+242 singleton
+243 begin
+244 end
+245 internal
+246 singleton
+247 begin
+248 end
+249 internal
+250 singleton
+251 begin
+252 end
+253 internal
+254 singleton
+255 begin
+256 end
+257 internal
+258 singleton
+259 begin
+260 end
+261 internal
+262 singleton
+263 begin
+264 end
+265 internal
+266 singleton
+267 begin
+268 end
+269 internal
+270 singleton
+271 begin
+272 end
+273 internal
+274 singleton
+275 begin
+276 end
+277 internal
+278 singleton
+279 begin
+280 end
+281 internal
+282 singleton
+283 begin
+284 end
+285 internal
+286 singleton
+287 begin
+288 end
+289 internal
+290 singleton
+291 begin
+292 end
+293 internal
+294 singleton
+295 begin
+296 end
+297 internal
+298 singleton
+299 begin
+300 end
+301 internal
+302 singleton
+303 begin
+304 end
+305 internal
+306 singleton
+307 begin
+308 end
+309 internal
+310 singleton
+311 begin
+312 end
+313 internal
+314 singleton
+315 begin
+316 end
+317 internal
+318 singleton
+319 begin
+320 end
+321 internal
+322 singleton
+323 begin
+324 end
+325 internal
+326 singleton
+327 begin
+328 end
+329 internal
+330 singleton
+331 begin
+332 end
+333 internal
+334 singleton
+335 begin
+336 end
+337 internal
+338 singleton
+339 begin
+340 end
+341 internal
+342 singleton
+343 begin
+344 end
+345 internal
+346 singleton
+347 begin
+348 end
+349 internal
+350 singleton
+351 begin
+352 end
+353 internal
+354 singleton
+355 begin
+356 end
+357 internal
+358 singleton
+359 begin
+360 end
+361 internal
+362 singleton
+363 begin
+364 end
+365 internal
+366 singleton
+367 begin
+368 end
+369 internal
+370 singleton
+371 begin
+372 end
+373 internal
+374 singleton
+375 begin
+376 end
+377 internal
+378 singleton
+379 begin
+380 end
+381 internal
+382 singleton
+383 begin
+384 end
+385 internal
+386 singleton
+387 begin
+388 end
+389 internal
+390 singleton
+391 begin
+392 end
+393 internal
+394 singleton
+395 begin
+396 end
+397 internal
+398 singleton
+399 begin
+400 end
+401 internal
+402 singleton
+403 begin
+404 end
+405 internal
+406 singleton
+407 begin
+408 end
+409 internal
+410 singleton
+411 begin
+412 end
+413 internal
+414 singleton
+415 begin
+416 end
+417 internal
+418 singleton
+419 begin
+420 end
+421 internal
+422 singleton
+423 begin
+424 end
+425 internal
+426 singleton
+427 begin
+428 end
+429 internal
+430 singleton
+431 begin
+432 end
+433 internal
+434 singleton
+435 begin
+436 end
+437 internal
+438 singleton
+439 begin
+440 end
+441 internal
+442 singleton
+443 begin
+444 end
+445 internal
+446 singleton
+447 begin
+448 end
+449 internal
+450 singleton
+451 begin
+452 end
+453 internal
+454 singleton
+455 begin
+456 end
+457 internal
+458 singleton
+459 begin
+460 end
+461 internal
+462 singleton
+463 begin
+464 end
+465 internal
+466 singleton
+467 begin
+468 end
+469 internal
+470 singleton
+471 begin
+472 end
+473 internal
+474 singleton
+475 begin
+476 end
+477 internal
+478 singleton
+479 begin
+480 end
+481 internal
+482 singleton
+483 begin
+484 end
+485 internal
+486 singleton
+487 begin
+488 end
+489 internal
+490 singleton
+491 begin
+492 end
+493 internal
+494 singleton
+495 begin
+496 end
+497 internal
+498 singleton
+499 begin
+500 end
+501 internal
+502 singleton
+503 begin
+504 end
+505 internal
+506 singleton
+507 begin
+508 end
+509 internal
+510 singleton
+511 begin
+512 end
+513 internal
+514 singleton
+515 begin
+516 end
+517 internal
+518 singleton
+519 begin
+520 end
+521 internal
+522 singleton
+523 begin
+524 end
+525 internal
+526 singleton
+527 begin
+528 end
+529 internal
+530 singleton
+531 begin
+532 end
+533 internal
+534 singleton
+535 begin
+536 end
+537 internal
+538 singleton
+539 begin
+540 end
+541 internal
+542 singleton
+543 begin
+544 end
+545 internal
+546 singleton
+547 begin
+548 end
+549 internal
+550 singleton
+551 begin
+552 end
+553 internal
+554 singleton
+555 begin
+556 end
+557 internal
+558 singleton
+559 begin
+560 end
+561 internal
+562 singleton
+563 begin
+564 end
+565 internal
+566 singleton
+567 begin
+568 end
+569 internal
+570 singleton
+571 begin
+572 end
+573 internal
+574 singleton
+575 begin
+576 end
+577 internal
+578 singleton
+579 begin
+580 end
+581 internal
+582 singleton
+583 begin
+584 end
+585 internal
+586 singleton
+587 begin
+588 end
+589 internal
+590 singleton
+591 begin
+592 end
+593 internal
+594 singleton
+595 begin
+596 end
+597 internal
+598 singleton
+599 begin
+600 end
+601 internal
+602 singleton
+603 begin
+604 end
+605 internal
+606 singleton
+607 begin
+608 end
+609 internal
+610 singleton
+611 begin
+612 end
+613 internal
+614 singleton
+615 begin
+616 end
+617 internal
+618 singleton
+619 begin
+620 end
+621 internal
+622 singleton
+623 begin
+624 end
+625 internal
+626 singleton
+627 begin
+628 end
+629 internal
+630 singleton
+631 begin
+632 end
+633 internal
+634 singleton
+635 begin
+636 end
+637 internal
+638 singleton
+639 begin
+640 end
+641 internal
+642 singleton
+643 begin
+644 end
+645 internal
+646 singleton
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/final.dubm b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/final.dubm
new file mode 100644
index 0000000..bcf2689
Binary files /dev/null and b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/final.dubm differ
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/final.ie b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/final.ie
new file mode 100644
index 0000000..e1d78a2
Binary files /dev/null and b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/final.ie differ
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/final.mat b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/final.mat
new file mode 100644
index 0000000..1093236
Binary files /dev/null and b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/final.mat differ
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/global_cmvn.stats b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/global_cmvn.stats
new file mode 100644
index 0000000..500cc40
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/global_cmvn.stats
@@ -0,0 +1,3 @@
+ [
+ 1.117107e+11 -7.827721e+08 -1.101398e+10 -2.193934e+09 -1.347332e+10 -1.613916e+10 -1.199561e+10 -1.255081e+10 -1.638895e+10 -3.821099e+09 -1.372833e+10 -5.244242e+09 -1.098187e+10 -3.655235e+09 -9.364579e+09 -4.285302e+09 -6.296873e+09 -1.552953e+09 -3.176746e+09 -1.202976e+08 -9.857023e+08 2.316555e+08 -1.61059e+08 -5.891868e+07 3.465849e+08 -1.842054e+08 3.248211e+08 -1.483965e+08 3.739239e+08 -6.672061e+08 4.442288e+08 -9.274889e+08 5.142684e+08 4.292036e+07 2.206386e+08 -4.532715e+08 -2.092499e+08 -3.70488e+08 -8.079404e+07 -8.425977e+07 1.344125e+09
+ 9.982632e+12 1.02635e+12 8.634624e+11 9.06451e+11 9.652096e+11 1.12772e+12 9.468372e+11 9.141218e+11 9.670484e+11 6.936961e+11 8.141006e+11 6.256321e+11 6.087707e+11 4.616898e+11 4.212042e+11 2.862872e+11 2.498089e+11 1.470856e+11 1.099197e+11 5.780894e+10 3.118114e+10 1.060667e+10 1.466199e+09 4.173056e+08 5.257362e+09 1.277714e+10 2.114478e+10 2.974502e+10 3.587691e+10 4.078971e+10 4.247745e+10 4.382608e+10 4.62521e+10 4.575282e+10 3.546206e+10 3.041531e+10 2.838562e+10 2.258604e+10 1.715295e+10 1.303227e+10 0 ]
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/online_cmvn.conf b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/online_cmvn.conf
new file mode 100644
index 0000000..e69de29
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/splice.conf b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/splice.conf
new file mode 100644
index 0000000..960cd2e
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-cn/ivector/splice.conf
@@ -0,0 +1,2 @@
+--left-context=3
+--right-context=3
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/README b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/README
new file mode 100644
index 0000000..a7f7931
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/README
@@ -0,0 +1,9 @@
+US English model for mobile Vosk applications
+
+Copyright 2020 Alpha Cephei Inc
+
+Accuracy: 10.38 (tedlium test) 9.85 (librispeech test-clean)
+Speed: 0.11xRT (desktop)
+Latency: 0.15s (right context)
+
+
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/am/final.mdl b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/am/final.mdl
new file mode 100644
index 0000000..5596b31
Binary files /dev/null and b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/am/final.mdl differ
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/conf/mfcc.conf b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/conf/mfcc.conf
new file mode 100644
index 0000000..eaa40c5
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/conf/mfcc.conf
@@ -0,0 +1,7 @@
+--sample-frequency=16000
+--use-energy=false
+--num-mel-bins=40
+--num-ceps=40
+--low-freq=20
+--high-freq=7600
+--allow-downsample=true
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/conf/model.conf b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/conf/model.conf
new file mode 100644
index 0000000..9d5b0da
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/conf/model.conf
@@ -0,0 +1,10 @@
+--min-active=200
+--max-active=3000
+--beam=10.0
+--lattice-beam=2.0
+--acoustic-scale=1.0
+--frame-subsampling-factor=3
+--endpoint.silence-phones=1:2:3:4:5:6:7:8:9:10
+--endpoint.rule2.min-trailing-silence=0.5
+--endpoint.rule3.min-trailing-silence=0.75
+--endpoint.rule4.min-trailing-silence=1.0
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/graph/Gr.fst b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/graph/Gr.fst
new file mode 100644
index 0000000..1f292e6
Binary files /dev/null and b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/graph/Gr.fst differ
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/graph/HCLr.fst b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/graph/HCLr.fst
new file mode 100644
index 0000000..9797b26
Binary files /dev/null and b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/graph/HCLr.fst differ
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/graph/disambig_tid.int b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/graph/disambig_tid.int
new file mode 100644
index 0000000..762fd5f
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/graph/disambig_tid.int
@@ -0,0 +1,17 @@
+10015
+10016
+10017
+10018
+10019
+10020
+10021
+10022
+10023
+10024
+10025
+10026
+10027
+10028
+10029
+10030
+10031
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/graph/phones/word_boundary.int b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/graph/phones/word_boundary.int
new file mode 100644
index 0000000..df23fd7
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/graph/phones/word_boundary.int
@@ -0,0 +1,166 @@
+1 nonword
+2 begin
+3 end
+4 internal
+5 singleton
+6 nonword
+7 begin
+8 end
+9 internal
+10 singleton
+11 begin
+12 end
+13 internal
+14 singleton
+15 begin
+16 end
+17 internal
+18 singleton
+19 begin
+20 end
+21 internal
+22 singleton
+23 begin
+24 end
+25 internal
+26 singleton
+27 begin
+28 end
+29 internal
+30 singleton
+31 begin
+32 end
+33 internal
+34 singleton
+35 begin
+36 end
+37 internal
+38 singleton
+39 begin
+40 end
+41 internal
+42 singleton
+43 begin
+44 end
+45 internal
+46 singleton
+47 begin
+48 end
+49 internal
+50 singleton
+51 begin
+52 end
+53 internal
+54 singleton
+55 begin
+56 end
+57 internal
+58 singleton
+59 begin
+60 end
+61 internal
+62 singleton
+63 begin
+64 end
+65 internal
+66 singleton
+67 begin
+68 end
+69 internal
+70 singleton
+71 begin
+72 end
+73 internal
+74 singleton
+75 begin
+76 end
+77 internal
+78 singleton
+79 begin
+80 end
+81 internal
+82 singleton
+83 begin
+84 end
+85 internal
+86 singleton
+87 begin
+88 end
+89 internal
+90 singleton
+91 begin
+92 end
+93 internal
+94 singleton
+95 begin
+96 end
+97 internal
+98 singleton
+99 begin
+100 end
+101 internal
+102 singleton
+103 begin
+104 end
+105 internal
+106 singleton
+107 begin
+108 end
+109 internal
+110 singleton
+111 begin
+112 end
+113 internal
+114 singleton
+115 begin
+116 end
+117 internal
+118 singleton
+119 begin
+120 end
+121 internal
+122 singleton
+123 begin
+124 end
+125 internal
+126 singleton
+127 begin
+128 end
+129 internal
+130 singleton
+131 begin
+132 end
+133 internal
+134 singleton
+135 begin
+136 end
+137 internal
+138 singleton
+139 begin
+140 end
+141 internal
+142 singleton
+143 begin
+144 end
+145 internal
+146 singleton
+147 begin
+148 end
+149 internal
+150 singleton
+151 begin
+152 end
+153 internal
+154 singleton
+155 begin
+156 end
+157 internal
+158 singleton
+159 begin
+160 end
+161 internal
+162 singleton
+163 begin
+164 end
+165 internal
+166 singleton
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/final.dubm b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/final.dubm
new file mode 100644
index 0000000..db789eb
Binary files /dev/null and b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/final.dubm differ
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/final.ie b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/final.ie
new file mode 100644
index 0000000..93737bf
Binary files /dev/null and b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/final.ie differ
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/final.mat b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/final.mat
new file mode 100644
index 0000000..c3ec635
Binary files /dev/null and b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/final.mat differ
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/global_cmvn.stats b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/global_cmvn.stats
new file mode 100644
index 0000000..b9d92ef
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/global_cmvn.stats
@@ -0,0 +1,3 @@
+ [
+ 1.682383e+11 -1.1595e+10 -1.521733e+10 4.32034e+09 -2.257938e+10 -1.969666e+10 -2.559265e+10 -1.535687e+10 -1.276854e+10 -4.494483e+09 -1.209085e+10 -5.64008e+09 -1.134847e+10 -3.419512e+09 -1.079542e+10 -4.145463e+09 -6.637486e+09 -1.11318e+09 -3.479773e+09 -1.245932e+08 -1.386961e+09 6.560655e+07 -2.436518e+08 -4.032432e+07 4.620046e+08 -7.714964e+07 9.551484e+08 -4.119761e+08 8.208582e+08 -7.117156e+08 7.457703e+08 -4.3106e+08 1.202726e+09 2.904036e+08 1.231931e+09 3.629848e+08 6.366939e+08 -4.586172e+08 -5.267629e+08 -3.507819e+08 1.679838e+09
+ 1.741141e+13 8.92488e+11 8.743834e+11 8.848896e+11 1.190313e+12 1.160279e+12 1.300066e+12 1.005678e+12 9.39335e+11 8.089614e+11 7.927041e+11 6.882427e+11 6.444235e+11 5.151451e+11 4.825723e+11 3.210106e+11 2.720254e+11 1.772539e+11 1.248102e+11 6.691599e+10 3.599804e+10 1.207574e+10 1.679301e+09 4.594778e+08 5.821614e+09 1.451758e+10 2.55803e+10 3.43277e+10 4.245286e+10 4.784859e+10 4.988591e+10 4.925451e+10 5.074584e+10 4.9557e+10 4.407876e+10 3.421443e+10 3.138606e+10 2.539716e+10 1.948134e+10 1.381167e+10 0 ]
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/online_cmvn.conf b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/online_cmvn.conf
new file mode 100644
index 0000000..7748a4a
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/online_cmvn.conf
@@ -0,0 +1 @@
+# configuration file for apply-cmvn-online, used in the script ../local/run_online_decoding.sh
diff --git a/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/splice.conf b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/splice.conf
new file mode 100644
index 0000000..960cd2e
--- /dev/null
+++ b/packages/flutter_vosk_wakeword/android/models/src/main/assets/model-en-us/ivector/splice.conf
@@ -0,0 +1,2 @@
+--left-context=3
+--right-context=3
diff --git a/packages/flutter_vosk_wakeword/android/settings.gradle b/packages/flutter_vosk_wakeword/android/settings.gradle
index 6c342ba..30073bc 100644
--- a/packages/flutter_vosk_wakeword/android/settings.gradle
+++ b/packages/flutter_vosk_wakeword/android/settings.gradle
@@ -1 +1,4 @@
rootProject.name = 'flutter_vosk_wakeword'
+
+//include ':models'
+//project(':models').projectDir = new File(settingsDir, 'models')
diff --git a/packages/flutter_vosk_wakeword/android/src/main/kotlin/com/tsystems/flutter_vosk_wakeword/FlutterVoskWakewordPlugin.kt b/packages/flutter_vosk_wakeword/android/src/main/kotlin/com/tsystems/flutter_vosk_wakeword/FlutterVoskWakewordPlugin.kt
index 59cb517..dddf297 100644
--- a/packages/flutter_vosk_wakeword/android/src/main/kotlin/com/tsystems/flutter_vosk_wakeword/FlutterVoskWakewordPlugin.kt
+++ b/packages/flutter_vosk_wakeword/android/src/main/kotlin/com/tsystems/flutter_vosk_wakeword/FlutterVoskWakewordPlugin.kt
@@ -8,6 +8,9 @@ import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
import io.flutter.plugin.common.MethodChannel.Result
+// # vosk
+import org.vosk.LibVosk
+
/** FlutterVoskWakewordPlugin */
class FlutterVoskWakewordPlugin: FlutterPlugin, MethodCallHandler {
/// The MethodChannel that will the communication between Flutter and native Android
diff --git a/packages/flutter_vosk_wakeword/lib/flutter_vosk_wakeword.dart b/packages/flutter_vosk_wakeword/lib/flutter_vosk_wakeword.dart
index 56de5df..c5592c4 100644
--- a/packages/flutter_vosk_wakeword/lib/flutter_vosk_wakeword.dart
+++ b/packages/flutter_vosk_wakeword/lib/flutter_vosk_wakeword.dart
@@ -1,5 +1,5 @@
-import 'flutter_vosk_wakeword_platform_interface.dart';
+import 'src/interface/flutter_vosk_wakeword_platform_interface.dart';
class FlutterVoskWakeword {
Future getPlatformVersion() {
diff --git a/packages/flutter_vosk_wakeword/lib/flutter_vosk_wakeword_method_channel.dart b/packages/flutter_vosk_wakeword/lib/src/channel/flutter_vosk_wakeword_method_channel.dart
similarity index 89%
rename from packages/flutter_vosk_wakeword/lib/flutter_vosk_wakeword_method_channel.dart
rename to packages/flutter_vosk_wakeword/lib/src/channel/flutter_vosk_wakeword_method_channel.dart
index be35643..6360bff 100644
--- a/packages/flutter_vosk_wakeword/lib/flutter_vosk_wakeword_method_channel.dart
+++ b/packages/flutter_vosk_wakeword/lib/src/channel/flutter_vosk_wakeword_method_channel.dart
@@ -1,7 +1,7 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';
-import 'flutter_vosk_wakeword_platform_interface.dart';
+import '../interface/flutter_vosk_wakeword_platform_interface.dart';
/// An implementation of [FlutterVoskWakewordPlatform] that uses method channels.
class MethodChannelFlutterVoskWakeword extends FlutterVoskWakewordPlatform {
diff --git a/packages/flutter_vosk_wakeword/lib/flutter_vosk_wakeword_platform_interface.dart b/packages/flutter_vosk_wakeword/lib/src/interface/flutter_vosk_wakeword_platform_interface.dart
similarity index 94%
rename from packages/flutter_vosk_wakeword/lib/flutter_vosk_wakeword_platform_interface.dart
rename to packages/flutter_vosk_wakeword/lib/src/interface/flutter_vosk_wakeword_platform_interface.dart
index 6d852da..f6bc481 100644
--- a/packages/flutter_vosk_wakeword/lib/flutter_vosk_wakeword_platform_interface.dart
+++ b/packages/flutter_vosk_wakeword/lib/src/interface/flutter_vosk_wakeword_platform_interface.dart
@@ -1,6 +1,6 @@
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
-import 'flutter_vosk_wakeword_method_channel.dart';
+import '../channel/flutter_vosk_wakeword_method_channel.dart';
abstract class FlutterVoskWakewordPlatform extends PlatformInterface {
/// Constructs a FlutterVoskWakewordPlatform.
diff --git a/packages/flutter_vosk_wakeword/pubspec.yaml b/packages/flutter_vosk_wakeword/pubspec.yaml
index 8bdd656..4520495 100644
--- a/packages/flutter_vosk_wakeword/pubspec.yaml
+++ b/packages/flutter_vosk_wakeword/pubspec.yaml
@@ -16,6 +16,7 @@ dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^5.0.0
+ pigeon: ^25.5.0
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
diff --git a/pubspec.lock b/pubspec.lock
index 8da4e02..201fa38 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -165,6 +165,13 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.2"
+ flutter_vosk_wakeword:
+ dependency: "direct main"
+ description:
+ path: "packages/flutter_vosk_wakeword"
+ relative: true
+ source: path
+ version: "0.0.1"
flutter_web_plugins:
dependency: transitive
description: flutter
@@ -527,5 +534,5 @@ packages:
source: hosted
version: "1.1.0"
sdks:
- dart: ">=3.6.0 <4.0.0"
+ dart: ">=3.6.2 <4.0.0"
flutter: ">=3.27.1"
diff --git a/pubspec.yaml b/pubspec.yaml
index a6a464f..f9a581b 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -26,6 +26,8 @@ dependencies:
path: packages/basic_intl
ai_chat_core:
path: packages/ai_chat_core
+ flutter_vosk_wakeword:
+ path: packages/flutter_vosk_wakeword
# flutter_ingeek_carkey: 1.4.7
# app_car:
# path: ../app_car
@@ -40,7 +42,7 @@ flutter:
plugin:
platforms:
android:
- package: com.tsystems.ai_assistant_plugin
+ package: com.example.ai_assistant_plugin
pluginClass: AiAssistantPlugin
fonts:
- family: VWHead_Bold