Most likely the voice quality that your friend experiencing is due to "jitter".
Here is some information regarding
VoIP jitter
Voice streaming data needs a guaranteed bandwidth with a constant latency/delay to avoid jitter.
G.711 codec (64 kbps voice bandwidth) would require 83 kbps network bandwidth.
G.729 codec (8 kbps voice bandwidth) would require 27 kbps network bandwidth.
GSM codec (13 kbps voice bandwidth) would require 29 kbps network bandwidth.
Reference :
Cisco.com: Voice Over IP - Per Call Bandwidth Consumption
The additional bandwidth is because of there is an additional RTP (Real Time Protocol) header for every voice packets that traverse on the TCP/IP networks.
The ISP in Shanghai may not have a QoS setup for voice traffic. That's why even you have plenty of download/upload bandwidth, the voice quality is bad.
I suggest you use G.729 or GSM codec to minimise the bandwidth requirement.
Just my 2 cents. Hope this helps.
Adrian