mirror of
https://github.com/ndarilek/tts-rs.git
synced 2024-11-25 10:29:36 +00:00
729ece9a07
This is better than using unsafe blocks inside the functions, as that tells the compiler that the unsafeness won't leak out of the block, which isn't true in this case as we're dealing with another unsafe language. |
||
---|---|---|
.github/workflows | ||
examples | ||
src | ||
winrt_bindings | ||
.gitignore | ||
build.rs | ||
Cargo.toml | ||
cbindgen.toml | ||
Makefile.toml | ||
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
use_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!