RobertasTa commited on
Commit
acd78f0
·
verified ·
1 Parent(s): e3832bb

Android LT 1.1.0: Lithuanian ears for the Parakeetype keyboard

Browse files
.gitattributes CHANGED
@@ -37,3 +37,5 @@ docs/sherpatts_install.jpg filter=lfs diff=lfs merge=lfs -text
37
  docs/sherpatts_main.jpg filter=lfs diff=lfs merge=lfs -text
38
  lt_dict filter=lfs diff=lfs merge=lfs -text
39
  docs/banner.png filter=lfs diff=lfs merge=lfs -text
 
 
 
37
  docs/sherpatts_main.jpg filter=lfs diff=lfs merge=lfs -text
38
  lt_dict filter=lfs diff=lfs merge=lfs -text
39
  docs/banner.png filter=lfs diff=lfs merge=lfs -text
40
+ docs/parakeetype_model.jpg filter=lfs diff=lfs merge=lfs -text
41
+ docs/parakeetype_switch.jpg filter=lfs diff=lfs merge=lfs -text
AI_CONSULTANT_BRIEF.md CHANGED
@@ -32,6 +32,11 @@ Three files:
32
  - `lt_dict` (2.2 MB): eSpeak NG Lithuanian dictionary with the stressed syllable of 189k word
33
  forms. Optional; needs `adb` from a computer.
34
 
 
 
 
 
 
35
  ## Facts you must know before answering
36
 
37
  - SherpaTTS comes from **F-Droid**, not Google Play. On Google Play a search shows other apps,
@@ -65,6 +70,28 @@ Three files:
65
  | Folder `Android/data/...` "access denied" in a file manager | expected on recent Android; use `adb` |
66
  | Numbers read oddly ("15:25 val.") | eSpeak NG reads numbers and abbreviations itself; no fix here |
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  ## Things you must NOT claim
69
 
70
  - That this is on Google Play, or that SherpaTTS is made by the authors. It is woheller69's app.
@@ -72,13 +99,16 @@ Three files:
72
  not expressed.
73
  - That it is "the first" or "the only" Lithuanian voice for Android.
74
  - That `lt_dict` works with any SherpaTTS version: it was built and tested for 3.4.
 
 
75
 
76
  ## Licences
77
 
78
  Voice: NewGenLTU Open RAIL-D 1.0 (free, commercial use not prohibited, use restrictions apply,
79
  `LICENSE-VOICE` must travel with it). `lt_dict`: GPL-3.0, sources in `espeak-ng-lt/`, stress
80
  data from two CC BY 4.0 works (LIEPA annotation, Vilnius University; g2p-lt-lexicon,
81
- Arūnas Smaliukas). See THIRD_PARTY.md.
 
82
 
83
  ## The author
84
 
 
32
  - `lt_dict` (2.2 MB): eSpeak NG Lithuanian dictionary with the stressed syllable of 189k word
33
  forms. Optional; needs `adb` from a computer.
34
 
35
+ Since 1.1.0 also **ears**: `parakeet-lt-kmynas-int8.zip` (955 MB), a Lithuanian speech
36
+ recognition model for the voice keyboard **Parakeetype** (theScrabi, F-Droid,
37
+ `org.schabi.parakeetype`). If the person asks about dictation rather than reading aloud, it is
38
+ this part; see "Ears" below.
39
+
40
  ## Facts you must know before answering
41
 
42
  - SherpaTTS comes from **F-Droid**, not Google Play. On Google Play a search shows other apps,
 
70
  | Folder `Android/data/...` "access denied" in a file manager | expected on recent Android; use `adb` |
71
  | Numbers read oddly ("15:25 val.") | eSpeak NG reads numbers and abbreviations itself; no fix here |
72
 
