ffprobe reports correct bit depth but only when there is a bit depth to report, otherwise it reports correctly that "bit-depth" is not applicable (N/A).
In FFmpeg's report of the data field "bits_per_raw_sample" and per Karans answer, "bit-depth" is misnomer for AAC encoded audio.
If you are trying to probe the data file, you might want to
grep -e for "codec_name" to discern which streams (video, audio, text) the "bits_per_raw_sample" is reporting. This makes it easy to know if the reported bit-depth status pertains to the video codec or the audio codec:
$ ffprobe -show_streams <input_file.mp4> | grep -e codec_name -e bits_per_raw_sample
...example of a resulting video and audio datafile report:
codec_name=h264 <----- video
bits_per_raw_sample=8 <----- 8-bit depth video
codec_name=aac <----- AAC audio
bits_per_raw_sample=N/A <----- bit depth is "Not Applicable" to AAC audio
You might enjoy this article, "Audio Encoding Demystified"
Along with sample rate, there is also bit depth to consider. The bit
depth is the number of digital bits of information used to encode each
sample. In simple terms, bit depth measures “precision”. The higher
the bit depth, the more accurately a signal can communicate the
amplitude of the actual analog sound source. With the lowest possible
bit depth, we only have two choices to measure the precision of sound:
0 for complete silence and 1 for full volume. The higher the bit
depth, the more precision one has over their encoded audio. As an
example: CD quality audio is a standard 16-bit, which gives 216 (or
65,536) volumes to choose from.
Bit depth is fixed for PCM encoding, but for lossy compression
codecs (like MP3 and AAC) it is calculated during encoding and can
vary from sample to sample.
...so, to address the question, "How to determine AAC bit depth?" I suppose you'd have to do it on a sample per sample basis.