I think keeping wifi on during sleep will fix this problem. I am trying it now --( Settings::Wifi::Advanced).
I suspect that S-Voice does not have a retry and fails if WiFi is sleeping. Mine fails the first time -- but works if I repeat the command -- which tells me that the first command causes Wifi to wake up but the command fails because S-Voice does not wait for Wifi to wake up before sending the command.
They could cache the command until Wifi wakes up. Or put a retry into the code so S-Voice tries twice -- the first time wakes up wifi. Or they could put a setting in the OS to select "Always use 4G for S-Voice" (which would work better on busy WLANS).