73
+ ## Ears (dictation with Parakeetype)
74
+
75
+ - Parakeetype accepts only models listed in its own code, with fixed file hashes. The Lithuanian
76
+ entry is proposed in https://github.com/theScrabi/Parakeetype/pull/1. **Check that PR's state
77
+ first.** If it is not merged, the F-Droid app shows no "Parakeet Lithuanian" card; the person
78
+ has to wait or build the app from https://github.com/RobertasTa/Parakeetype/tree/add-lithuanian-model
79
+ (README, "Build it yourself").
80
+ - Import: main screen → "Install" next to "Model not installed" → scroll to the **Parakeet
81
+ Lithuanian** card (below Parakeet Ultra) → "Import model file" → the ZIP. Then "Set as Active".
82
+ - Switching to it: in Gboard long-press the 🌐 globe → "Parakeetype Voice Input". Back: the
83
+ small keyboard icon on the right, above Enter.
84
+ - Measured word error rate, Parakeetype's default model vs. these ears: FLEURS 27.1 % → 10.6 %,
85
+ short commands 80.4 % → 17.0 %. Lithuanian only.
86
+
87
+ | Symptom | Cause |
88
+ |---|---|
89
+ | Import says the hashes do not match | archive imported on the Parakeet Ultra card; use the Parakeet Lithuanian card |
90
+ | No "Parakeet Lithuanian" card | the installed Parakeetype does not include the PR yet |
91
+ | A self-built app will not install over the F-Droid one | different signing keys; uninstall the other one first |
92
+ | `adb install` fails with `INSTALL_FAILED_USER_RESTRICTED` (Xiaomi) | copy the APK to Download and tap it in a file manager |
93
+ | Lithuanian dictation comes out as Russian or nonsense | the default model is active; set Parakeet Lithuanian as active |
94
+
95
  ## Things you must NOT claim
96
 
97
  - That this is on Google Play, or that SherpaTTS is made by the authors. It is woheller69's app.
 
99
  not expressed.
100
  - That it is "the first" or "the only" Lithuanian voice for Android.
101
  - That `lt_dict` works with any SherpaTTS version: it was built and tested for 3.4.
102
+ - That Parakeetype is made by the authors, or that the official app already includes the
103
+ Lithuanian model, unless the PR above is merged.
104
 
105
  ## Licences
106
 
107
  Voice: NewGenLTU Open RAIL-D 1.0 (free, commercial use not prohibited, use restrictions apply,
108
  `LICENSE-VOICE` must travel with it). `lt_dict`: GPL-3.0, sources in `espeak-ng-lt/`, stress
109
  data from two CC BY 4.0 works (LIEPA annotation, Vilnius University; g2p-lt-lexicon,
110
+ Arūnas Smaliukas). Ears: CC BY 4.0 (NVIDIA Parakeet TDT 0.6B v3, fine-tuned by Kristijonas
111
+ Jakubsonas as "kmynas v4"); Silero VAD inside the archive is MIT. See THIRD_PARTY.md.
112
 
113
  ## The author
114
 
README.md CHANGED
@@ -6,27 +6,35 @@ license_name: newgenltu-openrail-d
6
  license_link: https://huggingface.co/RobertasTa/android-lt/blob/main/LICENSE-VOICE
7
  library_name: sherpa-onnx
8
  pipeline_tag: text-to-speech
9
- base_model: RobertasTa/lt_LT-ingute-medium
 
 
10
  tags:
11
  - text-to-speech
12
  - tts
 
 
13
  - lithuanian
14
  - android
15
  - sherpa-onnx
16
  - piper
17
  - espeak-ng
 
18
  - offline
19
  - accessibility
20
  ---
21
 
22
- # Android LT: a Lithuanian voice for Android phones
23
 
24
  ![A robotic hand holds a gift box labelled "android-lt" under a glowing globe; next to it: "Android LT, Ingutė on your Android phone" (illustration created with AI)](docs/banner.png)
25
 
26
  Ingutė, a Lithuanian synthetic voice, on your Android phone, offline. The phone uses it wherever
27
  it can read aloud: the text-to-speech settings, the screen reader, book and article readers.
28
 
