Did Hannibal have a qualitative advantage over the Romans? Was the average soldier in Hannibal's army much better individually than the average roman soldier?
Hannibal had a very diverse army, with men from all kinds of places and of varying 'quality'. Some were mercenaries, others were long-time subjects or allies, still others were recent allies. These were organised by where they came from, and they were often led by their own captain, chief, or prince. Only the higher commanders of the army were Carthaginian.
Hannibal's army consisted broadly of:
At Cannae, the Libyans were probably the best troops available to Hannibal. They were armed with captured Roman equipment (looted after Trebia and Lake Trasimene). At the time of the Second Punic War, Libyans had been a substantial part of the Carthaginian forces for over a century. The Libyans under Hannibal's command had fought with in Spain for many years, so they were experienced and loyal.
The Spanish foot soldiers included Celts from the northern half of Spain and Iberians from the southern half. The Iberians were provided by tribes allied to the Carthaginians; the Celts were mercenaries. Some may have fought with Hannibal for some time, others joined just before Hannibal's campaign got under way. The Spanish soldiers were lighter armed than the Libyans and they probably went without armour.
The Gallic soldiers joined Hannibal during his campaign. He picked up some Gallic allies (or mercenaries, that is unclear) in southern France and still more in northern Italy. Initially these fought in their tribal bands without much organisation, but it seems that by the time of Cannae they had adopted a more defined army structure with sub-units based on the Spanish example. The Gauls too lacked armour and were lightly armed.
How does this then compare to the Roman army? The Roman army at Cannae was freshly raised and lacked experience, even compared to Hannibal's Spanish and Gallic soldiers. The Romans had raised their largest army ever (up to that point), but they didn't take the time to let the soldiers train. Cannae happened within a few months of the army being raised; all the legionaries were still green as grass. An advantage the Romans had was that they were well-equipped, as well as Hannibal's best troops - but that doesn't offset the disadvantage of the lack of experience.