Test description

This page shows results of sample rate converters comparison:

Both resamplers were tested with input signals generated by RightMark Audio Analyzer 6.4.0 having the following parameters: Each input file has a number of test patterns (the patterns are the same in all files), which include pulses, constant frequency tones and sweeps. Every resampler configuration was then used to convert each of the input files to output files with 44.1, 48 and 96 kHz sampling rate, all other parameters preserved. Then for each of the output files a spectrogram was created in Sonic Visualizer 2.3. Below are the results (images are clickable).

44.1 kHz stereo, 16 bits per sample, integer input

Output \ Resamplerspeex-1speex-5speex-10soxr-lqsoxr-mqsoxr-hqsoxr-vhq
48 kHz
wav

wav

wav

wav

wav

wav

wav
96 kHz
wav

wav

wav

wav

wav

wav

wav

44.1 kHz stereo, 32 bits per sample, float input

Output \ Resamplerspeex-1speex-5speex-10soxr-lqsoxr-mqsoxr-hqsoxr-vhq
48 kHz
wav

wav

wav

wav

wav

wav

wav
96 kHz
wav

wav

wav

wav

wav

wav

wav

48 kHz stereo, 16 bits per sample, integer input

Output \ Resamplerspeex-1speex-5speex-10soxr-lqsoxr-mqsoxr-hqsoxr-vhq
44.1 kHz
wav

wav

wav

wav

wav

wav

wav
96 kHz
wav

wav

wav

wav

wav

wav

wav

48 kHz stereo, 32 bits per sample, float input

Output \ Resamplerspeex-1speex-5speex-10soxr-lqsoxr-mqsoxr-hqsoxr-vhq
44.1 kHz
wav

wav

wav

wav

wav

wav

wav
96 kHz
wav

wav

wav

wav

wav

wav

wav

96 kHz stereo, 32 bits per sample, float input

Output \ Resamplerspeex-1speex-5speex-10soxr-lqsoxr-mqsoxr-hqsoxr-vhq
44.1 kHz
wav

wav

wav

wav

wav

wav

wav
48 kHz
wav

wav

wav

wav

wav

wav

wav

Resampling performance

During the test, each input file conversion was timed. All input and output files were on the same tmpfs drive (RAM-disk), the test was run on a Core i7 2600K with 16 GiB RAM on Kubuntu 14.10 x86_64. Below are the real/user/system time for each of the tests (in seconds).

Test \ Resamplerspeex-1speex-5speex-10soxr-lqsoxr-mqsoxr-hqsoxr-vhq
44.1 kHz, 16 bit, int -> 48 kHz 0.23/0.22/0.00 0.56/0.55/0.00 4.35/4.34/0.00 0.23/0.21/0.01 0.15/0.15/0.00 0.16/0.15/0.00 0.29/0.28/0.00
44.1 kHz, 32 bit, float -> 48 kHz 0.21/0.18/0.02 0.60/0.60/0.00 4.36/4.35/0.01 0.19/0.19/0.00 0.13/0.13/0.00 0.20/0.19/0.01 0.25/0.24/0.01
44.1 kHz, 16 bit, int -> 96 kHz 0.42/0.42/0.00 1.11/1.10/0.01 8.65/8.63/0.01 0.41/0.39/0.01 0.24/0.22/0.01 0.34/0.32/0.01 0.43/0.42/0.01
44.1 kHz, 32 bit, float -> 96 kHz 0.41/0.40/0.00 1.10/1.08/0.01 8.67/8.65/0.01 0.44/0.43/0.01 0.21/0.21/0.00 0.24/0.22/0.01 0.37/0.36/0.00
48 kHz, 16 bit, int -> 44.1 kHz 0.29/0.29/0.00 0.52/0.51/0.00 4.32/4.30/0.01 0.13/0.11/0.01 0.13/0.12/0.00 0.19/0.18/0.01 0.25/0.24/0.01
48 kHz, 32 bit, float -> 44.1 kHz 0.20/0.19/0.01 0.52/0.51/0.00 4.31/4.30/0.00 0.16/0.16/0.00 0.13/0.12/0.00 0.14/0.14/0.00 0.28/0.27/0.00
48 kHz, 16 bit, int -> 96 kHz 0.09/0.08/0.00 0.20/0.19/0.00 1.81/1.81/0.00 0.10/0.09/0.01 0.09/0.09/0.00 0.10/0.09/0.00 0.21/0.19/0.01
48 kHz, 32 bit, float -> 96 kHz 0.08/0.06/0.01 0.23/0.21/0.02 1.77/1.76/0.01 0.07/0.05/0.01 0.07/0.06/0.01 0.10/0.08/0.02 0.15/0.14/0.01
96 kHz, 32 bit, float -> 44.1 kHz 0.24/0.23/0.01 0.54/0.53/0.01 5.43/5.42/0.00 0.11/0.11/0.00 0.11/0.11/0.00 0.13/0.11/0.01 0.30/0.28/0.01
96 kHz, 32 bit, float -> 48 kHz 0.04/0.03/0.01 0.15/0.14/0.01 1.11/1.10/0.00 0.04/0.04/0.00 0.06/0.05/0.01 0.05/0.05/0.00 0.11/0.09/0.01

