The Defense Ministry said investigators will look into why real bullets were used during the demonstration at the Laperrine military barracks in southeast France.
Agence France-Presse reported that the soldier fired the live rounds into a crowd of hundreds of people who had gathered for the demonstration.
A witness to the shooting told AFP that "suddenly, people were falling, we thought it was part of the exercise, and then we saw blood."
The soldier who fired the shots has been detained, Bernard Lemaire, chief of the regional administration in Aude, said on France-3 television. He said the shooting was probably accidental but that it could have been a criminal act.
Four of the wounded were in serious condition, including a 3-year-old. Fifteen were civilians.
President Nicolas Sarkozy's office said he reacted with "horror and deep emotion" to Sunday's incident at the base, which houses the 3rd marine infantry parachute regiment.
No further information was immediately available.