Giter VIP home page Giter VIP logo

babycat's Introduction

Babycat Logo

Babycat is an audio decoding and manipulation library

Rustdoc status crates.io status Rust dependency status

Features

Decoding, resampling, and encoding

Babycat's core feature set includes:

  • decoding MP3, FLAC, and WAV.
  • resampling audio to different frame rates.
  • encoding waveforms to WAV.

Bindings for Rust, Python, WebAssembly, and C

Babycat can be used from the following target languages:

  • Rust. The majority of Babycat is written in Rust, with the exception of a few C dependencies like libsamplerate.
  • Python. Babycat's Python bindings allow you to decode, resample, and encode audio without being slowed down by Python's Global Interpreter Lock (GIL). Babycat also integrates with Jupyter, allowing you to play and listen to audio streams decoded by Babycat inside of a Jupyter notebook.
  • WebAssembly. Babycat generates JavaScript/WebAssembly bindings that can run either in a web browser or in Node.js.
  • C. Babycat exposes a C API, which is useful for both creating audio analysis projects in C or creating Babycat bindings for languages not mentioned above.

Effective multithreading and parallelism

Babycat is designed to parallelize the decoding of many audio files across multiple CPU cores. Babycat's Python bindings allow for parallel audio decoding without being slowed down by Python's Global Interpreter Lock.

Open source under the MIT license

The audio ecosystem is full of expensive proprietary software packages, or (L)GPL-licensed code that restricts how you can use it. In contrast, Babycat is licensed under the MIT license, allowing you to use Babycat any way you want for free.

Babycat is battle-tested in industry

Babycat was built at and is actively maintained by Neocrym, a record label that uses artificial intelligence to find and promote the world's greatest musicians. Neocrym uses Babycat to decode millions of songs as part of audio feature engineering pipelines for machine learning models.

Learn more

Source code and issues

You can find Babycat's source code at github.com/babycat-io/babycat.

API documentation and releases

babycat.io is our main documentation website. You can find documentation and releases for each binding at:

Binding Documentation Releases
Rust docs.rs/babycat crates.io/crates/babycat
Python babycat.io/api/python pypi.org/project/babycat
WebAssembly babycat.io/api/wasm npmjs.com/package/babycat
C babycat.io/api/c No releases yet. You can compile from source.

Tutorials

You can learn more about how to use Babycat from our long-form tutorials:

Acknowledgements

The first version of Babycat was an internal project at Neocrym written by Ritik Mishra Since then, the code has been extended and open-sourced by James Mishra.

Babycat is built on top of many high-quality open source packages, including:

Babycat's goal is to provide a simple and consistent API on top of the existing audio ecosystem, without sacrificing performance, portability, or permissive licensing.

babycat's People

Contributors

jamesmishra avatar ritikmishra avatar

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.