Phelps was pulled over in the early hours yesterday after his white Land Rover was clocked at 84 miles (135 kilometres) per hour in a 45 mph zone in Baltimore's Fort McHenry Tunnel, Maryland Transportation Authority Police said.
"He was unable to perform satisfactorily a series of standard field sobriety tests," it added in a statement distributed to local media.
The 29-year-old has been charged with driving under the influence (DUI), excessive speed and crossing double lane lines, it added.
"I understand the severity of my actions and take full responsibility," he told his 1.6 million followers.
More From This Section
"I know these words may not mean much right now but I am deeply sorry to everyone I have let down."
Phelps, with 18 Olympic gold medals to his name, retired from competitive swimming after the 2012 Olympics in London, but launched a comeback earlier this year, possibly looking at one more Olympic run.
Last month, he made a dazzling return to international competition when he picked up three gold medals at the Pan Pacific Championships in Australia.
Ten years ago, Phelps pleaded guilty to driving while impaired in rural Maryland. He was sentenced to 18 months' probation and fined USD 250 for what he later described as an "isolated incident.