Skip to main content
The srconv utility performs high-quality sample rate conversion on audio files using Kaiser-windowed sinc interpolation. It can perform fixed or time-varying rate conversion with adjustable quality settings.

Syntax

srconv [flags] infile

Required options

OptionDescription
-r <rate>Output sample rate in Hz (required)
-R <rate>Input sample rate in Hz (required if not in header)

Rate control options

One of these must be specified:
OptionDescription
-P <ratio>Pitch transposition ratio (input_rate / output_rate)
-r <rate>Output sample rate

Quality and processing options

OptionDescription
-Q <factor>Quality factor from 1 (low) to 8 (high), default: 2
-i <filename>Time-varying ratio control breakpoint file

Output format options

OptionDescription
-o <filename>Output sound filename
-ACreate AIFF format output
-WCreate WAV format output
-JCreate IRCAM format output
-hNo header (raw output)

Sample format options

OptionDescription
-c8-bit signed char
-88-bit unsigned char
-aA-law encoded
-uμ-law encoded
-s16-bit short int (default)
-l32-bit long int
-f32-bit float

Additional options

OptionDescription
-KDo not generate PEAK chunks
-RContinuously rewrite header during processing
-H <n>Heartbeat display: 1=spinner, 2=dots, 3=numeric
-NRing bell when complete
-- <file>Log output to file

Examples

Basic sample rate conversion

Convert 48kHz to 44.1kHz:
srconv -r 44100 input_48k.wav -o output_44k.wav

Downsample with quality control

srconv -r 22050 -Q 4 input.wav -o output.wav

Upsample to higher rate

srconv -r 96000 -Q 6 audio_44k.wav -o audio_96k.wav

Conversion with explicit input rate

srconv -R 48000 -r 44100 rawfile.raw -o output.wav

Using pitch ratio

srconv -P 1.5 input.wav -o output.wav
This transposes pitch up by a perfect fifth (ratio 3/2).

High-quality conversion

srconv -r 44100 -Q 8 hires.wav -o standard.wav

Time-varying conversion

srconv -r 44100 -i ratio.brk input.wav -o output.wav
With ratio.brk containing:
0.0 1.0
2.0 1.5
4.0 1.0
This gradually speeds up and slows down over time.

Quality factor

The -Q parameter controls interpolation quality:
Q valueFilter lengthCPU usageQuality
1ShortestLowestLow (audible artifacts)
2ShortLowStandard (default)
3-4MediumMediumGood (transparent)
5-6LongHighVery good
7-8LongestHighestExcellent (archival)

Choosing quality

  • Q=1-2: Real-time processing, low CPU
  • Q=3-4: General purpose, good quality/speed balance
  • Q=5-6: Professional audio production
  • Q=7-8: Mastering, archival conversion
Higher Q values use longer filters with better frequency response and less aliasing.

Sample rate combinations

Common conversions

FromToRatioUse case
48000441000.91875Video to CD
44100480001.08844CD to video
44100220500.5Downsampling by 2
22050441002.0Upsampling by 2
48000960002.0Standard to high-res
96000480000.5High-res to standard

Upsampling vs downsampling

Upsampling (increasing sample rate):
  • Adds high-frequency space (initially empty)
  • Minimal quality loss
  • Larger output files
Downsampling (decreasing sample rate):
  • Removes high frequencies
  • Requires good anti-aliasing filter (higher Q)
  • Smaller output files

Time-varying conversion

The -i breakpoint file format:
time1 ratio1
time2 ratio2
...
  • Times in seconds
  • Ratios specify input_rate/output_rate at each time
  • Linear interpolation between breakpoints
Example uses:
  • Variable-speed playback effects
  • Pitch glides
  • Time stretching with pitch change

Technical details

Interpolation method

srconv uses Kaiser-windowed sinc interpolation:
  1. Sinc function provides ideal low-pass filter
  2. Kaiser window reduces ripple and ringing
  3. Window length determined by quality factor
  4. Fractional delay achieved by sinc interpolation

Anti-aliasing

For downsampling:
  • Low-pass filter at new Nyquist frequency
  • Filter prevents aliasing artifacts
  • Higher Q provides sharper cutoff
  • Transition band width decreases with Q

Passband and stopband

  • Passband: Frequencies preserved (less than 0.45 × output_rate)
  • Transition: Roll-off region (depends on Q)
  • Stopband: Frequencies rejected (greater than 0.5 × output_rate)

Performance considerations

Processing time

Factors affecting speed:
  • Quality factor (Q): Higher Q = slower
  • File duration: Linear scaling
  • Sample rate change: Upsampling slower than downsampling

Memory usage

Typical: 4096-8192 samples per buffer Memory = buffer_size × channels × 4 bytes × 2 (input + output)

Common issues

Aliasing artifacts

If downsampled audio has harsh, inharmonic artifacts:
  • Increase quality factor (-Q 6 or higher)
  • Ensure input sample rate is correct

Slow processing

If conversion is too slow:
  • Reduce quality factor (try -Q 3)
  • Process in smaller segments
  • Use batch processing overnight

Incorrect pitch

If output pitch is wrong:
  • Verify input sample rate (-R value)
  • Check output rate (-r value)
  • Ensure ratio calculation is correct
  • sndinfo - Check input/output sample rates
  • scale - Adjust amplitude after conversion
  • mixer - Mix files with different sample rates