How to reduce the frequency range of an audio and frequency shift?

Low Pass filter: Low-Pass Filter - Audacity Manual

Change Pitch effect: Change Pitch - Audacity Manual

Then I want to frequency shift my message to occupy frequency range between 16KHz to 20KHz

The problem is, that’s a rather narrow range (in terms of percentage, octaves, or perception).

For example, if we make a limited voice range of 200Hz to 5Hz and we pitch-shift that up to where 200Hz becomes 16kHz that’s a factor of 80. And 5kHz gets shifted to 400kHz. …That might not make any difference since you’re not supposed to hear it anyway. :stuck_out_tongue:

wouldn’t it be possible to accommodate the frequency range between 200Hz to 5KHz within 16KHz?

There’s no built-in way to do that.

It could be done with some “advanced” [u]FFT programming[/u] but “squeezing” the frequency range would probably make it unintelligible, even if it was audible.

There are lots of subliminal methods and it’s probably not worth “re-inventing the wheel.”

It it was me I would simply lower the level of the subliminal message and mix it so it’s masked by the wind/rain noise. You might have to go to -30dB or maybe lower. The thing I like about that method is that if you are careful it’s possible to mix-in an inverted copy of the rain/wind, canceling it out and exposing the hidden message, which you can re-amplify.