First, if the three sites connect to the data center over WAN circuits with any appreciable latency, layer-2 connections are not a very good idea. Layer-2 must send all the broadcasts across the layer-2 links, and this can degrade performance and eat up expensive WAN bandwidth.
Sending the VoIP over the layer-2 link will force it to compete with the broadcast and link-local traffic inherent in a layer-2 connection, so you may not always have 3 Mb for VoIP as you envision.
The proper way to separate classes of traffic and guarantee bandwidth is with QoS.
You are going to need a router on each end of the link if you use GRE. In that case, you should use layer-3 links. Doing this will allow you to use QoS to mark priority traffic and guarantee bandwidth for VoIP. You could also have a lower-priority class of traffic for things like backups and replication which would normally hog bandwidth, starving more immediate, normal user traffic. When the higher-priority classes are not using their bandwidth, the lower-priority class(es) can use that bandwidth.