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