mirror of https://github.com/ndarilek/tts-rs.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
11 months ago | |
---|---|---|
.github/workflows | 1 year ago | |
examples | 12 months ago | |
src | 12 months ago | |
.gitignore | 2 years ago | |
Cargo.toml | 11 months ago | |
Makefile.toml | 2 years ago | |
README.md | 2 years ago | |
build.rs | 2 years ago |
README.md
TTS-RS
This library provides a high-level Text-To-Speech (TTS) interface supporting various backends. Currently supported backends are:
- Windows
- Screen readers/SAPI via Tolk (requires
tolk
Cargo feature) - WinRT
- Screen readers/SAPI via Tolk (requires
- Linux via Speech Dispatcher
- MacOS/iOS
- AppKit on MacOS 10.13 and below
- AVFoundation on MacOS 10.14 and above, and iOS
- Android
- WebAssembly
Android Setup
On most platforms, this library is plug-and-play. Because of JNI's complexity, Android setup is a bit more involved. In general, look to the Android example for guidance. Here are some rough steps to get going:
- Set up Cargo.toml as the example does. Be sure to depend on
ndk-glue
. - Place Bridge.java appropriately in your app. This is needed to support various Android TTS callbacks.
- Create a main activity similar to MainActivity.kt. In particular, you need to derive
android.app.NativeActivity
, and you need aSystem.loadLibrary(...)
call appropriate for your app.System.loadLibrary(...)
is needed to triggerJNI_OnLoad
. -
- Even though you've loaded the library in your main activity, add a metadata tag to your activity in AndroidManifest.xml referencing it. Yes, this is redundant but necessary.
- Set if your various build.gradle scripts to reference the plugins, dependencies, etc. from the example. In particular, you'll want to set up cargo-ndk-android-gradle and either depend on androidx.annotation or otherwise configure your app to keep the class rs.tts.Bridge.
And I think that should about do it. Good luck!