Skip to main content

SonixResampler

High-quality audio resampling using libsamplerate for converting between sample rates.

Quick Start​

Kotlin​

// Resample from 44100 Hz to 16000 Hz
val resampled: FloatArray = SonixResampler.resample(
samples = audioSamples,
fromRate = 44100,
toRate = 16000
)

Swift​

// Resample from 44100 Hz to 16000 Hz
let resampled: [Float] = SonixResampler.resample(
samples: audioSamples,
fromRate: 44100,
toRate: 16000
)

Method​

MethodParametersReturnsDescription
resamplesamples: FloatArray, fromRate: Int, toRate: IntFloatArrayResample audio to target rate

Parameters​

ParameterTypeDescription
samplesFloatArray / [Float]Input audio samples (mono, float in [-1.0, 1.0] range)
fromRateIntSource sample rate in Hz (e.g., 44100)
toRateIntTarget sample rate in Hz (e.g., 16000)

Common Sample Rates​

RateUse Case
16000 HzCalibra APIs (pitch detection, evaluation)
22050 HzSpeech analysis
44100 HzCD quality, standard playback
48000 HzVideo, professional audio

When to Use​

In most cases you don't need to use SonixResampler directly — SonixDecoder.decode() resamples automatically to 16kHz by default. Use it when:

  • You have raw float samples at the wrong rate
  • You need a specific target rate that isn't 16kHz
  • You're doing custom audio processing
// Usually NOT needed — SonixDecoder handles resampling
val audioData = SonixDecoder.decode("audio.mp3") // Already at 16kHz

// Needed when you have raw samples from another source
val recordedAt48k: FloatArray = ...
val at16k = SonixResampler.resample(recordedAt48k, fromRate = 48000, toRate = 16000)

Quality​

Uses libsamplerate (Secret Rabbit Code) which provides:

  • High-quality sinc interpolation
  • Minimal aliasing artifacts
  • Fast performance on mobile devices

Next Steps​