Return to KLUBNL.PL main page

rsgb_lf_group
[Top] [All Lists]

Re: LF: VLF vorbis stream, Question

To: [email protected]
Subject: Re: LF: VLF vorbis stream, Question
From: Paul Nicholson <[email protected]>
Date: Mon, 22 Jun 2015 08:45:14 +0000
In-reply-to: <[email protected]>
References: <[email protected]> <[email protected]> <[email protected]> <[email protected]> <[email protected]> <[email protected]> <[email protected]> <[email protected]> <[email protected]> <[email protected]> <[email protected]> <[email protected]> <[email protected]> <[email protected]>
Reply-to: [email protected]
Sender: [email protected]
User-agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130106 Thunderbird/17.0.2
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
--



<Prev in Thread] Current Thread [Next in Thread>