$dialer.setTtsConfig
This method overrides the TTS provider settings of the phone channel used for the current call.
The new settings apply only to the current session and don’t affect the global channel settings. They are used until overridden once again or until the call has finished.
Syntax
The method accepts an object with the new TTS settings. It is not necessary to pass all provider settings every time: you only need to specify the ones that should be overridden.
// Google provider settings
$dialer.setTtsConfig({
lang: "tr-TR",
voice: "tr-TR-Wavenet-E",
});
- If you specify object properties not supported by the provider, they will be ignored.
- If you pass something other than an object (like a string), an error will be raised in the script.
The method returns an object with the new provider settings.
You can get the current settings during a call using the $dialer.getTtsConfig
method.
Provider settings
Google
-
lang
- Synthesized speech language.
-
voice
- Speech synthesis voice.
tipSee the complete list of languages and voices for synthesis in the Google documentation. -
- Voice pitch.
Takes an integer or float value from
-20
to20
, where-20
means a 20-halftone decrease from the original tone, and20
means the same increase.
- Voice pitch.
Takes an integer or float value from
-
- Synthesized speech rate.
Takes an integer or float value from
0.25
to4
, where1
is the normal voice speed.
- Synthesized speech rate.
Takes an integer or float value from
-
- Volume increase in dB relative to the normal voice volume.
Takes an integer or float value from
-96
to16
. When set to6
, the volume is approximately twice as high as normal.
- Volume increase in dB relative to the normal voice volume.
Takes an integer or float value from
Azure
-
language
- Synthesized speech language.
-
voiceName
- Speech synthesis voice.
tipSee the complete list of languages and voices for synthesis in the Azure documentation. -
sampleRate
- Sample rate.
How to use
Some providers, such as Google and Azure, support male as well as female voices for most languages. You can change the bot voice from the script based on some user traits (like their gender or age) or if they want so.
state: SwitchGender
q!: * switch gender *
script:
var provider = $dialer.getAsrProvider(); # Get the current provider name
if (provider === "google") {
var voice = $dialer.getTtsConfig().voice; # Get the current voice
$temp.isMaleVoice = voice.endsWith("B") || voice.endsWith("D"); # Male voices end with B and D
var newVoiceLetter = (isMaleVoice ? ["A", "C"] : ["B", "D"])[$reactions.random(2)];
$dialer.setTtsConfig({ voice: "en-US-Wavenet-" + newVoiceLetter });
} else {
# For other providers, the properties and values to be overridden may be different
}
a: I am now speaking a {{$temp.isMaleVoice ? "female" : "male"}} voice.