QoS is all about fairness, as you define it. There are multiple parts to QoS.
There is layer-2 QoS, which uses 802.1P to set the COS bits in layer-2 headers for layer-2 domains. Cisco switches have full COS marking, but limited layer-2 queuing.
There is layer-3 QoS, which uses the TOS bits in IP packets. Cisco routers have pretty extensive layer-3 queuing capabilities.
You also have things related to queuing, e.g. shaping and policing. You will need to decide on policies for these.
First you need to classify the traffic. Basically marking the packets with separate TOS/DSCP marking for the different traffic types. This is best done as close to the traffic source as possible, and Cisco switches can do this as traffic enters the switch from the host.
Once you have classified and marked the traffic, you can apply your fairness doctrine. In your case, it sounds like you want a priority queue on the WAN interface for the VoIP traffic. You will need to decide which percentage of the bandwidth to dedicate to VoIP, and configure your queuing accordingly.
Understand that your QoS markings and policies will not be honored on the Internet, and that you have no real control over incoming traffic, since by the time you see the incoming traffic, the bandwidth has already been used. Since VoIP is a two-way conversation, you can have perfect QoS on your network, but still get crappy VoIP calls because there is no QoS on the Internet, and your incoming WAN link can be saturated, and your QoS policies have no real effect on that.
QoS is a really huge subject, too large for this site. You would need to provide a lot of information about your devices and their configurations, and make some decisions about a lot of things. There is no real way to say, "this" is the answer to how you should accomplish what you want.