bolo
Copyright 2026 The bolo Authors

This product is licensed under the Apache License, Version 2.0 (see LICENSE).

bolo's own source code contains no third-party source code, except the copy
of uccharan in ui/src/vendor/uccharan (see "Web console: speech synthesis in
the browser" below). It talks to the
following components, which are installed separately as Python dependencies
or optional extras and keep their own licences:

  Runtime dependencies
    FastAPI (MIT), Starlette (BSD-3-Clause), Uvicorn (BSD-3-Clause),
    python-multipart (Apache-2.0), NumPy (BSD-3-Clause), httpx (BSD-3-Clause),
    PyYAML (MIT), psutil (BSD-3-Clause),
    soundfile (BSD-3-Clause; its wheels bundle libsndfile, LGPL-2.1-or-later,
      with libFLAC, libogg, libvorbis, libopus (BSD-style), mpg123 (LGPL-2.1)
      and LAME (LGPL-2.0-or-later)),
    soxr (the Python binding and libsoxr are LGPL-2.1-or-later).

  Optional inference engines
    sherpa-onnx (Apache-2.0)        https://github.com/k2-fsa/sherpa-onnx
    ONNX Runtime (MIT), bundled in the sherpa-onnx wheel
    faster-whisper (MIT)            https://github.com/SYSTRAN/faster-whisper
    CTranslate2 (MIT)               https://github.com/OpenNMT/CTranslate2
    useful-moonshine-onnx (MIT), pywhispercpp / whisper.cpp (MIT)
    kokoro-onnx (MIT; depends on phonemizer, GPL-3.0-or-later; not part of
      the "all" extra)

  Phonemiser
    uccharan (Apache-2.0; English data derived from CMUdict, BSD-2-Clause;
      Kokoro English dictionaries from misaki, Apache-2.0)
                                    https://github.com/cb-Sigma/uccharan
      optional "uccharan" extra, part of "all"

  Optional protocol and codec libraries
    wyoming (MIT)                   https://github.com/OHF-Voice/wyoming
    PyAV (BSD-3-Clause; its wheels bundle FFmpeg libraries, LGPL-2.1-or-later)

  Speaker diarization uses the pyannote segmentation-3.0 model (MIT) in its
  ONNX export and a 3D-Speaker ERes2Net speaker-embedding model (Apache-2.0),
  both run by sherpa-onnx. Model files are downloaded by the user, not
  distributed with bolo.

  The optional diarization model "nemotron-3-diarization" is NVIDIA
  Nemotron-3-Diarization (https://huggingface.co/nvidia/Nemotron-3-Diarization),
  licensed under the OpenMDW License Agreement, version 1.1
  (https://openmdw.ai/license/1-1/), in the int8 ONNX conversion published
  by the onnx-community organisation on Hugging Face
  (https://huggingface.co/onnx-community/Nemotron-3-Diarization-ONNX). It is
  downloaded by the user on request, run by ONNX Runtime (MIT), and not
  distributed with bolo. Whoever redistributes the model files (for example
  inside a container image) must, under OpenMDW-1.1, include a copy of that
  agreement and keep the copyright and origin notices that come with the
  model. OpenMDW-1.1 also ends the licence of anyone who sues claiming that
  the model infringes a patent or copyright. bolo's NumPy implementation of
  the model's chunked inference (server/src/bolo/engines/nemotron.py: the
  speaker cache and chunk loop) follows the reference implementation in
  Hugging Face transformers (models/nemotron3_diarization, Apache-2.0,
  Copyright 2026 The HuggingFace Inc. team); its log-mel front-end
  (server/src/bolo/audio/features.py) is bolo's own implementation of NeMo's
  published preprocessing.

  eSpeak NG (GPL-3.0-or-later, https://github.com/espeak-ng/espeak-ng) is an
  OPTIONAL component. It is NOT bundled with bolo, not linked into it, not a
  dependency of the "all" extra and not in the default container images. It
  is installed only when the operator asks for it (the console, "bolo
  components install espeak-ng", the "espeak" extra, which pulls the
  third-party espeakng-loader wheel, or the system package manager) and
  after accepting its licence. Piper-format voices, KittenTTS, Matcha-TTS
  (English) and the non-English Kokoro voices need it; the default voice
  (Kokoro, English) does not. See docs/models.md, "Licences and the
  espeak-ng question".

API compatibility
    The routes under "speaches-compatible" mirror the HTTP interface of
    speaches (https://github.com/speaches-ai/speaches, MIT licence,
    Copyright (c) 2024 Fedir Zadniprovskyi) so that its clients keep
    working. The interface was re-implemented from its route definitions;
    no speaches source code is included.

Models
    Models are not distributed with bolo. They are downloaded on request
    from their publishers, under the licences recorded for each entry in
    the catalog (server/src/bolo/catalog/*.yaml).

Fonts
    The web console bundles Inter and JetBrains Mono, and Noto Sans
    (Devanagari, Bengali, Tamil, Telugu, Gujarati, Kannada, Malayalam,
    Gurmukhi, Oriya) and Noto Naskh Arabic for text in those scripts, all
    under the SIL Open Font License 1.1, from the @fontsource packages.
    The word "बोलो" in the logo is outlined from Hind SemiBold
    (Copyright (c) 2014 Indian Type Foundry, SIL Open Font License 1.1);
    the font itself is not distributed.

Voices converted by this project
    The archives published as assets of the "voices-v1" release of this
    repository are format conversions (PyTorch checkpoint to ONNX, made
    with tools/voices/export_syspin.py) of the VITS voices published by
    the SYSPIN project, SPIRE Lab, Indian Institute of Science (IISc),
    Bengaluru (https://huggingface.co/SYSPIN). The model weights are under
    the MIT licence; they were trained on the SYSPIN text-to-speech
    corpus, licensed CC-BY-4.0. Each archive contains LICENSE and
    ATTRIBUTION files naming the source repository and revision. The
    archives are not part of the bolo package.

    The same release (and, when published there, Hugging Face repositories
    under codebucketsolutions/) may also carry format conversions of Meta's
    MMS-TTS voices (https://huggingface.co/facebook/mms-tts, made with
    tools/voices/export_mms.py and MMS's VITS inference code, MIT, Copyright
    (c) 2021 Jaehyeon Kim). Those weights are licensed CC-BY-NC-4.0:
    NON-COMMERCIAL use only. Each archive contains the licence text and the
    attribution.

    The optional end-of-turn model is Smart Turn v3 by the Pipecat project
    (https://huggingface.co/pipecat-ai/smart-turn-v3, BSD-2-Clause),
    downloaded on request like any other model. bolo's Whisper-style
    feature computation (server/src/bolo/audio/features.py) is its own
    implementation of the published algorithm.

Web console: speech synthesis in the browser
    The console (and the live demo) can run text-to-speech voices in the
    page with ONNX Runtime Web (MIT, https://github.com/microsoft/onnxruntime),
    loaded from jsDelivr at run time, not bundled.

    ui/src/vendor/uccharan is a copy of the WebAssembly build of uccharan
    0.1.0, a text-to-phoneme library (Apache-2.0, Copyright 2026 Abhinav
    Gautam and the uccharan contributors, https://github.com/cb-Sigma/uccharan),
    with its LICENSE, NOTICE and DATA_LICENSES.md. Its English data file
    (en-us.ucd) is derived from the CMU Pronouncing Dictionary, Copyright (C)
    1993-2015 Carnegie Mellon University, BSD-2-Clause-style licence; the full
    text is in ui/src/vendor/uccharan/NOTICE. uccharan contains no eSpeak NG
    code or data; no GPL component is used for speech synthesis in the browser.

    The live demo serves, next to the page (under voices/), copies of these
    voices with their weights stored at reduced precision (8-bit and 16-bit;
    not retrained), made by ui/scripts/voices/build.py:
      - SYSPIN VITS voices (Hindi, Maithili, Bhojpuri, Marathi, Kannada and
        Indian English) by the SYSPIN project, SPIRE Lab, Indian Institute of
        Science, Bengaluru: weights MIT, training data the SYSPIN corpus,
        CC-BY-4.0 (see "Voices converted by this project" above);
      - the Piper voice en_US "amy" (low) from rhasspy/piper-voices (MIT),
        trained on the Amy dataset of Mycroft's mimic3-voices.
    Each voice directory carries its licence and attribution files. The
    voices are not part of the bolo package or of the git repository.

Built-in audio samples
    The files in server/src/bolo/samples/*.wav were synthesised with bolo
    using the models named in server/src/bolo/samples/index.json. The live
    demo bundles a copy of hi-short.wav.
