Is there a way or app that allows "voice to text" when I am not near wifi or have data?
For the most part, sure.
I just put my Galaxy Nexus (Android 4.2.2) into Airplane mode and tried to compose an email message with speech-to-text.
It worked, but it was slo-o-o-o-w. And not as accurate as I'd like.
If you go into
Settings > Language & input > Google voice typing (settings) you can set which languages are downloaded to your device for speech-to-text. English is my default (and is already downloaded) but I see about 20 other files I can download.
However, whether you can do this or how well it works depends a lot (I think) on your device and the version of the OS you're running.