First - join an alliance. You can talk in alliance chat for free, and your alliance mates can help you defend against attacks. Pick one that has several members near you (or the alliance of the player that is farming your city) so they can reinforce you or hit your attacker quickly.

Second, as mentioned, the requirement of speakers is to prevent spam on world chat - not that it eliminates spam completely... there's still plenty of it... but it does reduce it drastically.

Third, there are many things you can do to prevent being farmed that way. For one, since that city is currently useless to you, you could abandon it - preferably just before an attack is about to hit. That way your attacker can't hit you there any more, and he may lose considerable troops if it's a high level npc and you do it quick enough that he can't recall before it's too late.

Fourth, if you have two cities and he's only hitting one, use the other to build up a large enough army to defend, then send them to the city being hit. The advantage goes to the defense, so you only need about half of what he's sending to win - especially if you use a corselet on the city and have at least one hero with a decent atk level there as well.

Don't give up... live to fight another day!!