So I'm trying to tweak the silence detection for my script, however I am struggling to define what 'silence' actually is, and how the strip_blank threshold value relates to the output of rms()

I've implemented rms() via the telnet server to measure values, however the values seem to vary quite a lot.

For example:

1000hz sinewave @ 0dB: 0.436315828817 via rms()
1000hz sinewave @ -20dB: 0.418433339027 via rms()
1000hz sinewave @ -30dB: 0.418379714679 via rms()

Yet to have strip_blank() trigger at around -30dB requires setting the threshold to -7.41

Is there any way to relate these two measurements to each other? I am looking for a way to generate a reference tone at the specific volume where I want to trigger the silence detection without having to do endless trial and error adjusting the threshold.

Fyi, relevant bits of my script:

live = input.alsa(device="hw:0,0")
duration = interactive.float("duration", 1.)
rs = rms.stereo(duration=duration,live)
r = fst(rs)
live = snd(rs)

def rms_left(_) = "#{fst(r())}" end
def rms_right(_) = "#{snd(r())}" end

backup = single("/outcast_config/backup.mp3")
live = fallback(track_sensitive=false, [ strip_blank(threshold=-7.41,max_blank=1.0,live) , backup ])