SoftwareSerial on uno

The reliability of the SoftwareSerial implementation depends a lot on the other side of the communication. Usually if the communication partner uses some kind of UART which does timing adaption based on the received signal your fine with SoftwareSerial to about 38400 baud in many cases, sometimes even 57600. But with devices that are picky about the serial timing or which may even have some timing problems themselves you're lucky if you get SoftwareSerial running at 9600 baud. The hardware serial does not just pipe some bits out of a pin or reads the status of another pin at regular intervalls, it does quite a bit more to get a better communication quality. This stuff is not possible in the SoftwareSerial because the processor is simply much too slow for doing such stuff, at higher baud rates it's even too slow to get an acceptably timed signal out.

The SoftwareSerial class is a highly optimized peace of code which tries to get the best result possible in a software implementation of something that's better done in hardware. I never got any device to communicate reliably at 57600 baud with SoftwareSerial on an Arduino. If the one hardware USART is not enough for you, get a Mega or if you wanna use the USB connection for debugging, get a Leonardo because there you have an USB debugging serial interface and the USART free for other purposes.