Skip to content

Say Node

The say node is used for converting text into audio using synthetic voices.

When you click on a say node you will be presented with three different text fields. These textfields will be read out by a synthetic voice whenever the editor flow runs through the say node. They are used for main text, resume and repeat. In the Character dropdown menu you can choose which character voice you want the say node to use and under that is a button which will take you to the characters tab where you can choose new character voices.

Say Node
Main text field When the Say node is triggered it will read out whatever text you have written in it.
Resume text field When a user returns to a project after exiting it, this text will be read.
Repeat text field If the platform cannot recognize what the user is saying it will read the repeat text.
Character dropdown Select which character you want the say node to use when reading the text.

Play audio

To play an audio clip in your project:

  1. Upload the media clip to the media tab. break

  2. Check what the slug is of the uploaded media file. This is used to identify the clip. In this case it is 19_sash_reverb

  3. Create a say-node and add an sfx-tag: %(sfx:19_sash_reverb)% break

Inserting tags

Use the insert tag dropdown to make adding tags easier. Tags will be inserted at the last cursor location.

insert tag

Audio tags

Audio tags can be written out directly in Say nodes, and they can be used in Say-, Resume- and Repeat fields.

To play an audio clip, put the name of the audio after the sfx tag. For example this will play the audio clip named fanfare:

%(sfx:fanfare)%

To stop playing an audio clip. Use the stop tag instead of the sfx tag.

%(stop:fanfare)%

Use the stopall tag to stop all audio that is currently playing.

%(stopall)%

Properties

It is also possible to add properties to the sfx tag to control the audio playback.

Property Name Description Syntax
Volume The volume of the audio clip %(sfx:MySound,v=0.5)%
Fade In The fade-in time of the audio clip %(sfx:MySound,fi=2)%
Fade Out The fade-out time of the audio clip %(sfx:MySound,fo=2)%

%(sfx:fanfare, v=0.5, fi=2, fo=2)%

Read more about sfx tag properties here: Audio.

Character voices

If you want to use more than one character per say node, you can use the voicechar tag which lets you switch to another character in the middle of a say node. All text after the voicechar tag will be read in the stated characters voice. Use the voice:reset tag to go back to the deafult voice.

Use this tag to change character in a say node.

%(voicechar: Character)%

Use this tag to reset the voice back to the default.

%(voice:RESET)%

voicechar

Break tags

Break tags are used for adjusting the timing of breaks between words and audio. Break tags are part of a speech synthesis markup language, called SSML. You can use any number between 0 and 15. Fractional numbers are also supported.

The break tag syntax is written like this.

<break time="2s"/>

This will create a 2 second pause. You can also use the shorter command <br> to create a 1 second pause.

Note that, if you for example want to play an 8 second long audio clip in the middle of a text without them overlapping, you need to add a break tag that is also 8 seconds long or else the audio and the text will be played at the same time.

The length of a break is 10 seconds. If you need a longer break you can combine multiple break tags.

break

Play audio and voice without overlapping

The default behavior is that sound effects are overlayed on the synthetic voice.

It is also possible to play the audio if you don't want them to overlap but it takes a little more effort. You need to know how long your audio clip is and then combine sfx and break tags to get the correct behavior

Let's say you uploaded an audio clip that is 25 seconds long have the slug long-audio1. To play this without any interruptions you can do like this:

%(sfx:long-audio1)% <break time="10s"/><break time="10s"/><break time="5s"/>

Variables

You can also use variables in say nodes. If you enclose the variable in {curly brackets} the say node will read out the value of the variable instead of the variable name.

coinamount