MCPcopy Index your code
hub / github.com/echogarden-project/echogarden

github.com/echogarden-project/echogarden @v2.10.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.10.2 ↗ · + Follow
1,112 symbols 3,105 edges 150 files 0 documented · 0% 1 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Echogarden

Echogarden is an easy-to-use speech toolset that includes a variety of speech processing tools.

  • Easy to install, run, and update
  • Written in TypeScript, for the Node.js runtime
  • Can be used either as a command-line utility, or imported as a standard npm package
  • Runs on Windows (x64, ARM64), macOS (x64, ARM64) and Linux (x64, ARM64)
  • Doesn't require Python, Docker, or other system-level dependencies
  • Doesn't rely on essential platform-specific binaries. Engines are either written in pure TypeScript, ported via WebAssembly, or imported using the ONNX runtime
  • Fully open-source (GPL v3)

Features

  • Text-to-speech using high-quality Kokoro and VITS offline models for many languages and dialects, and 16 other offline and online engines, including cloud services by Google, Microsoft, Amazon, OpenAI and ElevenLabs
  • Speech-to-text using a custom TypeScript/ONNX port of the OpenAI Whisper speech recognition architecture, whisper.cpp, and several other engines, including cloud services by Google, Microsoft, Amazon and OpenAI
  • Speech-to-transcript alignment using several variants of dynamic time warping (DTW, DTW-RA), including support for multi-pass (hierarchical) processing, or via guided decoding using Whisper recognition models. Supports 100+ languages
  • Speech-to-text translation, translates speech in any of the 98 languages supported by Whisper, to English, with near word-level timing for the translated transcript
  • Speech-to-translated-transcript alignment synchronizes spoken audio in one language, to a provided English-translated transcript, using the Whisper engine
  • Speech-to-transcript-and-translation alignment synchronizes spoken audio in one language, to a translation in a variety of other languages, given both a transcript and its translation
  • Text-to-text translation, translates text between various languages. Supports cloud-based Google Translate engine
  • Language detection identifies the language of a given audio or text. Includes Whisper or Silero engines for spoken audio, and TinyLD or FastText for text
  • Voice activity detection attempts to identify segments of audio where voice is active or inactive. Includes WebRTC VAD, Silero VAD, RNNoise-based VAD and a built-in Adaptive Gate algorithm
  • Speech denoising attenuates background noise from spoken audio. Includes the RNNoise and NSNet2 engines
  • Source separation isolates voice from any music or background ambience. Includes the MDX-NET deep learning architecture
  • Word-level timestamps for all recognition, synthesis, alignment and translation outputs
  • Advanced subtitle generation, accounting for sentence and phrase boundaries
  • For the Kokoro, VITS and eSpeak-NG synthesis engines, includes enhancements to improve TTS pronunciation accuracy: adds text normalization (e.g. idiomatic date and currency pronunciation), English heteronym disambiguation (based on a simple rule-based model), various pronunciation corrections, and accepts user-provided pronunciation lexicons
  • Internal package system that auto-downloads and installs voices, models and other resources, as needed

Installation

Ensure you have Node.js v18 or later installed (v22 or later is recommended).

then:

npm install -g echogarden@latest

Update

Simple, but may not always update to the very latest major version:

npm update -g echogarden

You can also use npm-check-updates to check for a newer version:

npm install -g npm-check-updates
ncu -g echogarden

Then, if an updated version is available, use the command line ncu provides to make the update.

Using the command-line interface

A small sample of command lines:

echogarden speak "Hello World!"
echogarden speak-file story.txt --engine=kokoro
echogarden transcribe speech.mp3
echogarden translate-speech speech.webm subtitles.srt
echogarden align speech.opus transcript.txt
echogarden isolate speech.wav

See the command-line interface guide for more details on the operations supported, and the configuration options reference for a comprehensive list of all options supported.

Using the Node.js API

If you are a developer, you can also directly import the package as a dependency in your code. The API operations and options closely mirror the CLI.

Documentation and guides

Credits

This project consolidates, and builds upon the effort of many different individuals and companies, as well as contributing a number of original works.

Developed by Rotem Dan (IPA: /ˈʁɒːtem ˈdän/).

License

GNU General Public License v3

Licenses for components, models and other dependencies are detailed on this page.

Extension points exported contracts — how you extend this code

EncodeIntoResult (Interface)
(no doc)
src/encodings/TextEncodingsCommon.ts
DeepgramSTTOptions (Interface)
(no doc)
src/recognition/DeepgramSTT.ts
AdaptiveGateVADOptions (Interface)
(no doc)
src/voice-activity-detection/AdaptiveGateVAD.ts
EspeakEvent (Interface)
(no doc)
src/synthesis/EspeakTTS.ts
SubtitlesConfig (Interface)
(no doc)
src/subtitles/Subtitles.ts
ParsedCLIArguments (Interface)
(no doc)
src/cli/CLIParser.ts
SileroLanguageDetectionOptions (Interface)
(no doc)
src/speech-language-detection/SileroLanguageDetection.ts
BrowserRequestHeadersOptions (Interface)
(no doc)
src/utilities/BrowserRequestHeaders.ts

Core symbols most depended-on inside this repo

end
called by 214
src/utilities/Logger.ts
start
called by 206
src/utilities/Logger.ts
slice
called by 84
src/data-structures/WindowedList.ts
log
called by 62
src/utilities/Logger.ts
joinPath
called by 53
src/utilities/PathUtilities.ts
logTitledMessage
called by 53
src/utilities/Logger.ts
on
called by 51
src/utilities/SignalChannel.ts
extendDeep
called by 49
src/utilities/ObjectUtilities.ts

Shape

Function 732
Method 203
Interface 100
Class 75
Enum 2

Languages

TypeScript100%

Modules by API surface

src/recognition/WhisperSTT.ts66 symbols
src/math/VectorMath.ts55 symbols
src/utilities/Utilities.ts50 symbols
src/nlp/Segmentation.ts40 symbols
src/server/Worker.ts39 symbols
src/audio/AudioUtilities.ts35 symbols
src/cli/CLI.ts32 symbols
src/dsp/BiquadFilter.ts29 symbols
src/nlp/IPA.ts19 symbols
src/utilities/RandomGenerator.ts18 symbols
src/utilities/FileSystem.ts17 symbols
src/synthesis/MicrosoftEdgeTTS.ts16 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

For agents

$ claude mcp add echogarden \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact