I have a Nexus 4 from T-Mobile, the Google one, with Android 4.2.2. I've been noticing this same problem, and the fix I found was to go to Settings -> Language and Input -> Then press the settings icon next to the "Google Keyboard (English, U.S.)" option -> then deselect "Block offensive words." Before I figured this out, however, I spent quite a lot of time painstakingly adding each swear word and each of their various iterations and conjugations to my personal dictionary (both under 'phrase' and 'shortcut'), so this may have helped somewhat for my fix. I can now swype swear words, although often times it is not the automatically recognized word, and I have to manually select it from the list of other possibilities that comes up. I suspect that as I type the swear words more often it will begin to use them by default. As for the voice-to-text options, I don't really know how to fix it, because I rarely use it, however I would suggest trying the same thing (i.e. finding it under 'settings' and deselecting 'block offensive words,' or some similar option). Hope this helps!