How do I determine when Google maps is Speaking in Android

You will need AudioManager's AudioPlaybackCallback updates.

This only works on Android O and above.

To do this you have to access the audio manager -

 AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

And then add the listener like this -

Handler handler = new Handler();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    audioManager.registerAudioPlaybackCallback(new AudioManager.AudioPlaybackCallback() {
        @Override
        public void onPlaybackConfigChanged(List<AudioPlaybackConfiguration> configs) {
             super.onPlaybackConfigChanged(configs);
            // This will be called when navigation audio state on google maps changes
            Log.d("audio active", String.valueOf(audioManager.isMusicActive()));
        }
    }, handler);
}

The List<AudioPlaybackConfiguration> configs returned in the callback has a AudioAttribute object which contains a string describing the audio playing. For Google maps navigation the String constant value is USAGE_ASSISTANCE_NAVIGATION_GUIDANCE which you can compare to be sure that it is Google Maps announcing the navigation direction.

Programatically you can get it like this

// Loop through the configs to see the media's usage data
configs.get(0).getAudioAttributes().getUsage();