Nolan Darilek
795cc4790c
Unfortunately, I can't figure out how to pass the utterance ID to these signals because I don't see that the GDNative Rust bindings support objects of one type creating objects of another (I.e. nodes creating references.) If I'm wrong, PRs or suggestions welcome. |
||
---|---|---|
.github/workflows | ||
.vscode | ||
gradle/wrapper | ||
libs | ||
src | ||
.gitattributes | ||
.gitignore | ||
build.gradle | ||
Cargo.toml | ||
godot-tts.gdap | ||
godot-tts.gdnlib | ||
godot-tts.gdnlib.release | ||
godot-tts.gdns | ||
gradlew | ||
gradlew.bat | ||
LICENSE | ||
README.md | ||
TTS.gd |
Godot TTS
This addon was primarily developed for the Godot Accessibility addon, but should work well in other contexts where a Godot game might require text-to-speech.
Supported Platforms
Text-to-speech is complicated, and some features may not work everywhere. Most optional features have an associated boolean property used to determine if the feature is available. Further, while I do attempt to ensure that this addon works as well as possible on all platforms, there may be bugs, and pull requests are welcome. Known supported platforms include:
- Windows
- Screen readers/SAPI via Tolk
- WinRT
- Linux via Speech Dispatcher
- MacOS
- AppKit on MacOS 10.13 and below
- AVFoundation on MacOS 10.14 and above, and iOS
- Web
Features
Note that not all features are supported on all synthesizers. Any feature that may not be supported has a boolean property that can be checked to determine whether it works on the current platform.
- Speaking text, with interruption support on most platforms
- Stopping speech in progress
- Getting and setting speech rate in both native synthesizer units and percentages
- Detecting whether a screen reader is active
- Determining whether the synthesizer is speaking, and sending a signal on completion
API
The public-facing API is contained entirely within TTS.GD.
Download
Download the latest release.
Notes on Android
Usage on Android is a bit more complicated:
- Set up a custom Android build.
- Create a directory reachable at res://android/plugins and place the godot-tts.aar and .godot-tts.gdap files from a release into that directory.
- Update res://android/build/build.gradle to specify a
minSdkVersion
of at least 21:
defaultConfig {
minSdkVersion 21
targetSdkVersion 29
versionCode pluginVersionCode
versionName pluginVersionName
}
Notes on Universal Windows Platform
Godot's UWP export is currently broken. In order to use this addon in a UWP game, do the following:
- Export to UWP.
- Extract the newly-created .appx file with
makeappx unpack
. - If you've extracted the .appx file to a directory like _mygame_, copy addons\godot-tts\target\release\godot_tts.dll to mygame\game\addons\godot-tts\target\release\godot_tts.dll, creating the directory if it doesn't exist.
- Repack the appx using makeappx.
It should then be ready to sign and install. Hopefully Godot's UWP export will eventually copy GDNative DLLs correctly so this procedure isn't necessary.