If he's like most young dogs he gets bored. Try cutting your training to 10-15 minute clips and see if that helps.
If he's doing things like laying down when you tell him to sit, he might be confused. Check to make sure you're consistent with hand signals and the words you're using. Give the command once, not over and over, they get immune to it. It's not Sit, sit, sit...come on sit!" It's just "sit". Try not to say the dogs name before the command.
Mix up the commands. If you have a habit of doing things one after the other in the same pattern, "sit, down, stand, come, sit" they can start to anticipate the next command before you give it.
Exercise him before training, sometimes that helps.
Don't put him on training overload. Keep it fun, take a few breaks and throw him the ball, give him a few tugs etc. in between the exercises.
The barking will come in time and then at 4 in the morning when he barks at the garbage truck you'll be wishing he barked less.