Skip to main content

High-level interface for RHVoice library

Project description

High-level interface for RHVoice library

API PyPI version Python versions PyPI - Format Build Status Build status

Generate speech stream from text without re-initializing engine. This very fast and more convenient than call RHVoice-test.

Supported audio formats: wav, mp3, opus, flac and pcm (raw RHVoice output).


pip3 install rhvoice-wrapper

This package NOT provide RHvoice. You must be build (or install) RHVoice, languages and voices manually. In Windows you must specify the paths for work.


Warning! rhvoice-wrapper-bin not working in macOS, install RHVoice manually.

Instead of RHVoice you may install rhvoice-wrapper-bin. This is best way for Windows. If the rhvoice-wrapper-bin is installed, its libraries and data will be used automatically.

pip3 install rhvoice-wrapper-bin


First create TTS object:

from rhvoice_wrapper import TTS

tts = TTS(threads=1)

You may set options when creating or through variable environments (UPPER REGISTER). Options override variable environments. To set the default value use None:

  • threads or THREADED. If equal to 1, created one thread object, if more running in multiprocessing mode and create a lot of processes. Default 1.
  • force_process or PROCESSES_MODE: If True engines run in multiprocessing mode, if False in threads mode. Default False if threads == 1, else True. Threads mode and threads > 1 causes a segmentation faults or may return corrupted data
  • lib_path or RHVOICELIBPATH: Path to RHVoice library. Default in Linux, libRHVoice.dylib in macOS and RHVoice.dll in Windows.
  • data_path or RHVOICEDATAPATH: Path to folder, containing voices and languages folders. Default /usr/local/share/RHVoice.
  • resources or RHVOICERESOURCES: A list of paths to language and voice data. It should be used when it is not possible to collect all the data in one place. Default [].
  • lame_path or LAMEPATH: Path to lame, optional. Lame must be present for mp3 support. Default lame.
  • opus_path or OPUSENCPATH: Path to opusenc, optional. File must be present for opus support. Default opusenc.
  • flac_path or FLACPATH: Path to flac, optional. File must be present for flac support. Default flac.
  • quiet or QUIET: If True don't info output. Default False.


Start synthesis generator and get audio data, chunk by chunk:

def generator_audio(text, voice='anna', format_='wav', buff=4096, sets=None):
    with tts.say(text, voice, format_, buff, sets) as gen:
        for chunk in gen:
            yield chunk

Or just save to file:

tts.to_file(filename='esperanto.ogg', text='Saluton mondo', voice='spomenka', format_='opus', sets=None)

sets may set as dict containing synthesis parameters as in set_params. This parameters only work for current phrase. Default None.

If buff equal None or 0, for pcm and wav chunks return as is (probably little faster). For others used default chunk size (4 KiB).

Text as iterable object

If text iterable object, all its fragments will processing successively. This is a good method for processing incredibly large texts. Remember, the generator cannot be transferred to another process. Example:

def _text():
    with open('wery_large_book.txt') as fp:
        text =
        while text:
            yield text
            text =

def generator_audio():
    with tts.say(_text()) as gen:
        for chunk in gen:
            yield chunk

Other methods


Changes voice synthesizer settings:


Allow: absolute_rate, relative_rate, absolute_pitch, relative_pitch, absolute_volume, relative_volume, punctuation_mode, capitals_mode. See RHVoice documentation for details.

Return True if change, else False.


Get voice synthesizer settings:


If param is None return all settings in dict, else parameter value by name as numeric. If parameter not found return None.


Join thread or processes. Don't use object after join:



  • TTS.formats: List of supported formats, pcm and wav always present.
  • TTS.thread_count: Number of synthesis threads.
  • TTS.process: If True, TTS running in multiprocessing mode.
  • TTS.voices: List of supported voices.
  • TTS.voices_info: Dictionary of supported voices with voices information.
  • TTS.api_version: Supported RHVoice library version. If different from lib_version, may incorrect work.
  • TTS.lib_version: RHVoice library version.
  • TTS.cmd: Dictionary of external calls, as it is.



  • OS: Linux, Windows, macOS
  • RHvoice library, languages and voices
  • Python 3.4 +


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for rhvoice-wrapper, version 0.5.1
Filename, size File type Python version Upload date Hashes
Filename, size rhvoice_wrapper-0.5.1-py3-none-any.whl (24.8 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size rhvoice-wrapper-0.5.1.tar.gz (24.0 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page