RHVoice: an HTS-based speech synthesizer for Russian and ten more languages
a free and open source speech synthesizer for Russian and other languages
At a glance
- What is it?
- RHVoice is a GPL-2.0 statistical parametric synthesizer built on HTS. It ships as a Windows installer, a Linux package, an Android app and an NVDA driver, and its voices stay small because only models are stored locally.
- Who is it for?
- Adopt RHVoice if you need offline Russian or Ukrainian speech on Windows, Linux or Android and can live with parametric output and a source build on Linux. Do not adopt it if you need a cloud-grade neural voice or a language outside the eleven listed.
- Can I use it commercially?
- Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 23 days ago.
- What is it written in?
- Mainly C++, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What RHVoice solves, and for whom
Most speech synthesizers that sound good are either cloud services or large neural models that want a GPU and hundreds of megabytes of weights. RHVoice takes the opposite position. It is a local synthesizer that stores only statistical models on the user's machine, which the README describes as keeping voice footprints small. The trade-off is stated plainly in the same paragraph: the voices lack the naturalness of synthesizers that concatenate recorded segments, but they remain intelligible and resemble the speakers who recorded the source material.
That places RHVoice in a specific niche. It is for people who need speech output to work without a network connection, on modest hardware, in languages that mainstream engines handle poorly. Russian is the original target and still the deepest. The README also lists American and Scottish English, Brazilian Portuguese, Esperanto, Georgian, Ukrainian, Kyrgyz, Tatar, Macedonian, Albanian and Polish. The repository metadata adds the same set. A screen reader user on Windows, a Linux desktop that needs a Speech Dispatcher voice, or an Android user who wants an offline Russian TTS engine are the natural audience.
How RHVoice makes sound: HTS models instead of recorded segments
RHVoice is a statistical parametric synthesizer. The README points to HMM-based synthesis and says the project relies mainly on HTS and related open-source software. In that architecture, the system does not stitch together waveform fragments at runtime. It generates the acoustic parameters from a trained model, and the model is what ships to the user. That is why the installed size stays low compared with concatenative engines, and it is also why the output sounds smoother but less lifelike.
Voices are built from recordings of natural speech, so the pipeline is: record a speaker, train a model, distribute the model. The repository layout reflects this. There is a src/ tree for the engine, data/ and config/ for resources and configuration, external/ for vendored dependencies, and a CMakeLists.txt plus an SConstruct at the top level, which means both CMake and SCons are supported build entry points. The doc/ directory holds documentation in English, Russian and Ukrainian. If you want to add a language, the README is explicit that it is theoretically possible when the necessary resources can be found or created, which is a polite way of saying the hard part is the corpus and the training, not the code.
Installing RHVoice and getting a first sentence spoken
The README does not give a single cross-platform install command. It splits by platform and points at the documentation for the details. On Windows, prebuilt binaries are available in the documentation, so the practical first step is to read doc/en/index.md and use the packaged installer rather than build from source.
On Android, the README gives two distribution channels directly. You install the app from F-Droid or Google Play, then the voice data is managed inside the app.
# Android package identifiers, as listed in the README
droid install com.github.olga_yakovleva.rhvoice.androidOn GNU/Linux, there is no binary download in the README. It says building instructions and packaging status live in the Compiling instructions section of the documentation. The repository carries both a CMakeLists.txt and an SConstruct, plus a snap/ directory, so a source build is the expected path for most distributions. The README does not document a rollback procedure for an installed build, so plan the install prefix before you start.
Once installed, RHVoice does not present its own user-facing API on desktop. It plugs into the platform's standard TTS interface: SAPI5 on Windows, Speech Dispatcher on GNU/Linux, and the Android text-to-speech APIs. So the first real use is not calling RHVoice directly, it is selecting it as the voice in the application you already use. For NVDA users on Windows, the README notes that the driver is provided by RHVoice itself, which means the screen reader can use it without going through a third-party bridge.
Where RHVoice is the wrong tool
The honest limitation is the synthesis method. Parametric synthesis is intelligible, not expressive. If your product depends on a warm, human-sounding voice for narration, audiobooks or customer-facing prompts, RHVoice will sound synthetic next to a neural engine, and no amount of tuning changes that, because the method itself is the constraint.
The second limitation is language coverage. Eleven languages are listed, and the README frames further languages as a research project requiring corpora and training resources. If your language is not on the list, this is not a configuration problem you can solve in an afternoon.
The third is packaging. Windows and Android have prebuilt distribution. Linux users are pointed at build instructions and packaging status, which means the experience varies by distribution and you may be compiling from source. The README does not describe a supported uninstall or rollback path, and the repository's LICENSE_APPLE_APP_STORE.md file is a signal that the GPL-2.0 licence creates friction on at least one platform's store rules. If you need a drop-in engine with a stable installer on every OS, RHVoice asks more of you on Linux.
RHVoice compared with eSpeak and formant synthesizers
The obvious comparison is eSpeak, the other long-standing small, offline, many-language synthesizer. The difference is the method. eSpeak is a formant synthesizer: it generates speech from rules about how vocal tracts produce sound, which makes it tiny and fast but distinctly robotic. RHVoice trains statistical models from recordings of real speakers, so its voices carry the characteristics of the person recorded. The README makes this explicit when it says the voices resemble the speakers who recorded the source material.
That changes the practical trade-off. eSpeak covers far more languages with far less per-language effort, because adding a language is largely a matter of writing rules. Adding a language to RHVoice requires recordings and training. In exchange, RHVoice sounds closer to human speech in the languages it supports. If you need a language RHVoice does not have, eSpeak or a cloud service is the realistic answer. If you need offline Russian or Ukrainian with a recognizable speaker, RHVoice is the stronger choice.
Licence, maintenance and the cost of upgrading
RHVoice is GPL-2.0. For desktop and server use that is unremarkable. For mobile distribution it matters: the repository contains a LICENSE_APPLE_APP_STORE.md file, which indicates the project has had to address the tension between GPL obligations and app store terms. If you plan to embed RHVoice in a proprietary product, the copyleft terms apply to the combined work, and you should read LICENSE.md rather than rely on a summary. Nothing here is legal advice.
The release cadence is visible in the tags: 1.18.2 on 2026-03-11, 1.18.3 on 2026-03-19, and 1.18.4 on 2026-03-31. The last push to the repository was on 2026-08-27. Upgrading means matching the engine version to the voice data version, since the voices are separate artifacts distributed alongside the engine. The README does not describe a migration procedure between engine versions, so treat a version bump as something to test against your installed voices rather than assume.
Editorial conclusion
Adopt RHVoice if you need offline Russian or Ukrainian speech on Windows, Linux or Android and can live with parametric output and a source build on Linux. Do not adopt it if you need a cloud-grade neural voice or a language outside the eleven listed. Before committing, verify that your target language has a released voice, check the F-Droid or Google Play listing for the Android build, and read doc/en/index.md for the platform-specific install path.
Frequently asked questions
How do I install RHVoice?
It depends on the platform. Windows uses prebuilt binaries from the documentation, Android installs from F-Droid or Google Play, and GNU/Linux is built from source following the Compiling instructions section of the documentation.
How do I use RHVoice?
RHVoice plugs into the platform's standard text-to-speech interface rather than exposing its own: SAPI5 on Windows, Speech Dispatcher on GNU/Linux, and Android's TTS APIs. On Windows, NVDA can use it directly through the driver RHVoice provides.
Is RHVoice safe?
It is free and open source under GPL-2.0, and the project publishes prebuilt binaries through its own documentation and, on Android, through F-Droid and Google Play. The README does not make any security claims beyond that.
RHVoice vs eSpeak: what is the difference?
RHVoice uses statistical parametric synthesis built on HTS, training models from recordings of natural speech. eSpeak is a formant synthesizer. RHVoice voices resemble the recorded speakers but cover fewer languages; eSpeak covers more languages with more synthetic output.
What are the alternatives to RHVoice?
The README does not name alternatives. The closest comparable approach is eSpeak, which is also small and offline but uses formant synthesis rather than HTS models. For languages RHVoice does not support, a different engine is required.
Community notes