What do you need help with?
Question
Installation method
Manual installation / GitHub
Issue area
Character Setup
Impact
Minor - small issue or improvement
Unreal Engine version
5.7.4
Convai Unreal Engine Plugin version
4.0.0-beta.21
Project setup
Blueprint and C++
Target platform
Windows build
Where does it happen?
Not applicable
Short summary
Change voice for character upon selecting MetaHuman
What happened?
I’m loading all created characters as a list in a menu. The user can choose one as a scenario. Then the user can select a MetaHuman to run the scenario with.
I want to be able to set a voice for each available MetaHuman in my app and switch to it independent of the selected character/scenario.
The app will possible be used on multiple headset simultaniously, each with the possibility to choose a different MetaHuman with corresponding voice.
Is this at all possible?
What did you expect?
I’m hoping it is possible to set a character’s speaking voice for each session that starts.
I checked the relevant documentation, resources, and similar forum posts before posting.
on
I confirm that I did not include API keys, tokens, passwords, secrets, private character data, private conversation logs, or customer data.
on
Yes, this is fully supported through the plugin’s Blueprint nodes:
- Convai Get Available Voices: fetches the list of available voices and their codes. You can filter by voice provider, language, and gender. A handy trick: run it once, print the results to the log, and keep the codes you care about. The list rarely changes, so you don’t need to fetch it every time.
- Convai Update Character: sets the voice on your character by passing the voice code into New Voice. Tip: leave the other fields (name, backstory, language) as empty strings and they’ll stay untouched, so you can update just the voice.
- Convai Get Character Details: returns the character’s currently active voice (voice_type), useful for checking what’s applied or building a voice-picker UI.
One thing to keep in mind: the voice is stored on the character on Convai’s servers. If the character is already loaded in your level when you update it, re-load it call stop session then start session again on the character.
Hope that helps!
Hi Mohamed,
Thanks for the reply. I understood this from the documentation, but the point that it stores the change on the ConvAI character, is why I’m posted this question, because when multiple devices choose a different voice for a character, it will change it multiple time, creating the issue that a user doens’t get the voice it selected, because it was overwritten by another.
So, for my application I would like to be able to use a voice selected during a session for each device/user.
My app is a training app, where multiple headsets will be using the same characters. I was hoping to be able choose a voice for each session on each device.
Any options for that?
I could also go with duplicating the characters for each voice I want to use manually, or upgrading my subscription tier and use the API to do it. But I think it will clutter the dashboard very quickly, unless we would be able to use something like Collections to organize the duplicates?
Hi Marco, one thing you can do for now is right before the connection starts you can update the voice, once a session with a character is started voice can’t be changed even if it was changed via website or other devices.
You can further validate that the correct voice was loaded by using the Convai Get Character Details function right after the connection is made to ensure it is equal to the one chosen and if not, we run stop session function on the chatbot component, then delay for a random short amount of time, update the voice, then start session.