Skip to main content

Utility tool for creating voice-over audio assets for QuickCall videos

Project description

QuickCall

QuickCall VoiceOver

Multi-backend TTS tool for creating voice-over audio assets

PyPI License Web Discord

Install | Quick Start | Backends | CLI Options | Voice Models | Configuration | Docker | License


Install

Install with Piper backend

uv pip install quickcall-voiceover[piper]

Install with Kokoro backend

uv pip install quickcall-voiceover[kokoro]

# macOS: Also install espeak-ng
brew install espeak-ng

Install with all backends

uv pip install quickcall-voiceover[all]

# macOS: Also install espeak-ng for Kokoro
brew install espeak-ng

Quick Start

Config Mode

# Piper (default)
quickcall-voiceover config.json --combine

# Kokoro
quickcall-voiceover -b kokoro -v af_heart config.json --combine

Text File Mode

# Piper
quickcall-voiceover -t script.txt -c -o ./output

# Kokoro with af_heart voice
quickcall-voiceover -b kokoro -v af_heart -t script.txt -c -o ./output

Interactive Mode

quickcall-voiceover --text
quickcall-voiceover -b kokoro --text

Show Available Voices

quickcall-voiceover --voices           # Piper voices
quickcall-voiceover -b kokoro --voices # Kokoro voices

Backends

Backend Model Quality Speed Install
Piper Various Medium-High Fast Default
Kokoro Kokoro-82M High Medium [kokoro] extra

CLI Options

quickcall-voiceover [CONFIG] [OPTIONS]

Arguments:
  CONFIG                Path to JSON configuration file

Options:
  -b, --backend         TTS backend: piper, kokoro (default: piper)
  -t, --text [FILE]     Text mode: provide .txt file or use interactively
  -v, --voice VOICE     Voice model (default depends on backend)
  -o, --output DIR      Output directory (default: ./output)
  -m, --models DIR      Models directory (default: ./models)
  -c, --combine         Create a combined audio file from all segments
  --combined-name       Filename for combined output (default: combined_voiceover.wav)
  --voices              Show available voice models and exit
  -h, --help            Show help message

Examples

# Piper (default backend)
quickcall-voiceover config.json --combine
quickcall-voiceover -t script.txt -v en_US-ryan-high -c

# Kokoro backend
quickcall-voiceover -b kokoro -v af_heart config.json -c
quickcall-voiceover -b kokoro -v am_michael -t script.txt -c

# Use config for voice settings, text file for content
quickcall-voiceover voice_config.json -t script.txt -c

# Interactive text mode
quickcall-voiceover --text
quickcall-voiceover -b kokoro --text

Voice Models

Piper Voices

Model ID Name Description
en_US-hfc_male-medium Male (US) Clear male voice (default)
en_US-hfc_female-medium Female (US) Clear female voice
en_US-amy-medium Amy (US) Natural female voice
en_US-joe-medium Joe (US) Natural male voice
en_US-ryan-high Ryan (US) High quality male voice
en_US-lessac-high Lessac (US) High quality female voice
en_GB-alan-medium Alan (UK) British male voice
en_GB-alba-medium Alba (UK) British female voice
en_GB-cori-high Cori (UK) High quality British female

Browse all Piper voices at Piper samples.

Kokoro Voices

Voice ID Name Description
af_heart Heart (US Female) Warm, expressive (default)
af_bella Bella (US Female) Clear American female
af_nicole Nicole (US Female) Professional American female
af_sarah Sarah (US Female) Friendly American female
af_sky Sky (US Female) Bright American female
am_adam Adam (US Male) Clear American male
am_michael Michael (US Male) Professional American male
bf_emma Emma (UK Female) British female
bf_isabella Isabella (UK Female) Elegant British female
bm_george George (UK Male) British male
bm_lewis Lewis (UK Male) Clear British male

More info at Kokoro-82M on HuggingFace.

Configuration

Config File Format

{
  "voice": {
    "backend": "piper",
    "model": "en_US-hfc_male-medium",
    "length_scale": 1.0,
    "noise_scale": 0.667,
    "noise_w": 0.8,
    "sentence_silence": 0.5
  },
  "output": {
    "format": "wav"
  },
  "segments": [
    {
      "id": "01_intro",
      "text": "Welcome to the demo."
    },
    {
      "id": "02_main",
      "text": "This is the main content."
    }
  ]
}

Kokoro Config

{
  "voice": {
    "backend": "kokoro",
    "model": "af_heart",
    "speed": 1.0
  },
  "output": {
    "format": "wav"
  },
  "segments": [
    {
      "id": "01_intro",
      "text": "Welcome to the demo."
    }
  ]
}

Voice Settings

Piper Settings

Field Type Default Description
backend string piper TTS backend
model string en_US-hfc_male-medium Piper voice model
length_scale float 1.0 Speech speed (lower = faster)
noise_scale float 0.667 Voice variation
noise_w float 0.8 Phoneme width noise
sentence_silence float 0.5 Silence between sentences (seconds)

Kokoro Settings

Field Type Default Description
backend string kokoro TTS backend
model string af_heart Kokoro voice ID
speed float 1.0 Speech speed multiplier

Programmatic Usage

from pathlib import Path
from quickcall_voiceover import generate_voiceover, generate_from_text

# Piper (default)
generate_voiceover(
    config_path=Path("config.json"),
    output_dir=Path("./output"),
    combine=True,
)

# Kokoro
generate_voiceover(
    config_path=Path("config.json"),
    output_dir=Path("./output"),
    combine=True,
    backend="kokoro",
    voice="af_heart",
)

# From text lines with Kokoro
lines = [
    "First line of voice over.",
    "Second line of voice over.",
]

generate_from_text(
    lines=lines,
    voice="af_heart",
    output_dir=Path("./output"),
    combine=True,
    backend="kokoro",
)

Docker

Build the image:

docker build -t quickcall-voiceover .

Run with a config file:

docker run -v $(pwd)/config:/config -v $(pwd)/output:/app/output \
  quickcall-voiceover /config/voiceover.json --combine

License

This project is licensed under Apache-2.0.

Note: This tool depends on:

  • Piper TTS - GPL-3.0 license
  • Kokoro - Apache-2.0 license (trained on CC BY licensed datasets)

These are installed as separate dependencies and are not bundled with this package.


Built with ❤️ by QuickCall

Project details


Download files

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

Source Distribution

quickcall_voiceover-0.2.0.tar.gz (176.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quickcall_voiceover-0.2.0-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file quickcall_voiceover-0.2.0.tar.gz.

File metadata

  • Download URL: quickcall_voiceover-0.2.0.tar.gz
  • Upload date:
  • Size: 176.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for quickcall_voiceover-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e696d85c9c53351ee2c09343742680c3829e2d1ae05d9f19943805df00c24d42
MD5 33718a63602a99f629110514f54bcdf0
BLAKE2b-256 768f505959b9955690e076c006324bf61e94707cdc01baa954a9b33c148a48cf

See more details on using hashes here.

File details

Details for the file quickcall_voiceover-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: quickcall_voiceover-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for quickcall_voiceover-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6a5c52a88fd5fe6091e593d19cd6e878e1842f29a85344efc8707017a07e17c1
MD5 7c1292b34f187f402e5dacd109c66ad8
BLAKE2b-256 ce2083d993e45c01a362e31d508174b7c6b24cd397d2c3fe37a6431006cb6538

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page