mirror of
https://github.com/mozilla/DeepSpeech.git
synced 2025-10-26 11:19:39 +00:00
65 lines
2.7 KiB
Markdown
65 lines
2.7 KiB
Markdown
DeepSpeech Java / Android bindings
|
|
==================================
|
|
|
|
This is still preliminary work. Please refer to `native_client/README.md` for
|
|
building `libdeepspeech.so` and `deepspeech` binary for Android on ARMv7 and
|
|
ARM64 arch.
|
|
|
|
Anroid Java / JNI bindings: `libdeepspeech`
|
|
===========================================
|
|
Java / JNI bindings are available under the `libdeepspeech` subdirectory.
|
|
Building depends on prebuilt shared object. Please ensure to place
|
|
`libdeepspeech.so` into the `libdeepspeech/libs/{arm64-v8a,armeabi-v7a}/`
|
|
matching subdirectories.
|
|
|
|
Building the bindings is managed by `gradle` and should be limited to issuing
|
|
`./gradlew libdeepspeech:build`, producing an `AAR` package in
|
|
`./libdeepspeech/build/outputs/aar/`. This can later be used by other
|
|
Gradle-based build with the following configuration:
|
|
```
|
|
implementation 'deepspeech.mozilla.org:libdeepspeech:VERSION@aar'
|
|
```
|
|
|
|
Please note that you might have to copy the file to a local Maven repository
|
|
and adapt file naming (when missing, the error message should states what
|
|
filename it expects and where).
|
|
|
|
Android demo APK
|
|
================
|
|
Provided is a very simple Android demo app that allows you to test the library.
|
|
You can build it with `make apk` and install the resulting APK file. Please
|
|
refer to Gradle documentation for more details.
|
|
|
|
The `APK` should be produced in `/app/build/outputs/apk/`. This demo app might
|
|
require external storage permissions. You can then push models files to your
|
|
device, set the path to the file in the UI and try to run on an audio file.
|
|
When running, it should first play the audio file and then run the decoding. At
|
|
the end of the decoding, you should be presented with the decoded text as well
|
|
as time elapsed to decode in miliseconds.
|
|
|
|
Running `deepspeech` via adb
|
|
============================
|
|
You should use `adb push` to send data to device, please refer to Android
|
|
documentation on how to use that.
|
|
|
|
Please push DeepSpeech data to `/sdcard/deepspeech/`, including:
|
|
- `output_graph.tflite` which is the TF Lite model
|
|
- `alphabet.txt`
|
|
- `lm.binary` and `trie` files, if you want to use the language model ; please
|
|
be aware that too big language model will make the device run out of memory
|
|
|
|
Then, push binaries from `native_client.tar.xz` to `/data/local/tmp/ds`:
|
|
- `deepspeech`
|
|
- `libdeepspeech.so`
|
|
- `libc++_shared.so`
|
|
|
|
You should then be able to run as usual, using a shell from `adb shell`:
|
|
```
|
|
user@device$ cd /data/local/tmp/ds/
|
|
user@device$ LD_LIBRARY_PATH=$(pwd)/ ./deepspeech [...]
|
|
```
|
|
|
|
Please note that Android linker does not support `rpath` so you have to set
|
|
`LD_LIBRARY_PATH`. Properly wrapped / packaged bindings does embed the library
|
|
at a place the linker knows where to search, so Android apps will be fine.
|