Synthesize Speech¶
A recording from text.
Type a line, pick a voice and a language, and get a clip you can bake like any other.
This is how a project gets dialogue before it has actors. It is also how it gets the 100 placeholder lines nobody wants to record twice, and how a line that changed in the script gets a new take without booking anything.
A Synthesized Line Bakes Like a Real One
Nothing treats it differently. It is baked and performed exactly as a recording of a person would be. The voices in Meet FaceCue: Lip Sync & Facial Performance for Unity are synthesized.
Input¶
Single synthesizes one thing. Batch works through a source of many.
| Mode | What it reads |
|---|---|
| Plain Text | A line you type into the window |
| TXT | One .txt file, spoken as written |
| CSV | One row, chosen by its clip_id |
Batch takes either a folder of .txt files, skipping ones that already have audio, or a CSV index, one row per clip as clip_id, an optional language, and the text. The CSV is the better of the two for real work: a whole scene lives in one file, the per-row language column means a multilingual scene needs no separate passes, and it is the same shape the transcript tools read and write.
Language¶
Pick one, or use Auto to detect it from the text.
The language decides how the text is read aloud, so it matters more than it looks. The same letters are pronounced differently in different languages, and a line tagged wrongly is not a small error.
Speech generation covers a smaller set of languages than recognition does. Check yours in Language Support.
One Line, More Than One Language¶
The language you pick is the line's base. Mark a stretch of the text as another language and that stretch is spoken in it.
They are the same language spans the baker reads, written the same way, so a line marked up once carries through both. Synthesis speaks each stretch in its own language and joins the takes back into one clip, every stretch handled as the language it is. A French sentence inside an English line is generated as French, not as an English speaker reading French.
Give a Stretch Enough to Work With
A very short span generates poorly, because there is not much for the model to establish a voice and an accent from. FaceCue says so in the console when it sees one, and names the line.
A word or two of another language is usually better handled as its own clip than as a span inside a longer line.
Voice¶
Whichever voice is selected in Registered Voices: one you made yourself, or Male Sample, the voice FaceCue comes with.
Male Sample Is for Trying Things Out
It is there so you can hear the tools working before you have a voice of your own. It is not meant to voice the characters of a finished game. While it is selected the Voice section says so, and Synthesize, Convert and the Cue Baker ask before using it, until you tell them not to. Create your characters' own voices from recordings of the people who will voice them.
Exaggeration controls how much character the delivery has. Low is flat and even, which is what you want for a narrator or for placeholder lines you do not want distracting anyone. Higher is more performed, with more movement in the pitch and more contrast between stressed and unstressed words. It is the one control here worth experimenting with, because it changes the read more than anything else does.
Language Coach¶
A voice speaks its own language like a native, because that is what it learned from. Ask it for a language that is not its own and it carries its accent across, the way a person does: vowels drift toward the ones it knows, and a sound its own language lacks comes out as the nearest one it has. A good share of the time that is exactly right, a character speaking a second language. When it is not, a coach fixes it.
Language Coach helps the voice pronounce a language that is not its own the way a native speaker would, while the character keeps their own voice and way of talking. It applies to any line, or any stretch of a line, in a language the voice does not speak natively, so a French phrase inside an English line is coached and the English around it is left alone.
| Setting | What the character gets |
|---|---|
| None | Every language spoken on its own, accent and all |
| Standard | Coaching FaceCue provides for each language: native pronunciation and a little of the native pace, with no voice of its own, so the character keeps theirs |
| Voice | One of your own registered voices, per language, as the coach |
Standard covers every language speech generation supports, and needs nothing from you.
A Voice Knows Its Own Language¶
Coaching only makes sense where a voice is speaking a language that is not its own, so every voice records its native language. It is set when the voice is created, and can be changed afterwards in Registered Voices. A stretch in one of the voice's native languages is never coached.
A voice whose native language is Not Set is never coached at all, because there is no telling which stretches are foreign to it. Voices made before this setting existed start out that way. Pick one while Language Coach is on and the Voice section warns you, with a Fix button that opens Registered Voices at that voice. The Cue Baker's Generate Audio does the same. Setting it once is all it takes.
Coaching With Your Own Voices¶
Under Voice, the coach for each language is one of your own registered voices, a native speaker of that language. Coaching sets how much of that coach the character takes on:
| Coaching | What the character takes on |
|---|---|
| Light | The coach's pronunciation and a little of their pace. The character keeps their own delivery. This is the same depth the Standard coach works at |
| Firm | The coach's pronunciation, rhythm and pace, and a little of their delivery |
| Full | The coach's whole delivery, still in the character's voice. The most native, and the transfer is large enough that if the two deliver lines very differently, it can sound like a different person |
Which voice coaches which language is set in Language Coaches, in the Synthesize tab's settings pane. Each language that has a native speaker among your registered voices gets a row, offering only those voices. Until you pick one, a voice whose main language it is coaches it ahead of one that is only also native in it. A language with no such voice falls back to the Standard coach, and the pane and the Voice section both say so. To coach it with a voice of your own, create one from a native speaker and set its native language.
The Status Line Says What Happened
You cannot always hear whether a stretch was coached, so after every take the status line names the languages that were coached and by whom, and any that had no coach. The same record is written into the clip itself, beside its language and seed.
The Cue Baker's Generate Audio uses the same Language Coach and Coaching, and the same coaches.
Numbers & Punctuation¶
Text is normalised before it is spoken, and those settings belong to the project, not to this window. 1995 becomes words according to a rule the Cue Baker reads from the same file, so a line you synthesize and a line you bake agree on what a number sounds like.
That is why the setting is mirrored here instead of duplicated. Editing it in either window edits one file. See The Settings Pane.
Long Lines¶
A line longer than the model can speak in one go is split into several takes and joined back together.
It splits at natural breaks in the text, so you can paste a paragraph in and get one clip out.
Output¶
Output Beside Source writes the clip next to the .txt it came from. Turn it off and everything goes to the output folder instead.
Naming is automatic unless you take it over: a single take uses the file name you give it, or auto-names from the text, the .txt filename, or the clip id. Auto-naming matters more than it sounds, because the name is what pairs a clip with its cues later, so a batch named from its clip ids drops straight into a bake and a registry without renaming anything.
When a name is already taken you can Skip, which keeps the existing file and makes nothing, Overwrite, which replaces it, or Ask each time. Skip is the safe one for a batch you are re-running.
A single take has a fourth choice, Keep & Iterate, which keeps the existing file and saves the new take beside it under a numbered name, so you can work through several reads of a line and compare them. A batch does without it, because a numbered copy would pair with nothing. Single takes and batches each remember their own choice.
Then Bake It¶
The Results row carries the same routes the baker's does: reveal the clip in the Project window or on disk, and take it onward.
You can also skip the trip entirely. The Cue Baker can generate a line and bake it in one action, using the same voices and the same settings, which is the shorter path when you are producing a clip specifically to bake it.