Skip to main content



Text-To-Speech general Information.Freeswitch currently supports several TTS options.

The complete list of TTS modules is available on the modules list page.

Click here to expand Table of Contents

Javascript Implementation


Via mod_shout using online TTS

Using mod_shout allows you to stream audio from an URL, this allows you to utilize high quality online TTS services by writing out custom GET requests. Since an Internet transfer occurs on each TTS transaction this approach might not be desirable in a production environment.

Bing Translate

Register for an API Key (appid): and replace the 'YOUR-KEY-HERE' in the GET url below. For more information see

IVR Example

<include> <!-- demo IVR, Main Menu --> <!-- Other "flite" voices slt (female voice - best), rms (male voice), awb (male voice), kal (male voice) --> <menu name="ivr_danols_after_hours" tts-engine="flite" tts-voice="slt" max-failures="3" max-timeouts="3" confirm-macro="" confirm-key="" confirm-attempts="3" timeout="10000" inter-digit-timeout="2000" digit-len="1" <!-- say using online TTS --> greet-long="shout://" <!-- or say using built in flite --> greet-short="say:Thank+you+for+calling+Danols." invalid-sound="say:Invalid selection" exit-sound="say:Goodby and thank you for calling Danols.">

&lt;!-- The following are the definitions for the digits the user dials -->
&lt;entry action="menu-exec-app" digits="1" param="transfer 1000 XML default"/>


Google Translate

You probably need to agree with Google API TOS, located at..? Please note google will fail to convert if the input text is to long so test url in browser first; Bing appears to be more lenient in this regard.

<extension name="Free_Google_Text_To_Speech"> <condition field="destination_number" expression="^2115$"> <action application="answer" data=""/> <action application="playback" data="shout://"/> </condition> </extension>


According to [1], google has done some changes. The link presented in [1] works for me(gets played back by freeswitch) at this point in time. However, each text input to be played is matched with that "tk" value.LATER EDIT 1:After some more searching I've found the kind of links that work:shout:// EDIT 2:Bing appId is deprecated, as stated in [2]. One should use the azure clientID and clientSecret to query for a token, used in the body of the request. [1][2] Posted by stefan.mititelu at Aug 05, 2016 06:41