binaryRevelations
Admin Admin Contact Us Contact Us Feedback Feedback Help
Search  
    
  Navigation  
   Home
  Support  
 Help   
   Intro
   Tech Stuff
   Usage
   Troubleshooting
   Contact
   Legal
  Downloads  
   TalkBack Ver 1.6.1
   Core TTS components
   WinFrotz TTS 2002
  Communication  
   Contact Us
   FeedBack

© Copyright
2002 W. Scott Dillman.


 Usage


Settings Menu

Disabled

When the plugin is installed it will show up under the "TTS" area of your Trillian list. As you can see at the left an "smiley" icon will show whether the TTS functions are currently enabled or disabled. By double clicking on the icon you can toggle the TTS engine on or off. This can be convenient if your buddy has decided to paste scads of source code in the client, and you don't particularly want to sit through the boring speech as the engine tries to make sense of it; of course you could also use the hot key to silence the TTS, but we'll get to that later. Below you can see the icon with the TTS functions enabled.

Enabled
Settings Menu

If you right click with the mouse on the TalkBack icon it will bring up the settings menu as shown to the right. From this menu you can:

  • Enable/Disable the TTS settings.
  • Launch the Settings Dialog (more on this later).
  • and Launch this help file.


Settings Dialog

The heart of the program really is the settings dialog which allows you to manage the Jargon/Ignore lists as well as control how the TTS engine sounds and manage events and contacts. This dialog can be launched from the context menu from the main interface by right clicking on the TalkBack icon and then choosing 'TalkBack Settings', or from the standard Trillian plugin preferences config. You can click on each tab to switch between different sections or just use the 'Back/Next' buttons to navigate.

Dictionary Management

Jargon Dictionary

When you first launch the dialog, you will be presented with the Jargon dictionary interface. From this interface, (shown below), you can add words or phrases to the dictionary that the engine will translate and replace when it speaks aloud ( no words will be replaced in the chat window). A good example of this is the term: LOL, which the engine will try to read spelling out the letters. This is probably not what you want, so the dictionary allows you to enter 'LOL' and have it replaced with 'HA HA HA' or 'Laughing out loud', the choice is yours.

Entering new text is easy, and can be done in two ways. You can click on the '<< click here to add new item >>', and a default item will be added to the list that you then can edit in place. You can also add your text to the edit box at the bottom of the dialog and click 'Add'. Again, speech tags can be used here.. The Jargon dictionary has the ability to use regular expressions, both in searches and in formatting ( for those of you not familiar with regular expressions, see the side note ). This allows the parsing functionality to be very powerful; for example in order to have the engine ignore everything in a URL format, but still read aloud the website name, you would do something like this:

[a-zA-Z]+://([a-zA-Z.0-9]+)/?.*

The '( )' in the expression signify a sub-expression and can be referenced in the replace string like this:
$1
This way the URL gets replaced with the string www.something.com, which is easily read by the TTS.
I also set the regular expression field to TRUE and set ignore case to TRUE.
Remember if you have a similar string in your Ignore list, that the ignore list is applied first and would strip out the URL and you would not hear the website spoken.

To save your changes always click 'Ok' when exiting the dialog.

Jargon Interface


Ignore Dictionary

The Ignore dictionary is where you add all the words and phrases you want the TTS engine to ignore. It can be real annoying to have URLs spoken aloud all the time. For example in order to have the engine ignore everything in a URL format I use the following string:

[a-zA-Z]+://[a-zA-Z.?=0-9:!%@+/_\&\-]+

And I set the Regular Expression dropdown list to 'True' for the entry to let the parsing engine know I want the string to be used as a regular expression and not an exact match. Adding entries to the Ignore dictionary is the same as adding entries to the Jargon Dictionary.

Regular Expressions
Regular expressions can be tricky business, but well worth learning because of how powerful they are. To quote the Boost RegEx library Regular expressions are a form of pattern-matching that are often used in text processing. A decent tutorial on Regular expressions can be found here

Here is a quick reference sheet of Regular Expression Meta characters:

Meta Characters

CharacterDefinitionExample

^

The pattern has to appear at the beginning of a string.^cat matches any string that begins with cat

$

The pattern has to appear at the end of a string.cat$ matches any string that ends with cat

.

