Skip to main content

sp



Sinapsis Orpheus-CPP

Templates for advanced text-to-speech synthesis with Orpheus-TTS

🐍 Installation • 🚀 Features • 📚 Usage example • 🌐 Webapp • 📙 Documentation • 🔍 License

This Sinapsis Orpheus-CPP package provides a template for seamlessly integrating, configuring, and running text-to-speech (TTS) functionalities powered by Orpheus-TTS.

🐍 Installation

Install using your favourite package manager. We strongly encourage the use of uv, although any other package manager should work too. If you need to install uv please see the official documentation.

Example with uv:

  uv pip install sinapsis-orpheus-cpp --extra-index-url https://pypi.sinapsis.tech

or with raw pip:

  pip install sinapsis-orpheus-cpp --extra-index-url https://pypi.sinapsis.tech

with uv:

  uv pip install sinapsis-orpheus-cpp[all] --extra-index-url https://pypi.sinapsis.tech

or with raw pip:

  pip install sinapsis-orpheus-cpp[all] --extra-index-url https://pypi.sinapsis.tech

🚀 Features

Templates Supported

This module includes a template for text-to-speech synthesis using the Orpheus TTS model:

OrpheusTTS: Advanced text-to-speech synthesis template powered by Orpheus TTS, delivering human-like speech with natural intonation, emotion, and rhythm that surpasses state-of-the-art closed-source models. The template supports expressive speech synthesis through emotive tags including <laugh>, <chuckle>, <sigh>, <cough>, <sniffle>, <groan>, <yawn>, and <gasp> for enhanced vocal expressions. Additionally, it provides multi-language support when configured with the appropriate Hugging Face model path, making it versatile for global applications.

