faroit/stempeg
Python I/O for STEM audio files
📋 What's Changed
- add support for numpy 2.0 using np.float_ -> np.float64 by @giovana-morais in https://github.com/faroit/stempeg/pull/50
✨ New Contributors
- @giovana-morais made their first contribution in https://github.com/faroit/stempeg/pull/50
- Full Changelog: https://github.com/faroit/stempeg/compare/v0.2.3...v0.2.4
📦 Audio Loading
- Underlying reading backend is now based on [python-ffmpeg](https://github.com/kkroening/ffmpeg-python).
- With this new backend, the creation of any temporary files is reduced, thus audio is directly piped into numpy via stdio. This leads to loading time improvement of __20%-30%__.
- A target sample rate can be specified to resample audio on-the-fly using ffmpeg.
- An optional `stems_from_multichannel` was added to load stems that are aggregated into multichannel audio (concatenation of pairs of stereo channels), see more info on audio writing.
- substream titles metadata can be read from the Info object.
- Loading audio now uses the same API as in spleeters audio loading backend.
📦 Audio Writing
- This new version stabilizes writing support adding `writer` methods to be passed to `stempeg.write_stems()` to save multi-stream audio.
- `stempeg.FilesWriter` saves stems into multiple files. This writer can be boosted in performance using `multiprocess=True`. Which writes the stems in parallel.
- `stempeg.ChannelsWriter` saves as multiple channels. Stems will be multiplexed into channels and saved as a single
- multichannel file. E.g. an `audio` tensor of `shape=(stems, samples, 2)`
- will be converted to a single-stem multichannel audio
- `(samples, stems*2)`.
- `stempeg.StreamsWriter` saves into a single a multi-stream file.
- `stempeg.NIStemsWriter` saves into a single multistream audio. Finally one can create stems files that are fully compatible with [Native Instruments stems](https://www.native-instruments.com/de/specials/stems/). For this, MP4Box has to be installed. See [more info here](https://github.com/faroit/stempeg#1a-optional-installation-of-mp4box).
- + 5 more
The seeking issue (#21) was not fully fixed. This release should address the remaining issues when using the chunked loading using very small float numbers as start parameter
Fixes a bug (#18) that occurs when `start` or `duration` is using very small float numbers (1e-6) that are literally converted into strings maintaining the scientific notation. Also addresses #21 and add an additional check for ffmpeg and ffprobe before actually reading any files
📋 Changes
- a demo track is now part of stempeg for convenience
📋 Changes
- added seeking
- added the ability to provide file info to reduce the number of calls
There was a bug in the earlier versions of stempeg that didn't respect the set `out_type` in the stem reader. This was fixed and the output defaults to `np.float64`. Thanks to @hexafraction
Add some code and warnings to detect the ffmpeg version and warn users when a version older than 3.0 is used since that is adding additional silence to the output files when encoding. Also addressing #3
this release fixes #1 by checking the available ffmpeg encoders and picking `aac` ist `libfdk_aac` is not available. Also the ffmpeg error now are visible
