- speaks provided text

Text-to-Speech functions
(AmiBroker 4.90)

SYNTAX Say(''text'', purge = True)
FUNCTION Say() function speaks user-specified text (Windows XP, on lower-end Windows you need to install Microsoft Speech API, voice settings are in Windows Control Panel)

New in 5.20 - 'purge' parameter

when purge is set to True (the default) - any call to Say() purges all previous speak requests (queued or in-progress) and speaks specified text immediatelly.

when purge is set to False - speak request is queued and will be spoken right after previous requests are done.

Also now Say() function returns the NUMERIC value that indicates how many speak requests are pending
0 - ERROR - speech engine not installed or not working properly
1 - currently requested text is spoken now (queue was empty)
2 or more - queue was not empty and previous request(s) will be completed prior to speaking currently specified text

CAVEAT: Creative SoundBlaster X-Fi cards have a driver problems on Windows 7 and Windows Vista causing memory leak in audiodg.exe process (Windows Audio) when using audio output (esp. Say command). To workaround this X-Fi driver problem, do the following:

  1. right click the speaker icon in your taskbar
  2. select 'Playback Devices'
  3. right click the Speakers output
  4. select 'Properties'
  5. click on the 'Sound Blaster' tab
  6. check 'Disable Sound Blaster Enhancements' box
EXAMPLE // simple example
Say("Testing text to speech engine");

// helpful helper functions

function SayOnce( text )
if( StaticVarGetText("lastsaidtext") != text )
Say( text );
StaticVarSetText("lastsaidtext", text );

function SayNotTooOften( text, Minperiod )
   Lastelapsed =
Nz( StaticVarGet("lastsaytime") );

if( elapsed - Lastelapsed > Minperiod )
StaticVarSet("lastsaytime", elapsed );
Say( text );


SayOnce("Testing "+Name() );
"Say not more often than every 60 seconds", 60 );  



The Say function is used in the following formulas in AFL on-line library:

More information:

See updated/extended version on-line.