We had a no bark collar (citronella) for our barker dog, but I never really liked the idea of it because I wanted her barking to alert me to certain things (stranger coming to the house, etc). I don't want to punish her for any barking, but I want her to stop barking when told and I don't want her barking outside of the house.
We worked with a trainer and now when she barks we see what she is barking at, tell her "good bark" if there is something there worth barking at, and then "quiet". She then has to settle down, which is not easy for her, but she does it. I have no doubt that when someone comes to the door and we're not home, she goes nuts. I don't think that anyone even knocks on the door if they don't have true business at our house.
When we were training her, we would give her a correction with a leash (if we were closely monitoring her) if she continued to bark. Or if the leash was not on we would squirt her with water. It really didn't take long for her to catch on. She still barks when things go by, but at least she settles down faster.