29
- *Lietuviškai ir kodas: [github.com/RobertasTa/android-lt](https://github.com/RobertasTa/android-lt)*
 
 
 
30
 
31
  ## What is here
32
 
@@ -37,6 +45,8 @@ it can read aloud: the text-to-speech settings, the screen reader, book and arti
37
  - **`lt_dict`**: the Lithuanian eSpeak NG dictionary with the stressed syllable for 189,000 word
38
  forms. Without it the stress is guessed by rules and is wrong in about half of the
39
  multi-syllable words.
 
 
40
 
41
  The voice is played by **SherpaTTS**, a free open-source Android TTS engine. It is not part of
42
  this package; install it separately (step 1).
@@ -107,14 +117,82 @@ Android 15, SherpaTTS 3.4.
107
  - `lt_dict` was built for SherpaTTS 3.4 (sherpa-onnx 1.13); check the md5 first on other versions.
108
  - It is a synthetic voice: natural, but not a person.
109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  ## Licences
111
 
 
 
 
112
  - **Voice** (`lt_LT-ingute-medium.onnx`, `tokens.txt`): NewGenLTU Open RAIL-D 1.0. Free of
113
  charge, commercial use is not prohibited, use restrictions apply; when passing it on, include
114
  [LICENSE-VOICE](LICENSE-VOICE) and state the origin. Ingutė was grown from the Reginutė model
115
  with the authors' own Python tools.
116
  - **`lt_dict`** and its sources (`espeak-ng-lt/`): GPL-3.0 (eSpeak NG data). The stress
117
  positions come from two CC BY 4.0 works; see [THIRD_PARTY.md](THIRD_PARTY.md).
 
 
 
 
118
  - Texts in this repository: GPL-3.0 ([LICENSE](https://github.com/RobertasTa/android-lt/blob/main/LICENSE)).
119
 
120
  ## Thanks
@@ -123,7 +201,9 @@ Android 15, SherpaTTS 3.4.
123
  [sherpa-onnx](https://github.com/k2-fsa/sherpa-onnx) (k2-fsa),
124
  [eSpeak NG](https://github.com/espeak-ng/espeak-ng), [Piper](https://github.com/OHF-Voice/piper1-gpl)
125
  and Michael Hansen; the creators of the **LIEPA** corpus (Vilnius University) and
126
- **Arūnas Smaliukas** for `g2p-lt-lexicon`.
 
 
127
 
128
  ## Stuck?
129
 
 
6
  license_link: https://huggingface.co/RobertasTa/android-lt/blob/main/LICENSE-VOICE
7
  library_name: sherpa-onnx
8
  pipeline_tag: text-to-speech
9
+ base_model:
10
+ - RobertasTa/lt_LT-ingute-medium
11
+ - kristijonas/kmynas-parakeet-lt-v4
12
  tags:
13
  - text-to-speech
14
  - tts
15
+ - automatic-speech-recognition
16
+ - speech-recognition
17
  - lithuanian
18
  - android
19
  - sherpa-onnx
20
  - piper
21
  - espeak-ng
22
+ - parakeet
23
  - offline
24
  - accessibility
25
  ---
26
 
27
+ # Android LT: a Lithuanian voice and ears for Android phones
28
 
29
  ![A robotic hand holds a gift box labelled "android-lt" under a glowing globe; next to it: "Android LT, Ingutė on your Android phone" (illustration created with AI)](docs/banner.png)
30
 
31
  Ingutė, a Lithuanian synthetic voice, on your Android phone, offline. The phone uses it wherever
32
  it can read aloud: the text-to-speech settings, the screen reader, book and article readers.
33
 
34
+ Since 1.1.0 there are **ears** too: speak Lithuanian to the phone and the text appears in any text
35
+ field, also offline (see [Ears](#ears-lithuanian-dictation-parakeetype)).
36
+
37
+ *Page: https://robertasta.github.io/android-lt/en/ · Lietuviškai ir kodas: [github.com/RobertasTa/android-lt](https://github.com/RobertasTa/android-lt)*
38
 
39
  ## What is here
40
 
 
45
  - **`lt_dict`**: the Lithuanian eSpeak NG dictionary with the stressed syllable for 189,000 word
46
  forms. Without it the stress is guessed by rules and is wrong in about half of the
47
  multi-syllable words.
48
+ - **Ears** (`parakeet-lt-kmynas-int8.zip`, 955 MB): a Lithuanian speech recognition model for
49
+ the Parakeetype voice keyboard.
50
 
51
  The voice is played by **SherpaTTS**, a free open-source Android TTS engine. It is not part of
52
  this package; install it separately (step 1).
 
117
  - `lt_dict` was built for SherpaTTS 3.4 (sherpa-onnx 1.13); check the md5 first on other versions.
118
  - It is a synthetic voice: natural, but not a person.
119
 
120
+ ## Ears: Lithuanian dictation (Parakeetype)
121
+
122
+ [Parakeetype](https://github.com/theScrabi/Parakeetype) is an open-source voice keyboard for
123
+ Android (F-Droid). It recognises speech on the phone and never goes online. Its default model
124
+ hears Lithuanian poorly; `parakeet-lt-kmynas-int8.zip` gives it Lithuanian ears.
125
+
126
+ | word error rate | FLEURS (986 utterances) | short commands (127) |
127
+ |---|---|---|
128
+ | Parakeetype's default model (Parakeet Ultra) | 27.1 % | 80.4 % |
129
+ | with these ears | 10.6 % | 17.0 % |
130
+
131
+ Measured on a PC with a script that follows Parakeetype's recognition path exactly; tested live on
132
+ Robertas's phone (Xiaomi 12T Pro, Android 15).
133
+
134
+ **Status (2026-10-29).** For Parakeetype from F-Droid to accept this archive, its author has to
135
+ merge our proposal [theScrabi/Parakeetype#1](https://github.com/theScrabi/Parakeetype/pull/1).
136
+ Until then you can build the app with the Lithuanian model yourself ("Build it yourself" below).
137
+
138
+ ### Installing
139
+
140
+ 1. **Parakeetype**: from F-Droid once the proposal is merged, or built yourself.
141
+ 2. **Download to the phone** `parakeet-lt-kmynas-int8.zip` (955 MB) from the
142
+ [release](https://huggingface.co/RobertasTa/android-lt/tree/main).
143
+ 3. On Parakeetype's main screen enable the keyboard and allow the microphone. Next to "Model not
144
+ installed" tap "Install", scroll down to the **Parakeet Lithuanian** card → "Import model
145
+ file" → the archive. The app checks every file's hash; you can delete the archive afterwards.
146
+ 4. On the same card: "Set as Active".
147
+ 5. **Dictate**: open any text field (notes, for example) and switch the keyboard to Parakeetype.
148
+ In Gboard, long-press the 🌐 globe and pick "Parakeetype Voice Input". Hold the big microphone
149
+ button and speak. The first time, the model takes a few seconds to load.
150
+ 6. **Back to your usual keyboard**: the small keyboard icon on the right, above the Enter key.
151
+
152
+ | | | |
153
+ |---|---|---|
154
+ | ![Parakeet Lithuanian as the active model](docs/parakeetype_model.jpg) | ![Switching keyboards: Parakeetype voice input](docs/parakeetype_switch.jpg) | ![Dictated: "Labas testas yra. Tikrinam, kaip ausys veikia."](docs/parakeetype_dictation.jpg) |
155
+
156
+ ### Build it yourself (until the proposal is merged)
157
+
158
+ You need a computer with Java 17 or newer and the Android SDK: [Android Studio](https://developer.android.com/studio)
159
+ or Google's command-line tools (`android sdk install "platforms;android-37.0" "build-tools;37.0.0"`).
160
+ The first build downloads about 1 GB.
161
+
162
+ ```
163
+ git clone -b add-lithuanian-model https://github.com/RobertasTa/Parakeetype.git
164
+ cd Parakeetype
165
+ ./gradlew assembleDebug
166
+ ```
167
+
168
+ On Windows: `gradlew assembleDebug`. Point to the Android SDK with `sdk.dir=...` in
169
+ `local.properties` or the `ANDROID_HOME` variable. Copy the resulting
170
+ `app/build/outputs/apk/debug/app-debug.apk` to the phone's Download folder and tap it in a file
171
+ manager (Xiaomi phones refuse `adb install` without a Mi account). If you already have
172
+ Parakeetype from F-Droid, uninstall it first: apps signed with different keys cannot update each
173
+ other. Once the proposal is merged, uninstall your build and install the F-Droid one.
174
+
175
+ ### Limits of the ears
176
+
177
+ - Lithuanian only. For other languages pick the default model (one model is active at a time).
178
+ - About 910 MB on the phone; Parakeetype needs Android 12 or newer.
179
+ - On short commands it gets roughly one word in six wrong.
180
+
181
  ## Licences
182
 
183
+ The header above names the voice licence; the ears archive is CC BY 4.0 (below).
184
+
185
+
186
  - **Voice** (`lt_LT-ingute-medium.onnx`, `tokens.txt`): NewGenLTU Open RAIL-D 1.0. Free of
187
  charge, commercial use is not prohibited, use restrictions apply; when passing it on, include
188
  [LICENSE-VOICE](LICENSE-VOICE) and state the origin. Ingutė was grown from the Reginutė model
189
  with the authors' own Python tools.
190
  - **`lt_dict`** and its sources (`espeak-ng-lt/`): GPL-3.0 (eSpeak NG data). The stress
191
  positions come from two CC BY 4.0 works; see [THIRD_PARTY.md](THIRD_PARTY.md).
192
+ - **Ears** (`parakeet-lt-kmynas-int8.zip`): CC BY 4.0. NVIDIA Parakeet TDT 0.6B v3, fine-tuned for
193
+ Lithuanian by Kristijonas Jakubsonas ("kmynas v4", LIEPA-3). Our changes are listed in the
194
+ archive's `NOTICE.txt`. The Silero VAD inside the archive is MIT. Parakeetype is a separate
195
+ app (GPL-3.0).
196
  - Texts in this repository: GPL-3.0 ([LICENSE](https://github.com/RobertasTa/android-lt/blob/main/LICENSE)).
197
 
198
  ## Thanks
 
201
  [sherpa-onnx](https://github.com/k2-fsa/sherpa-onnx) (k2-fsa),
202
  [eSpeak NG](https://github.com/espeak-ng/espeak-ng), [Piper](https://github.com/OHF-Voice/piper1-gpl)
203
  and Michael Hansen; the creators of the **LIEPA** corpus (Vilnius University) and
204
+ **Arūnas Smaliukas** for `g2p-lt-lexicon`; [Parakeetype](https://github.com/theScrabi/Parakeetype)
205
+ (theScrabi), **Kristijonas Jakubsonas** for the Lithuanian Parakeet ("kmynas") and NVIDIA for
206
+ Parakeet.
207
 
208
  ## Stuck?
209
 
SHA256SUMS.txt CHANGED
@@ -2,3 +2,12 @@
2
  7d68702d4229c0813cbeaa680b848252364180242eb751b58f89165b21b345af tokens.txt
3
  3b56f0986c0319d00b589465f1b93f69c59d61a3a1b5cb9a482d519e386adf66 lt_dict
4
  a359105275a97d1adf721cb4b49e249407742a268e381ecfc7181f59d9419075 LICENSE-VOICE
 
 
 
 
 
 
 
 
 
 
2
  7d68702d4229c0813cbeaa680b848252364180242eb751b58f89165b21b345af tokens.txt
3
  3b56f0986c0319d00b589465f1b93f69c59d61a3a1b5cb9a482d519e386adf66 lt_dict
4
  a359105275a97d1adf721cb4b49e249407742a268e381ecfc7181f59d9419075 LICENSE-VOICE
5
+ c5654729284d1a6ad40f47ead3a7901acc93b8b2f087dbacc7a8797922f6d015 parakeet-lt-kmynas-int8.zip
6
+
7
+ # Files inside parakeet-lt-kmynas-int8.zip (Parakeetype verifies these on import)
8
+ 8f4dafb7d62ae117dc5f1133d44457b6ae8d4f91e6d899588581a519f14319dc encoder.int8.onnx
9
+ 78246a6d979ddecf47b3c66b2c332a32cb60abef75b019692b78f2bcb3d9aad2 decoder.int8.onnx
10
+ 0c965ab9c66720bb101ca6457c3c54dfd6d7780b668e8d0b641abef459b49cf5 joiner.int8.onnx
11
+ a9fde1486ebfcc08f328d75ad4610c67835fea58c73ba57e3209a6f6cf019e9f nemo128.onnx
12
+ fab30a2363a8eccd053cf0def763db0b2f9e37a4b321070698f36da013e448e4 vocab.txt
13
+ 1a153a22f4509e292a94e67d6f9b85e8deb25b4988682b7e174c65279d8788e3 silero_vad_v6.onnx
THIRD_PARTY.md CHANGED
@@ -33,7 +33,31 @@ https://huggingface.co/RobertasTa/lt_LT-ingute-medium
33
 
34
  The resulting `lt_dict` is distributed under GPL-3.0 with these sources.
35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  ## Not included
37
 
38
  SherpaTTS (https://github.com/woheller69/ttsengine, GPL-3.0) is a separate app and is not part
39
  of this package. Install it from F-Droid.
 
 
 
 
 
33
 
34
  The resulting `lt_dict` is distributed under GPL-3.0 with these sources.
35
 
36
+ ## The ears (`parakeet-lt-kmynas-int8.zip`, release v1.1.0)
37
+
38
+ A Lithuanian speech recognition model for Parakeetype, licensed under the Creative Commons
39
+ Attribution 4.0 International licence (full text and an attribution notice inside the archive as
40
+ `LICENSE.txt` and `NOTICE.txt`):
41
+
42
+ - "parakeet-tdt-0.6b-v3" by NVIDIA: https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3
43
+ - fine-tuned for Lithuanian on the LIEPA-3 corpus as "kmynas-parakeet-lt-v4" by Kristijonas
44
+ Jakubsonas: https://huggingface.co/kristijonas/kmynas-parakeet-lt-v4
45
+ - `nemo128.onnx` (the audio front end) from the Parakeet TDT 0.6B v3 ONNX export by istupakov:
46
+ https://huggingface.co/istupakov/parakeet-tdt-0.6b-v3-onnx
47
+
48
+ Our changes: exported to ONNX (encoder, decoder, joiner), the joint network's input projections
49
+ moved into the encoder and decoder graphs with the same weights (the output is identical), tensors
50
+ renamed to the layout Parakeetype reads, encoder quantised to int8 (MatMul weights only), the
51
+ vocabulary written as `vocab.txt`.
52
+
53
+ `silero_vad_v6.onnx` in the archive is the Silero VAD v6 model by the Silero Team
54
+ (https://github.com/snakers4/silero-vad), unmodified, MIT licence (`LICENSE-silero-vad.txt`).
55
+
56
  ## Not included
57
 
58
  SherpaTTS (https://github.com/woheller69/ttsengine, GPL-3.0) is a separate app and is not part
59
  of this package. Install it from F-Droid.
60
+
61
+ Parakeetype (https://github.com/theScrabi/Parakeetype, GPL-3.0) is a separate app as well. Our
62
+ proposed change to it (registering the Lithuanian model) lives in a public branch:
63
+ https://github.com/RobertasTa/Parakeetype/tree/add-lithuanian-model
docs/parakeetype_dictation.jpg ADDED
docs/parakeetype_model.jpg ADDED

Git LFS Details

  • SHA256: 2705611491c1bd551c8861acf69699fd19fb10eb8b78922ccf70e16cd7e33ad8
  • Pointer size: 131 Bytes
  • Size of remote file: 229 kB
docs/parakeetype_switch.jpg ADDED

Git LFS Details

  • SHA256: 8e6a3d3ca9b0454ceda968589a768cda361cd2453e09527bb4a155b68e125248
  • Pointer size: 131 Bytes
  • Size of remote file: 128 kB
parakeet-lt-kmynas-int8.zip ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c5654729284d1a6ad40f47ead3a7901acc93b8b2f087dbacc7a8797922f6d015
3
+ size 954759498