Normalized Frequency to rads/sec, Hz and discrete/digital frequency
The continuous-time frequency $\Omega$ and &quot;discrete&quot; frequency $\omega$ given a sampling period of $T_s$ is given by
$$\omega = \Omega T_s = 2{\pi}fT_s \space\text{rads/sample}$$
Where $-\pi \lt\omega\le\pi $ assuming double-sided spectrums.
It's important to note the units: the continuous frequency $\Omega$ is in rads/s, so multiplying by the sampling period gives you the unit of rads/sample.
If you rewrite the above expression using the sampling frequency $f_s$ you get
$$\omega = 2{\pi}\frac{f}{f_s} \space\text{rads/sample}$$
MATLAB divides this by $\pi$ so that we get a new set of normalized frequencies $\omega'$
$$\omega' = \frac{\omega}{\pi} =  2\frac{f}{f_s}$$
When you sample at a rate of $f_s$, your single-sided unaliased spectrum would be in the range of $[0, \frac{f_s}{2}]$. If you take this range and use the equations for $\omega$ and $\omega'$ you get the ranges

$[0, \pi]$ for $\omega$
$[0, 1]$ for $\omega'$

The second range is what MATLAB uses as the default when plotting discrete frequency responses. In order to report the frequency as &quot;rads/sample&quot; the factor of $\pi$ is re-introduced which is why you see the axis labeled as &quot;x $\pi$ rads/sample&quot;. This convention is used to help you quickly identify frequency values as related to your sampling frequency $f_s$ as we'll see in some examples blow.
As an example, a normalized discrete frequency of 0.5 from MATLAB at your sample rate of 16 kHz gives you the continuous time frequency of
$$f = \frac{\omega'f_s}{2} = \frac{(0.5)16000}{2} = 4 \text{ kHz}$$
A value of 1 will yield
$$f = \frac{\omega'f_s}{2} = \frac{(1)16000}{2} = 8 \text{ kHz}$$
The latter is exactly the Nyquist frequency of your signal and gives us the analog to discrete domain frequency mappings we expect. You can find more information here.