Matches any character.cat. matches catT and cat2 but not catty

[]

Bracket expression. Matches one of any characters enclosed.gr[ae]y matches gray or grey

[^]

Negates a bracket expression. Matches one of any characters EXCEPT those enclosed.1[^02] matches 13 but not 10 or 12

[-]

Range. Matches any characters within the range.[1-9] matches any single digit EXCEPT 0

?

Preceding item must match one or zero times.colou?r matches color or colour but not colouur

+

Preceding item must match one or more times.be+ matches be or bee but not b

*

Preceding item must match zero or more times.be* matches b or be or beeeeeeeeee

()

Parentheses. Creates a substring or item that metacharacters can be applied toa(bee)?t matches at or abeet but not abet

{n}

Bound. Specifies exact number of times for the preceding item to match.[0-9]{3} matches any three digits

{n,}

Bound. Specifies minimum number of times for the preceding item to match.[0-9]{3,} matches any three or more digits

{n,m}

Bound. Specifies minimum and maximum number of times for the preceding item to match.[0-9]{3,5} matches any three, four, or five digits

|

Alternation. One of the alternatives has to match.July (first|1st|1) will match July 1st but not July 2

POSIX Character Classes

CharacterDefinitionExample

[:alnum:]

alphanumeric character[[:alnum:]]{3} matches any three letters or numbers, like 7Ds

[:alpha:]

alphabetic character, any case[[:alpha:]]{5} matches five alphabetic characters, any case, like aBcDe

[:blank:]

space and tab[[:blank:]]{3,5} matches any three, four, or five spaces and tabs

[:digit:]

digits[[:digit:]]{3,5} matches any three, four, or five digits, like 3, 05, 489

[:lower:]

lowercase alphabetics[[:lower:]] matches a but not A

[:punct:]

punctuation characters[[:punct:]] matches ! or . or , but not a or 3

[:space:]

all whitespace characters, including newline and carriage return[[:space:]] matches any space, tab, newline, or carriage return

[:upper:]

uppercase alphabetics[[:upper:]] matches A but not a

Perl-Style Metacharacters

CharacterDefinitionExample

\b

A word boundary, the spot between word (\w) and non-word (\W) characters/\bfred\b/i matches Fred but not Alfred or Frederick

\B

A non-word boundary/fred\B/i matches Frederick but not Fred

\d

A single digit character/a\db/i matches a2b but not acb

\D

A single non-digit character/a\Db/i matches aCb but not a2b

\n

The newline character. (ASCII 10)/\n/ matches a newline

\r

The carriage return character. (ASCII 13)/\r/ matches a carriage return

\s

A single whitespace character/a\sb/ matches a b but not ab

\S

A single non-whitespace character/a\Sb/ matches a2b but not a b

\t

The tab character. (ASCII 9)/\t/ matches a tab.

\w

A single word character - alphanumeric and underscore/\w/ matches 1 or _ but not ?

\W

A single non-word character/a\Wb/i matches a!b but not a2b

Perl-style format strings treat all characters as literals except '$' and '\' which start placeholder and escape sequences respectively. Placeholder sequences specify that some part of what matched the regular expression should be sent to output as follows:

Perl-Style Format Strings

PlaceholderMeaning

$&

Outputs what matched the whole expression.

