Git Product home page Git Product logo

Ennuicastr is a system for recording multiple users distributed across the world in a well-synchronized way, without significant loss, over the web.

There are a few problems that arise with distributed recording:

  • Voice-over-IP solutions are the natural way to distribute voice communication, but all sacrifice completeness for performance. That is, all suffer loss in a way that should not be necessary to record. Ennuicastr uses existing voice-over-IP technology (namely, WebRTC) for the actual live communication component.

  • Recording each user's audio separately usually requires that each user perform their own recording manually, and then send the audio to a central source. Aside from causing synchronization nightmares (see the next bullet point), this demands a fair amount of expertise from each user, and is very fragile: If even one user's audio doesn't work out, usually the only viable backup is a single recording of all users. Ennuicastr resolves this by packaging recording into a simple web-app, and sending the recorded audio live to a central server.

  • Distributed users have different clocks. Even with initial synchronization, the clocks have different crystals, and so will drift naturally from each other over time. The traditional technique of having every user record separately, even when no one makes any mistakes, still creates headaches for editing, as the tracks will drift out of sync. Ennuicastr resolves both of these problems by having the client software synchronize its time with the server continuously, and timestamp every frame of audio data. Server-side software can then resolve the timestamped audio frames into continuous streams which are correclty in sync, by removing or adding silence as necessary.

  • Most communication software does considerable processing, to make communication more pleasant, but for editing a recording, this preprocessing is at best unnecessary, and at worst counterproductive. Ennuicastr resolves this by... well... not doing it. Recorded audio is as raw as possible. It can even be recorded in lossless FLAC if you so choose.

Note that this repository includes only client-side software; the server side is in ennuicastr-server. A small example server is provided in this repository for testing.

Ennuicastr is licensed under the ISC license, and can be used for more-or-less any purpose so long as you retain the copyright notices.

Ennuicastr has a number of dependencies each under their own compatible license. See the directories vad and libav for more information on them.

No documentation is provided for running your own instances of Ennuicastr or for its protocol.

Ennuicastr's Projects

ennuicastr icon ennuicastr

Ennuicastr is a system for recording multiple users distributed across the world in a well-synchronized way, without significant loss, over the web.

libspecbleach.js icon libspecbleach.js

C library for audio noise reduction and other spectral effects (Emscripten/JavaScript port)

rtennui icon rtennui

A portable replacement for WebRTC's media component optimized for control and low latency

vosk-browser icon vosk-browser

A speech recognition library running in the browser thanks to a WebAssembly build of Vosk

webrtcaec3.js icon webrtcaec3.js

Port of WebRTC's AEC3 (acoustic echo canceller, version 3) library to WebAssembly/JavaScript

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.