Skip to main content

High-level interface for RHVoice library

API PyPI version Python versions PyPI - Format Build

Generating speech stream from text via RHVoice library 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).

Install

pip3 install rhvoice-wrapper

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

rhvoice-wrapper-bin

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[rhvoice]

Documentation

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 libRHVoice.so 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.
  • config_path or RHVOICECONFIGPATH: Path to folder, contain RHVoice.conf in linux and RHVoice.ini in windows. Default /usr/local/etc/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.
  • stream or RHVOICESTREAM: Processing and sending chunks soon as possible, otherwise processing and sending only full data including length: say will return one big chunk, formats other than wav and pcm will be generated much slower. Default True.

Usage

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 get all audio data in one big chunk:

data = tts.get('Hello world!', format_='wav')
print('data size: ', len(data), ' bytes')
subprocess.check_output(['aplay', '-q'], input=data)

Or just save to file:

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

format_ is output audio format. Must be present in tts.formats.

voice is a voice of speaker. Must be present in tts.voice_profiles. voice='Voice', sets=None equal voice=None, sets={'voice_profile': 'Voice'}, voice more priority.

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 = fp.read(5000)
        while text:
            yield text
            text = fp.read(5000)

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

Other methods

set_params

Changes voice synthesizer settings:

tts.set_params(**kwargs)

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

Return True if change, else False.

get_params

Get voice synthesizer settings:

tts.get_params(param=None)

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

join

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

tts.join()

Properties

  • 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.voice_profiles: List of supported voice profiles.
  • TTS.voices_info: Dictionary of supported voices with voices information.
  • TTS.api_version: Supported RHVoice library version.
  • TTS.lib_version: RHVoice library version. If not in rhvoice_wrapper.rhvoice_proxy.SUPPORT, may incorrect work.
  • TTS.cmd: Dictionary of external calls, as it is.

Examples

Requirements

  • OS: Linux, Windows
  • RHVoice library 0.7.2 or above, languages and voices
  • Python 3.5 +

Release files for rhvoice-wrapper 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rhvoice-wrapper 0.8.0
File Size Uploaded
rhvoice-wrapper-0.8.0.tar.gz 28.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rhvoice-wrapper 0.8.0
File Interpreter ABI Platform
rhvoice_wrapper-0.8.0-py3-none-any.whl Python 3 none any Details

Total release size:55.6 kB

Release files / rhvoice-wrapper-0.8.0.tar.gz

Download URL rhvoice-wrapper-0.8.0.tar.gz
Size 28.4 kB
Tags Source
SHA-256 checksum
How to use checksums
0d28c19a584ee803d1368b8f8b55218a7f611072d103102472aaaa101b628b28
BLAKE2b-256 checksum
How to use checksums
ced5cd09b8abbe4da0fd22693ad57bcd56f4108e043d87cf9de9295b70804906
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.6

Release files / rhvoice_wrapper-0.8.0-py3-none-any.whl

Download URL rhvoice_wrapper-0.8.0-py3-none-any.whl
Size 27.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1a49f16cf257cefda127d0369c278a56b7d77a5d03ca85e964bc45dd41f2fd84
BLAKE2b-256 checksum
How to use checksums
48af28baf609c910907273a59a4576534263855aee18e8eced670ee45012ef4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.6

Release history Release notifications | RSS feed

This release

0.8.0 This release

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page