An audio decoding and manipulation library, with bindings for C, Python, and WebAssembly.
npm install babycat- decoding MP3, FLAC, and WAV.
- resampling audio to different frame rates.
- encoding waveforms to WAV.
- Rust. The majority of Babycat is written in Rust, with the exception of a few C dependencies like [libsamplerate][1].
- 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.
| Binding | Documentation | Releases |
| --------------- | -------------------------- | --------------------------------------------- |
| Rust | [docs.rs/babycat][4] | [crates.io/crates/babycat][5] |
| Python | [babycat.io/api/python][6] | [pypi.org/project/babycat][7] |
| WebAssembly | [babycat.io/api/wasm][8] | [npmjs.com/package/babycat][9] |
| C | [babycat.io/api/c][10] | No releases yet. You can compile from source. |
- Audio terminology
- Installation/development requirements
- Using Babycat
- Contributing to Babycat
Babycat is built on top of many high-quality open source packages, including:
- [Symphonia][13] for audio decoding.
- [libsamplerate][1] for high-quality audio resampling.
- [Hound][14] for WAV encoding.
- [PyO3][15] for generating Python bindings.
- [cbindgen][16] for generating C bindings.
- [wasm-bindgen][17] for generating WebAssembly bindings.
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.
[1]: http://www.mega-nerd.com/SRC/index.html
[2]: https://www.neocrym.com
[3]: https://github.com/babycat-io/babycat
[4]: https://docs.rs/babycat
[5]: https://crates.io/crates/babycat
[6]: https://babycat.io/api/python/
[7]: https://pypi.org/project/babycat/
[8]: https://babycat.io/api/wasm
[9]: https://www.npmjs.com/package/babycat
[10]: https://babycat.io/api/c/
[11]: https://www.linkedin.com/in/ritikmishra
[12]: https://www.linkedin.com/in/jamesmishra
[13]: https://github.com/pdeljanov/Symphonia
[14]: https://github.com/ruuda/hound
[15]: https://github.com/PyO3/pyo3
[16]: https://github.com/eqrion/cbindgen
[17]: https://github.com/rustwasm/wasm-bindgen