Resampler delay

For each conversion and resampler preset the conversion delay was measured. The delay is expressed in the amount of input samples (per channel) that the resampler consumes before it produces the first output sample. For convenience, delay values expressed in milliseconds are also given. Note that speex resampler by default conceals the delay by producing silence samples in the beginning of the output. This behavior was disabled for this test. The test was performed twice, with different frame sizes (i.e. the amount of input samples that are passed to the resampler in one call).

Frame size: 20 samples per channel

Test \ Resamplerspeex-1speex-5speex-10soxr-lqsoxr-mqsoxr-hqsoxr-vhq
44.1 kHz, 16 bit, int -> 48 kHz 7.350 samples (0.167 ms) 39.506 samples (0.896 ms) 127.706 samples (2.896 ms) 20.213 samples (0.458 ms) 908.644 samples (20.604 ms) 882.000 samples (20.000 ms) 882.000 samples (20.000 ms)
44.1 kHz, 32 bit, float -> 48 kHz 7.350 samples (0.167 ms) 39.506 samples (0.896 ms) 127.706 samples (2.896 ms) 20.213 samples (0.458 ms) 908.644 samples (20.604 ms) 882.000 samples (20.000 ms) 882.000 samples (20.000 ms)
44.1 kHz, 16 bit, int -> 96 kHz 7.809 samples (0.177 ms) 39.966 samples (0.906 ms) 127.706 samples (2.896 ms) 20.672 samples (0.469 ms) 908.644 samples (20.604 ms) 882.000 samples (20.000 ms) 882.000 samples (20.000 ms)
44.1 kHz, 32 bit, float -> 96 kHz 7.809 samples (0.177 ms) 39.966 samples (0.906 ms) 127.706 samples (2.896 ms) 20.672 samples (0.469 ms) 908.644 samples (20.604 ms) 882.000 samples (20.000 ms) 882.000 samples (20.000 ms)
48 kHz, 16 bit, int -> 44.1 kHz 11.973 samples (0.249 ms) 43.537 samples (0.907 ms) 139.320 samples (2.902 ms) 34.830 samples (0.726 ms) 120.816 samples (2.517 ms) 161.088 samples (3.356 ms) 960.000 samples (20.000 ms)
48 kHz, 32 bit, float -> 44.1 kHz 11.973 samples (0.249 ms) 43.537 samples (0.907 ms) 139.320 samples (2.902 ms) 34.830 samples (0.726 ms) 120.816 samples (2.517 ms) 161.088 samples (3.356 ms) 960.000 samples (20.000 ms)
48 kHz, 16 bit, int -> 96 kHz 8.000 samples (0.167 ms) 40.000 samples (0.833 ms) 128.000 samples (2.667 ms) 490.000 samples (10.208 ms) 92.000 samples (1.917 ms) 130.000 samples (2.708 ms) 202.000 samples (4.208 ms)
48 kHz, 32 bit, float -> 96 kHz 8.000 samples (0.167 ms) 40.000 samples (0.833 ms) 128.000 samples (2.667 ms) 490.000 samples (10.208 ms) 92.000 samples (1.917 ms) 130.000 samples (2.708 ms) 202.000 samples (4.208 ms)
96 kHz, 32 bit, float -> 44.1 kHz 19.592 samples (0.204 ms) 87.075 samples (0.907 ms) 278.639 samples (2.902 ms) 69.660 samples (0.726 ms) 241.633 samples (2.517 ms) 322.177 samples (3.356 ms) 1920.000 samples (20.000 ms)
96 kHz, 32 bit, float -> 48 kHz 16.000 samples (0.167 ms) 80.000 samples (0.833 ms) 256.000 samples (2.667 ms) 980.000 samples (10.208 ms) 184.000 samples (1.917 ms) 260.000 samples (2.708 ms) 404.000 samples (4.208 ms)