$`

Outputs the text between the end of the last match found (or the start of the text if no previous match was found), and the start of the current match..

$'

Outputs all the text following the end of the current match.

$$

Outputs a literal '$'

$n

Outputs what matched the n'th sub-expression.

Any $-placeholder sequence not listed above, results in '$' being treated as a literal. An escape character followed by any character x, outputs that character unless x is one of the escape sequences shown below.

EscapeMeaning

\a

Outputs the bell character: '\a'.

\e

Outputs the ANSI escape character (code point 27).

\f

Outputs a form feed character: '\f'

\n

Outputs a newline character: '\n'.

\r

Outputs a carriage return character: '\r'.

\t

Outputs a tab character: '\t'.

\v

Outputs a vertical tab character: '\v'.

\xDD

Outputs the character whose hexadecimal code point is 0xDD

\x{DDDD}

Outputs the character whose hexadecimal code point is 0xDDDDD

\cX

Outputs the ANSI escape sequence "escape-X".

\D

If D is a decimal digit in the range 1-9, then outputs the text that matched sub-expression D.

\l

Causes the next character to be outputted, to be output in lower case.

\u

Causes the next character to be outputted, to be output in upper case.

\L

Causes all subsequent characters to be output in lower case, until a \E is found.

\U

Causes all subsequent characters to be output in upper case, until a \E is found.

\E

Terminates a \L or \U sequence.


Ignore Interface

Contact Text-To-Speech Settings

This dialog allows you to change the Text-To-Speech engine settings for each contact in your list. You can also right click on a contact to copy or delete it. Copy just copy the text representation of the listing into the clipbord. Delete removes the listing, but it will return when you restart Trillian and the plugin trys to resynch to the active contact list. Delete is mainly there for you to remove entries for contacts that have been removed from the main contact list.

Columns can be clicked on to sort the display and all editing is done in-line. Items marked in black can be edited, blue items can not. It's a good idea to change the 'Real Name' of a contact to something the TTS can easily pronounce. For each contact you can choose: enabled/disabled, voice, voice volume, voice rate, and voice pitch. When you click on a setting a dropdown will appear to allow you to edit.

You can test the voice by clicking on a contackt and then typing some text in the edit box at the bottom of the dialog and clicking on the 'Say' button. If there are no voices listed you may have to install a TTS engine on the system. See Microsoft's speech site here: www.microsoft.com/speech

TTS Settings

Dictionary Import/Export/Merge

This dialog allows you to manage import, export, and merge both the ignore and jargon dictionaries. This makes it easy to backup and save dictionaries as well as share dictionaries with other people.

The two dropdowns let you choose:

  • The operation you wish to execute.
  • The dictionary you wish to run it against.
Export just dumps out the currently chosen dictionary to a file with a cdx extension. Just click the browse button to choose where you want the file to be saved and then click run and the dictionary will be saved.

Replace allows you to replace the dictionary you choose with another dictionary saved elsewhere on you system. If you do this it will over wright your dictionary and you will have no way of retrieving it unless you made a backup using the Export function mentioned above. Make sure this is what you want to do.

Merge allows you to merge another dictionary with your currently loaded dictionary. This can be useful if someone else has created a dictionary that you want to add to yours. When merging a dictionary, the program will normalize the order number and append the entries to the current list order by their number. As always don't forget to click 'ok' when leaving the dialog to commit your changes.

Dictionary File Structures
I would not advise editing the dictionary files by hand, but I know if it were me I will still want to know how to do it. So here it is....

BE SURE TO USE A PLAIN TEXT EDITOR LIKE NOTEPAD, WORD PROCESSORS LIKE MS WORD CAN INSERT UNREADABLE CHARACTER IN THE FILE. DO NOT CUT AND PASTE FROM RICH TEXT APPS LIKE WORD OR EXCEL.

I kept the dictionary file structure incredibly simple. The CDX files are simple text files with five fields of data separated by a tab character. Each line represents a dictionary entry. So for example an entry in the Jargon dictionary might look like this:

LMAO     FALSE     HA HA HA     TRUE     1
The first field is what to look for,the second field tells the parser whether or not to treat the string as a regular expression, the third field is what to replace it with, the fourth field is whether or not the search should be case sensitive, and the fifth field is the order in which to apply the expresson to the chat text.

The third field in an ignore list, must be set to NONE.

The order field is unique, therefore the first order field loaded owns that position and other records with the same order number will be skipped. When importing a CDX file the order numbers will be normalized. So they will retain their order but will be appended to the end of the current set ( if merge is choosen ). If 'replace' is choosen the records will be normalized to start at '1'.

Well there you go.. Hack away..


Import/Export/Merge

Events

In this dialog you can attach TTS output to events in Trillian. Just click the checkbox to enable the event and then click int the column labeled 'format' to enter the text that you want spoken when the event fires. You can use speech tags here as well as use contact tags, at this time there are only two contact tags:

  • %name%
  • %medium%
You can put these tags anywhere in the events format string to have the TTS announce the name and medium of contact that created the event. Not all events have name and medium variables, in this case the word default will be substituted. There is always a 'default' contact listed on the contact manager page, you can change the default contact properties there.

Events

Hot Key

At this time there is only one hotkey to define, and that is to immediately stop speech output and disable TalkBack. After you use the hotkey in a trillian window the TTS can be enabled by double-clicking on the TalkBack icon in the contact list. Trillian supports printable character hotkey combinations, so any character you can see in notepad is a good character to use. Plus you can use any ALT-CTRL-SHIFT combination. I usually use 'CTRL-Z' as it is really easy to hit quickly and does not interfere with anything else.

Import/Export/Merge

Misc

In this tab you can set global settings for the application. Under the TTS section the settings you can change are:

Parse speech tags

This setting will instruct the TTS and the message parser to look for and use speech tags, all SAPI 5.1 speech tags are supported. The only difference is that instead of defining tags in XML form <>text</> you have to define them using brackets []text[/]. Here is a quick summary of the speech tags available:

This may cause problems with text in brackets '[]'.

[PITCH ABSMIDDLE = '-10' MIDDLE = '-10'/]
The scoped/global element PITCH modifies the underlying numerical values of a speech block. 
Relative attribute values, those preceded by a dash (-) or a plus sign (+), increment the 
underlying numerical value by the specified amount. SAPI compliant engines have the option 
of supporting only the guaranteed range of values and behaving as -10 for adjustments below

ABSMIDDLE:
The value can range from –10 to +10. A value of 0 sets a voice to speak at its default pitch. 
A value of –10 sets a voice to speak at three-fourths (or Ύ) of its default pitch. A value of 
+10 sets a voice to speak at four-thirds (or 4/3) of its default pitch. Each increment between 
–10 and +10 is logarithmically distributed such that incrementing/decrementing by 1 is 
multiplying/dividing the pitch by the 24th root of 2 (about 1.03). Values more extreme than –10 
and 10 will be passed to an engine but SAPI 5compliant engines may not support such extremes and 
instead may clip the pitch to the maximum or minimum pitch it supports. Values of –24 and +24 
must lower and raise pitch by 1 octave respectively. All incrementing/decrementing by 1 must 
multiply/divide the pitch by the 24th root of 2. When scoped, this attribute is absolute.
-10 and behaving as +10 for values above +10.

MIDDLE:
The value can range from –10 to +10. A value of 0 sets a voice to speak at its default pitch. 
A value of –10 sets a voice to speak at three-fourths (or Ύ) of its default pitch. A value of 
+10 sets a voice to speak at four-thirds (or 4/3) of its default pitch. Each increment between 
–10 and +10 is logarithmically distributed such that incrementing/decrementing by 1 is 
multiplying/dividing the pitch by the 24th root of 2 (about 1.03). Values more extreme than –10 
and 10 will be passed to an engine but SAPI 5compliant engines may not support such extremes 
and instead may clip the pitch to the maximum or minimum pitch it supports. Values of –24 and 
+24 must lower and raise pitch by 1 octave respectively. All incrementing/decrementing by 1 
must multiply/divide the pitch by the 24th root of 2. When scoped, this attribute is relative.
[/PITCH]

[RATE ABSSPEED ='1' SPEED='1'/]
Set the relative speed adjustment at which words are synthesized.

ABSSPEED:
The value can range from –10 to +10. A value of 0 sets a voice to speak at its default rate. 
A value of –10 sets a voice to speak at one-third (or 1/3) of its default rate. A value of 
+10 sets a voice to speak at 3 times its default rate. Each increment between –10 and +10 is 
logarithmically distributed such that incrementing/decrementing by 1 is multiplying/dividing 
the rate by the 10th root of 3 (about 1.12). Values more extreme than –10 and +10 will be 
passed to an engine, but SAPI 5compliant engines may not support such extremes and instead 
may clip the rate to the maximum or minimum rate it supports. When scoped, this attribute is 
absolute.

SPEED:
The value can range from –10 to +10. A value of 0 sets a voice to speak at its default rate. 
A value of –10 sets a voice to speak at one-third (or 1/3) of its default rate. A value of 
+10 sets a voice to speak at 3 times its default rate. Each increment between –10 and +10 is 
logarithmically distributed such that incrementing/decrementing by 1 is multiplying/dividing 
the rate by the 10th root of 3 (about 1.12). Values more extreme than –10 and +10 will be 
passed to an engine, but SAPI 5compliant engines may not support such extremes and instead 
may clip the rate to the maximum or minimum rate it supports. When scoped, this attribute 
is relative.
[/RATE]
[VOLUME LEVEL='100'/]
The scoped/global elements VOLUME modify the underlying numerical values of a speech block. 
The underlying value can never be below zero or exceed 100. All negative value entries will 
result in zero and all values above 100 will result in 100. VOLUME may also receive an 
absolute value (no '-' or '+' character) of an integer between zero and 100. 

LEVEL:
This specifies the volume as percent of the maximum volume of the current voice. Each voice 
implementation has it’s own maximum volume. This value must between 0 and 100 inclusive. 
Values above 100 or below 0 are clipped to 100 and 0 respectively.
[/VOLUME]
[EMPH]
Places emphasis on the words contained by this element.
[/EMPH]
[PARTOFSP PART='noun|verb|modifier|function|interjection|unknown ']
The part of speech of contained word(s). The PARTOFSP tag is used to force a particular 
pronunciation of a word (for example, the word record as a noun versus the word record as a verb). 

PART:
String name of part of speech. Valid SAPI parts of speech arenoun, verb, modifier, function, 
interjection and unknown. 
[/PARTOFSP]
[SILENCE MSEC='100'/]
Produces silence for a specified number of milliseconds to the output audio stream. 

MSEC:
Number of milliseconds, from zero to 65535, of silence. Value entries that exceed this range 
should be limited to 65535. Value entries that are below this range (negative values) should 
be set to zero. 
[SPELL]
Spells out words letter by letter contained by this element. Note: The engine should not normalize 
the text scoped in the SPELL tag. This includes numbers, words, etc. Words that contain punctuation, 
such as "U.S.A." should spell out the letters as well as the punctuation scoped within the tag. 
[/SPELL]
[PRON SYM]

Pronounces the contained text (possibly empty) according to the provided Unicode string. 

SYM:
String representing a phoneme for a language supported by the voice implementing synthesizing 
speech. Refer to SAPI Phoneme Spec.
[/PRON]
[VOICE OPTIONAL='' REQUIRED='']

Sets which voice implementation is used for synthesis of associated input stream text. The best 
voice implementation given the required and optional attributes will be selected by SAPI. 

OPTIONAL:
The XML parser selects the first voice registered containing all of the specified attributes. A 
string that contains semicolon-delimited sub-strings is used to specify the attributes. The speak 
call will fail if the parser cannot find the required tags. 

REQUIRED:
The XML parser selects the first voice registered containing all of the specified attributes. A string 
that contains semicolon-delimited sub-strings is used to specify the attributes. The speak call will fail
if the parser cannot find the required tags. 
[/VOICE]


Default voice, Default Rate, Default Volume, Default Pitch

These are the defaults that the plugin uses when adding new contacts to the contact manager.

Reset Contacts To Defaults

You can use this to set all your contacts to the default speech settings listed here.

Your TTS

Use this section to enable TalkBack to speak what you type as well as your contact. You can also set your voice settings here.

Show Tooltips

This setting enables tooltips in the settings dialog to try to explain what each feature does. I strongly encourage you to leave this setting on until you understand the interface, but after a while the popups can get pretty annoying, so come here to turn them off.

Annonce at Startup

This just announces the loading of the plugin. Think of it as an audio spash screen.

Contact Info

Contact Info

The contact dialog is just a place where you can get info on how to reach me and a place for you to visit some of the sites that offer source code, libraries, and examples that made this application possible. You can also click on the 'Credits' button to see a list of credits.

The dialog also contains a button for sending donations to help in the development of this plugin, if that is something you wish to do. Since this plugin if freeware I have a limited amount of time to work on it. Please feel free to send bug reports and feature requests to me directly and I will do my best to work on them.

Contact Info
 

 
Message Center


Cool Links
customize.org
deviantART
AT&T Natural Voices


Cool Stuff
Ver 1.6 D/L


You are working in

Check out these
great sites:

Trillian Pro
deviantART
 
With a little help
from the following:

EditPlus
HTML Validator
footer[Downloads][Help][Feedback][Contact][Home]footer
This website and all graphics contained within are © binaryRevelations Interactive, 2000.
All rights reserved.
No part of this site may be copied without prior written permission of the webmaster.