Start with obedience/trick training in the house. Add in working outside in an area where there are no people or other dogs.
Then slowly start working in closer proximity to barking triggers.
Consistency and repetition are key. Do it daily.
Also try taking him to a really crowded area. My boys are braver when there is only 1 - 2 people or dogs, but when they are in a crowd, tend to focus more on me. It's great training time for me.
Do you have another dog? I have to work with my boys individually. When I start growing lax on individual walks, the boys start getting naughty when they are together, egging each other on.
Check out some books from the library on dog training. Victoria Stilwell is a great source.
Watch videos on YouTube. Here is one: