I have read official documentation of Microsoft SAPI but I couldn't find about whether the api can be used on offline mode or not.
in there, they said that Microsoft SAPI is server based speech recognition api. So It seems like it doesn't support but I have to make sure.
Can I use Microsoft SAPI on offline just like system.speech ?
That link does not say what you think it says. Both Microsoft.Speech.Recognition (server engine) and System.Speech.Recognition (desktop engine) run entirely on the host CPU. The underlying SR engines are different, however.
The reason why the Microsoft.Speech.Recognition engine is called "Server SR" is that it was designed to run as part of Microsoft Speech Server, which ran on an on-premises server.
If you want online (network) SR, you would need to use Windows.Media.Speech.Recognition, which has both online and offline recognition.
I've developed with SAPI using MS's stock recognizer and synthesizers for 2+ years now. I don't think I've ever needed to have a network connection for my projects to work.
According to Microsoft's Speech API Overview it states directly that:
"The SAPI application programming interface (API) dramatically reduces the code overhead required for an application to use speech recognition and text-to-speech, making speech technology more accessible and robust for a wide range of applications."
So, between my personal experience, and the overview, it's safe it say you can recognize/synthesize speech in an offline mode.