Frame size: 100 samples per channel

Test \ Resamplerspeex-1speex-5speex-10soxr-lqsoxr-mqsoxr-hqsoxr-vhq
44.1 kHz, 16 bit, int -> 48 kHz 7.350 samples (0.167 ms) 39.506 samples (0.896 ms) 127.707 samples (2.896 ms) 20.213 samples (0.458 ms) 122.194 samples (2.771 ms) 313.293 samples (7.104 ms) 674.363 samples (15.292 ms)
44.1 kHz, 32 bit, float -> 48 kHz 7.350 samples (0.167 ms) 39.506 samples (0.896 ms) 127.707 samples (2.896 ms) 20.213 samples (0.458 ms) 122.194 samples (2.771 ms) 313.293 samples (7.104 ms) 674.363 samples (15.292 ms)
44.1 kHz, 16 bit, int -> 96 kHz 7.810 samples (0.177 ms) 39.966 samples (0.906 ms) 127.707 samples (2.896 ms) 20.672 samples (0.469 ms) 122.653 samples (2.781 ms) 313.753 samples (7.115 ms) 674.822 samples (15.302 ms)
44.1 kHz, 32 bit, float -> 96 kHz 7.810 samples (0.177 ms) 39.966 samples (0.906 ms) 127.707 samples (2.896 ms) 20.672 samples (0.469 ms) 122.653 samples (2.781 ms) 313.753 samples (7.115 ms) 674.822 samples (15.302 ms)
48 kHz, 16 bit, int -> 44.1 kHz 11.973 samples (0.249 ms) 43.538 samples (0.907 ms) 139.320 samples (2.902 ms) 162.177 samples (3.379 ms) 592.109 samples (12.336 ms) 793.469 samples (16.531 ms) 1308.299 samples (27.256 ms)
48 kHz, 32 bit, float -> 44.1 kHz 11.973 samples (0.249 ms) 43.538 samples (0.907 ms) 139.320 samples (2.902 ms) 162.177 samples (3.379 ms) 592.109 samples (12.336 ms) 793.469 samples (16.531 ms) 1308.299 samples (27.256 ms)
48 kHz, 16 bit, int -> 96 kHz 8.000 samples (0.167 ms) 40.000 samples (0.833 ms) 128.000 samples (2.667 ms) 100.000 samples (2.083 ms) 460.000 samples (9.583 ms) 650.000 samples (13.542 ms) 252.000 samples (5.250 ms)
48 kHz, 32 bit, float -> 96 kHz 8.000 samples (0.167 ms) 40.000 samples (0.833 ms) 128.000 samples (2.667 ms) 100.000 samples (2.083 ms) 460.000 samples (9.583 ms) 650.000 samples (13.542 ms) 252.000 samples (5.250 ms)
96 kHz, 32 bit, float -> 44.1 kHz 19.592 samples (0.204 ms) 87.075 samples (0.907 ms) 278.640 samples (2.902 ms) 324.354 samples (3.379 ms) 1184.218 samples (12.336 ms) 1586.939 samples (16.531 ms) 2616.599 samples (27.256 ms)
96 kHz, 32 bit, float -> 48 kHz 16.000 samples (0.167 ms) 80.000 samples (0.833 ms) 256.000 samples (2.667 ms) 200.000 samples (2.083 ms) 920.000 samples (9.583 ms) 1300.000 samples (13.542 ms) 504.000 samples (5.250 ms)