# NxAudio
NxAudio is an Elixir library for working with audio tensors, providing functionality similar to Python's torchaudio
but built for the Nx ecosystem.
## Features
* Audio I/O operations with support for multiple formats
* Audio transformations and processing
* Amplitude to DB
* MEL Spectrogram and STFT
* Spectrogram visualizations
* Multiple codec support including:
* PCM formats (S16, S24, S32, S8, U8, F32, F64)
* FLAC
* MP3
* Vorbis
* Opus
* AMR (NB/WB)
* μ-law and A-law
* HTK
## Installation
Add `nx_audio` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:nx_audio, "~> 0.1.0"}
]
end
```
## Dependencies
NxAudio requires:
* Elixir ~> 1.17
* FFmpeg for audio processing capabilities
* Nx for tensor operations
## Usage Examples
Basic audio operations:
```elixir
# Reading an audio file
{:ok, {tensor, sample_rate}} = NxAudio.IO.load("path/to/audio.mp3")
# Generating spectrograms
spectrogram = NxAudio.Transforms.Spectrogram.transform(tensor, sample_rate: sample_rate)
```
## Documentation
Detailed documentation is organized into the following sections:
* IO - Audio file reading/writing operations
* Transformations - Audio signal processing functions
* Visualizations - Spectrogram and waveform visualization tools
* Codecs - Supported audio format encodings
For more examples and detailed API documentation, visit the [official documentation](https://hexdocs.pm/nx_audio).
## License
This project is licensed under the MIT License.