A few things:
First, in ANY scenario like this, it is worth asking your MPLS service provider what their QoS strategy is. Usually it would be a premium service, but if you want to prioritize your voice traffic through the MPLS cloud that is a possibility.
Second, for QoS marking/tagging, decide what type of markings you are going to use. Typically when connecting to an MPLS provider, you should be using layer 3 markings (IP Precidence, DSCP), but make sure to check what types of markings are preserved by their network and which aren't (CoS Ethernet markings are another option though likely will not be preserved by the provider).
Third, while NOT a technical requirement, in most cases and especially in this case with a converged voice/data network, yes you should have a one-to-one mapping of subnets to vlans, and yes you should isolate voice traffic on a separate subnet/vlan than your data traffic. If done that way, your classification can be as simple as an access list defined in a class-map, with a policy-map giving priority in some fashion to voice over data.
Fourth, once traffic is identified as voice, you should treat it differently. I can speak in generalities at this point but it really depends on your traffic profiles and the configurable options available to you. Voice is typically more important than video, which is more important than voice signalling, which is more important than data.
Fifth, there are actually many ways that you can be "connected via an MPLS network". That is an extremely flexible WAN solution, so just from that it's difficult to tell you how you should be approaching QoS. Some MPLS providers are almost completely transparent, doing QnQ tunneling to let you trunk between your switches across the WAN, for example, or you may face the provider with routed interfaces and extend your internal routing protocol into the provider network for end-to-end DSCP-based QoS. Way too many possibilities with the available info.
CCNP, CCDP, CCIP