I tested weak signal detection. Measuring carrier S/N
after a range of compression types and quality settings.
Test carrier: 400 Hz;
Noise: Additive white Gaussian;
Bandwidth: 16.666 mHz (60 seconds);
Sample rate: 48k/sec;
Sample width: 16 bits;
Channels: 1 (mono);
Results:
Format Bit rate S/N
--------------------------------------------
Uncompressed 768 kbps 8.66 dB
FLAC 749 kbps 8.66 dB (note 1)
Vorbis VBR q=0.8 171 kbps 8.68 dB (note 2)
Vorbis VBR q=0.5 85.9 kbps 8.60 dB
Vorbis VBR q=0.3 68.8 kbps 8.64 dB
Vorbis VBR q=0.2 65.2 kbps 8.65 dB
Vorbis VBR q=0.1 61.0 kbps 8.60 dB
Vorbis VBR q=-0.1 35.4 kbps 8.72 dB
Vorbis CBR 80kbps 80.8 kbps 8.64 dB (note 3)
Vorbis CBR 60kbps 60.8 kbps 8.64 dB
Vorbis CBR 40kbps 40.4 kbps 8.71 dB
Vorbis CBR 32kbps 32.5 kbps 8.48 dB (note 4)
Note 1: The test stream is virtually all random noise so FLAC
doesn't reduce the size much. When the band contains lots of
'foreground' signals, it does better. Eg with baseband VLF
containing the usual sferics and MSK signals, the FLAC bit rate
is about 50% of the raw bit rate.
Note 2: VBR = variable bit rate mode, compression level set by
a quality factor between -0.1 and 1.0
Note 3: CBR = constant bit rate mode, compression set by
specifying a target average bit rate.
Note 4: 32 kbps is the minimum allowed with 48k samples/sec mono.
Tests were run using vlfrx-tools with command (VBR)
vtgen -s f=400,a=0.001 -n a=0.3 -r48000 -T2015-06-22,+600 |
vtcat -- - -,i2 | # Restrict to 16 bit samples
vtvorbis -ep -q0.3 | # Vorbis encode without timestamps
tee /tmp/test.vb | # Save vorbis to measure bps
vtvorbis -dp | # Vorbis decode
vtnspec -f400 -r16.666e-3 -w10 -v -aN 10 > /tmp/spec.dat
For CBR, the vorbis encode command is replaced with
vtvorbis -ep -b32 | # Vorbis encode without timestamps
This runs a 10 minute test, non-coherent averaging.
We see negligible effect on the S/N right down to the lowest
quality setting. In this test we have pure white noise and a
single weak carrier buried in the noise.
What if the band also contains some foreground signals?
I repeated some of the tests but this time adding in three strong
carriers at other frequencies.
Format Bit rate S/N
--------------------------------------------
FLAC 752 kbps 8.66 dB
Vorbis VBR q=0.5 88.5 kbps 8.58 dB
Vorbis VBR q=-0.1 37.8 kbps 8.63 dB
Vorbis CBR 32kbps 32.5 kbps 8.48 dB
Again, no significant degradation of weak signal detection, even
with the strongest compression.
Now, what if the measurement bandwidth is wider. I change to 1Hz
bandwidth with increased amplitude of the test carrier to
compensate, still with three strong carriers mixed in:
Format Bit rate S/N
--------------------------------------------
Uncompressed 768 kbps 6.27 dB
Vorbis VBR q=-0.1 47.6 kbps 6.32 dB
Vorbis CBR 32kbps 36.4 kbps 6.30 dB
Vorbis works by separating (in the frequency domain) those bins
which it considers to contain background noise and encoding them
with fewer bits. This doesn't affect S/N noticeably until you
get down to less than about 2 bits resolution. Radio astronomers
(eg SETI) exploit this and routinely use 1 or 2 bit samples.
--
Paul Nicholson
--
|