Čeština   Deutsch   Español   Italiano   Français   Polski   Português   Türk
Български   Русский   Український   عربى   中國人  

Text annotations to change voices while reading aloud in @Voice


Introduction and demo
Define voice aliases
Get voice definitions
Enter voice change instructions
Controlling voice speed, pitch and volume
Silencing any text
Finish reading aloud early
Inserting pauses in reading
Possible uses

Introduction and demo

When reading aloud a text, @Voice, if used with the paid Premium License, may change the voices, when encountering a special annotations. These annotations have a general format as follows:

[[@instruction;optional comment}}

The annotations may be visible or hidden on @Voice text screen, but are not read aloud. Instead, if the option for processing these annotations is on, the voices are changed as instructed, otherwise these annotations are silently ignored. The semicolon ; and any text after it is optional and ignored, so you may enter there any comment you want. The two closing curly braces }} are mandatory.

The voice changes, once entered into the text, are always active. There used to be an option box to deactivate them and read with the default voice only, but I removed that option. Also the voice changes work now also without @Voice Premium License.

Here is a sample text annotated with voice changes, and a recording of @Voice reading it with and without voice changes:

[[@+Rachel=com.google.android.tts,en_GB,en-gb-x-gbg-network; any comment}}
[[@+Angel=com.google.android.tts, es_ES, es-es-x-eed-local}}

Voice changes test. This sentence without any annotations is read in the default
 English voice,pre-selected by the user under @Voice "Change voice or language" 

[[@Rachel}}This will be read in Google network female voice, defined in the first 
line of the sample text.
[[@Olga#s=1.5}}And this one will be read in RHVoice female English voice, at 1.5x 
speed. This voice is pretty boring... Now let's try something in Spanish.

[[@Angel}}Hola amigo, esta noticia es realmente espléndida, y lo de agregar el 
control de voz y velocidad es super genial!

[[@default; any optional comment here}}
Now back to the default English voice I had selected in @Voice app, when recording
this sample.
With voice changes:
Without voice changes:
Another fun example (video clip): a Greek language lesson that one of our users prepares for himself.

Define voice aliases

The instructions defining voices have the following format:

[[@+Alias=engine.package.name,language_code,voice-name[;optional comment]}}

Where Alias is a name you give to this voice yourself, language_code is the ISO language code (e.g. en_US), and voice-name  is the original name under which the selected TTS engine knows this voice. Examples:

[[@+Rachel=com.google.android.tts,en_GB,en-gb-x-gbg-network; any comment}}
[[@+Greg_3=com.google.android.tts,en_US,en-us-x-tpd-local; optional comment}}

Beginning with version 23.4.12 of @Voice, the voice definitions can also optionally contain the # character followed by voice control instructions to set the default pitch, speed and volume. Example:

[[@+Rachel=com.google.android.tts,en_GB,en-gb-x-gbg-network#s=1.25,p=1.2,v=0.75; any comment}}

Voice names or aliases may contain only English alphabet letters, numbers and the underscore _ character, and must start from a letter.

For more information on these parameters see section "Controlling voice speed, pitch and volume" below. Please note that the voice alias instructions DO NOT CHANGE the voice that is used for reading aloud. They should be defined just once, anywhere in the text (although the most logical place for them seems to be at the very beginning of the text). They define voice NAMES, which can be used later to change voices, as described in the "Enter voice change instructions" section

Get voice definitions

In @Voice app, press the round button with up arrow near bottom-right, then press the “Change voice or language” button. Select the language and voice for which you need a definition, then press the "Voice definitions for annotations" button. Enter the voice alias you would like to use, then look below, where the full definition is spelled out. Press "Copy definition" button, then switch to a text editing app that you use for entering voice annotations and paste this line of code near the start of readable text.

Enter voice change instructions

When you have all the voices defined and inserted in your text, you may start adding instructions to change the voices where they are need. The instruction to change the voice is simply:


 for example for the voices defined above it would be



These instructions can be also used to change the language, for example if one sentence in the text is in English and another in Spanish, you could insert voice annotations to read them with the English and Spanish TTS voices respectively.

Controlling voice speed, pitch and volume

These instructions look like


If used without the voice name, this instruction restores the default TTS voice. The number is always a real number between the allowed minimum and maximum value, and the meaning is as follows:

s - speed of reading aloud, values from 0.25 to 4

p - voice pitch, falues from 0.25 to 3

v - volume, values from 0 to 1, e.g. volume 0.5 is approximately half of normal volume.

The instructions of s, p and v are all optional, if you omit any of them, it will be set to the default value of 1. Example:


The above instruction tells the app to use the voice named "Rachel" and to set the reading speed to be 1.25 faster than normal. The omitted parameters p for pitch and v for volume will be set to their default values.

Silencing any text

Starting with @Voice version 27.8.6, the parameters after the # sign can optionally contain q or  quiet, to skip this text when reading aloud. In its simplest form the instruction to skip reading aloud would be:

...any text here, may be multiple paragraphs
This text will not be read aloud...

The above instruction will resume reading aloud in the default voice,
or it can be any voice change instruction without the
q or quiet parameter.

The q or  quiet parameter may have an optional text to say instead of the silenced fragments, embedded into double quotes, for example:

[[@#quiet"Skipping some text"}}
Text that won't be read.
Instead the app will say "Skipping some text"
More text to read aloud normally.

Finish reading aloud early

Starting from @Voice ver. 28.1.1 you may insert into the text one of the following commands to finish reading early, and go to the next article on the reading list, if available:


[[@#finish"Optional text to say"}}

Inserting pauses in reading

There is also a very simple pause instruction, to pause reading for any number of milliseconds. The format is


for example


means pause reading for 2000 ms (2 seconds).

Possible uses

Create audio-novelas with specific voices for each character...

Create foreign language lessons for yourself or others, with explanations in your native language and foreign language text spoken in multiple native female and male voices, possibly with different accents, different speeds...

What else? Use your imagination... Have fun!