Attributes
  • n_gpu_layers: Number of model layers to offload to GPU (-1 = use all layers, 0 = CPU only) (default: -1)
  • n_threads: Number of CPU threads to use for model inference (0 = auto-detect) (default: 0)
  • n_ctx: Context window size (maximum number of tokens, 0 = use model's maximum) (default: 8192)
  • model_id: Hugging Face model repository ID (required)
  • model_variant: Specific GGUF file to download from the repository (default: None)
  • cache_dir: Directory to store downloaded models and cache files (default: SINAPSIS_CACHE_DIR)
  • verbose: Enable verbose logging for model operations (default: False)
  • voice_id: Voice identifier for speech synthesis (required)
  • batch_size: Batch size for model inference (default: 1)
  • max_tokens: Maximum number of tokens to generate for speech (default: 2048)
  • temperature: Sampling temperature for token generation (default: 0.8)
  • top_p: Nucleus sampling probability threshold (default: 0.95)
  • top_k: Top-k sampling parameter (default: 40)
  • min_p: Minimum probability threshold for token selection (default: 0.05)
  • pre_buffer_size: Duration in seconds of audio to generate before yielding the first chunk (default: 1.5)

For example, for OrpheusTTS use sinapsis info --example-template-config OrpheusTTS to produce an example config like:

agent:
  name: my_test_agent
templates:
- template_name: InputTemplate
  class_name: InputTemplate
  attributes: {}
- template_name: OrpheusTTS
  class_name: OrpheusTTS
  template_input: InputTemplate
  attributes:
    n_gpu_layers: -1
    n_threads: 0
    n_ctx: 8192
    model_id: '`replace_me:<class ''str''>`'
    model_variant: null
    cache_dir: ~/sinapsis_cache
    verbose: false
    voice_id: '`replace_me:<class ''str''>`'
    batch_size: 1
    max_tokens: 2048
    temperature: 0.8
    top_p: 0.95
    top_k: 40
    min_p: 0.05
    pre_buffer_size: 1.5

📚 Usage example

This example illustrates how to use the OrpheusTTS template for text-to-speech synthesis. It converts text input into speech using Orpheus-TTS and saves the resulting audio file locally.

Config
agent:
  name: orpheus_tts_agent
  description: "Agent that generates speech from text using the Orpheus TTS model."

templates:
- template_name: InputTemplate
  class_name: InputTemplate
  attributes: {}

- template_name: TextInput
  class_name: TextInput
  template_input: InputTemplate
  attributes:
    source: "user_input"
    text: "Hi, I'm Tara. Welcome to Orpheus text-to-speech system! I can speak in a very natural way."

- template_name: OrpheusTTS
  class_name: OrpheusTTS
  template_input: TextInput
  attributes:
    n_gpu_layers: -1
    n_ctx: 4096
    model_id: "isaiahbjork/orpheus-3b-0.1-ft-Q4_K_M-GGUF"
    voice_id: "tara"
    temperature: 0.8
    top_p: 0.95
    top_k: 40
    min_p: 0.05
    pre_buffer_size: 1.5
    max_tokens: 2048

- template_name: SaveGeneratedAudio
  class_name: AudioWriterSoundfile
  template_input: OrpheusTTS
  attributes:
    save_dir: "orpheus_tts"
    root_dir: "artifacts"
    extension: "wav"

This configuration defines an agent and a sequence of templates for converting text to speech using Orpheus-TTS.

To run the config, use the CLI:

sinapsis run name_of_config.yml

🌐 Webapp

The webapp included in this project showcases the modularity of the Orpheus TTS template for speech generation tasks.
git clone git@github.com:Sinapsis-ai/sinapsis-speech.git
cd sinapsis-speech
🐳 Docker

IMPORTANT This docker image depends on the sinapsis-nvidia:base image. Please refer to the official sinapsis instructions to Build with Docker.

  1. Build the sinapsis-speech image:
docker compose -f docker/compose.yaml build
  1. Start the app container:
docker compose -f docker/compose_apps.yaml up -d sinapsis-orpheus-tts
  1. Check the logs
docker logs -f sinapsis-orpheus-tts
  1. The logs will display the URL to access the webapp, e.g.,::
Running on local URL:  http://127.0.0.1:7860

NOTE: The url may be different, check the output of logs.

  1. To stop the app:
docker compose -f docker/compose_apps.yaml down
💻 UV

To run the webapp using the uv package manager, follow these steps:

  1. Export the environment variable to install the python bindings for llama-cpp:
export CMAKE_ARGS="-DGGML_CUDA=on"
export FORCE_CMAKE="1"
  1. Export CUDACXX:
export CUDACXX=$(command -v nvcc)
  1. Sync the virtual environment:
uv sync --frozen
  1. Install the wheel:
uv pip install sinapsis-speech[all] --extra-index-url https://pypi.sinapsis.tech
  1. Run the webapp:
uv run webapps/packet_tts_apps/orpheus_tts_app.py
  1. The terminal will display the URL to access the webapp (e.g.):
Running on local URL:  http://127.0.0.1:7860

NOTE: The URL may vary; check the terminal output for the correct address.

📙 Documentation

Documentation is available on the sinapsis website

Tutorials for different projects within sinapsis are available at sinapsis tutorials page

🔍 License

This project is licensed under the AGPLv3 license, which encourages open collaboration and sharing. For more details, please refer to the LICENSE file.

For commercial use, please refer to our official Sinapsis website for information on obtaining a commercial license.

Metadata

Release files for sinapsis-orpheus-cpp 0.1.5

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

Source distribution (sdist)

Source distribution for sinapsis-orpheus-cpp 0.1.5
File Size Uploaded
sinapsis_orpheus_cpp-0.1.5.tar.gz 24.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sinapsis-orpheus-cpp 0.1.5
File Interpreter ABI Platform
sinapsis_orpheus_cpp-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 48.0 kB

Release files / sinapsis_orpheus_cpp-0.1.5.tar.gz

Download URL sinapsis_orpheus_cpp-0.1.5.tar.gz
Size 24.9 kB
Tags Source
SHA-256 checksum
How to use checksums
be32de5f170b34cd5f1ecfb8e9ea7efe21385059edf3b08476cbccc5f1823ca2
BLAKE2b-256 checksum
How to use checksums
aa3d8bcfa21ef238eb4913bfdcbd7438bad54ac999e7da9c45b2b4fa441370d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.16

Release files / sinapsis_orpheus_cpp-0.1.5-py3-none-any.whl

Download URL sinapsis_orpheus_cpp-0.1.5-py3-none-any.whl
Size 23.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
01cc90603b3d72619999fbc0e9ad35ba3b5e5b9b7f5960381a3c4b68d958d83f
BLAKE2b-256 checksum
How to use checksums
a987d5a8b2db6e2caa9f9852d4cb673834f4fb1449c2ea44cdd312110f6416ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.16

Release history Release notifications | RSS feed

This release

0.1.5 This release

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

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