How can I go from Uyuni to Puno directly? Is there a bus? and what's the travel time?
Short answer: You really can't.
Long answer: The most direct way (ie not taking a Potosi bus and connecting) is to take just two buses.
The first bus will be from Uyuni to La Paz. This can take 12-15 hours depending on the time of day, the bus company, your driver (some will pull over for a few hours to sleep!) and stops (some stop in El Alto to drop off passengers). Bring warm clothes - it's a COLD long ride.
(My recollection is that it goes up route 30 to La Paz, not via Potosi, but I could be wrong - I certainly don't remember ever being in Potosi but it was in the middle of the night, to be fair)
Then from La Paz to Puno, you have two options - either the fast route around the lake by bus (5 hours), or via Copacabana, which takes longer but is more of a 'fun' experience - you take a ferry at one point.
I assume you're doing a salt flats tour? Speak to your tour company beforehand, as they can often organise a bus for you so that you can end your tour and hop on a bus to La Paz soon afterwards - they quite often fill up, especially if you want cama class instead of semi-cama seats.