I have not looked specifically at how 3CX builds the "queue position" prompt, but I believe 3CX concatenates several wav files together to create one prompt. Depending on how your customer wants to change the prompt, it may be possible to simply change one or more of the wav files it uses to build the prompt. Keep in mind, however, that the "voice" will not match unless you swap ALL the wav files used to build this specific prompt, and could impact other prompts in the system.
Perhaps you could add the additional "waiting" prompt into your on-hold music for the queue? Injecting a new prompt in the middle of a call waiting in a queue is something I have never tried. I have, however, injected periodic "beeps" into an ACTIVE call denoting that the call is being recorded. Whether we could do something similar with a call waiting in a queue is unknown. This is not something you can do natively in 3CX. It would require a custom service that utilizes the 3CX Call Control API.