i managed this in b&i for the french militia; you assign one item to the head, trousers, and feet in the troops module file, then assign a pool of items to the torso. In the scripts file you add a check to the script that triggers on agent spawning, this will check for a specific item and then you can execute some code that will replace the items in the other slots, like this:
(try_for_range_backwards,":equipment_slot",ek_item_0,ek_gloves),
(agent_get_item_slot, ":item_id", ":agent_no", ":equipment_slot"),
(gt,":item_id",-1), # even have an item there?
(try_begin),
(eq, ":item_id", "itm_fr_civ_black"),
(agent_unequip_item, ":agent_no", "itm_fr_civ_hat_green", ek_head),
(agent_unequip_item, ":agent_no", "itm_fr_civ_trousers_green", ek_foot),
(agent_equip_item, ":agent_no", "itm_fr_civ_hat_black", ek_head),
(agent_equip_item, ":agent_no", "itm_fr_civ_trousers_brown", ek_foot),
(else_try),
(eq, ":item_id", "itm_fr_civ_blue_01"),
(agent_unequip_item, ":agent_no", "itm_fr_civ_hat_green", ek_head),
(agent_unequip_item, ":agent_no", "itm_fr_civ_trousers_green", ek_foot),
(agent_equip_item, ":agent_no", "itm_fr_civ_hat_blue_alt", ek_head),
(agent_equip_item, ":agent_no", "itm_fr_civ_trousers_skyblue", ek_foot),
(else_try),
as for the voices, use the same principle that applies to the highlanders and king's german legion in NW (i used this for the cantis in b&i, something you're trying to achieve too), but rather than point the script to the highlander voice tuple, point it to the normal female one and have it trigger only on the canti troop.