Talestreamer is HTML for voice.

Are you building an Alexa skill or a Google Action using NodeJS? Making your skill sound awesome with Talestreamer is an easy 3 step process. Learn more about our Alexa and Actions on Google integration!

Table of Contents

What Talestreamer Can Do

Talestreamer is a cloud-based service that generates sound as output given an input document. Talestreamer’s output is optimized for Alexa, Google Assistant, and other voicebot ecosystems. Talestreamer input documents are XML. Let’s start with an example:

This input document tells Talestreamer to speak the words “Welcome to Talestreamer” in Talestreamer’s default voice (Amy from Amazon Polly). You can paste this document into the Talestreamer Composer and hit the play button to hear the response. You can also download the response and use it directly in your voicebot. Talestreamer reads this input document, calls Amazon Polly to synthesize speech, adjusts the response volume to work with voicebots, and converts Polly’s response a common voicebot audio format.

Talestreamer takes the grunt work out of this simple task. Taking the grunt work out of creating great sounding audio interfaces for voicebots is Talestreamer’s mission in life.

Voice Styling

Let’s look at another way Talestreamer helps you make great sounding audio interfaces: by controlling the style of the response.

This input document speaks the same words as before, but in a different style, using the voice of Brian from Amazon Polly. Talestreamer documents separate what is presented (content description) from how it is presented (content styling), a foundational design approach on the web. TSML documents represent styling information, including what voice to use, using Talestreamer Stylesheets (TSSS) syntax in the style attribute.

Talestreamer gives you access to all of the Amazon Polly voices and languages.

Incorporating Human Voices and Sound Effects

Talestreamer also helps you incorporate human voices and sound effects into your audio interface. Talestreamer can read MP3 audio from any URL, automatically adjust its volume to work with Alexa or Google Assistant, and convert it into their format.

Background Sound and Music

Talestreamer helps you add background audio to your stream.

Talestreamer plays the background sound you specify until the foreground completes, and loops the background sound if it is shorter than the foreground sound.

Composing a Response

You can combine all of these capabilities in a single response.

You can use TSML to add structure to your response, and then style different sections of the document differently using TSSS. When you do this, Talestreamer makes multiple requests to Amazon Polly, loads any audio resources you specified, normalizes volume, combines them all together, and converts the result to Alexa’s or Google Assistant’s audio format.

Separating Style From Content

You can also separate style from content using stylesheets.

If you do use the style style, you can then change your style independent of your content. For example, you could choose new background sound, or a new voice for your skill, without changing any of your code.

Advanced Topics

Talestreamer also supports the following advanced features:

  • foreground and background volume
  • trimming audio files
  • Pitch and rate of synthesized voices
  • Raw SSML support

For these topics and others, view our reference documentation.


Talestreamer generates rich audio for your skill in real time as it is needed. The best approach to using Talestreamer is to call Talestreamer from your skill. If you are building an Alexa skill or a Google Action using Javascript, please follow our integration guide for Alexa or Actions on Google.

Alternative Integration Approach – Using Files

When you can’t call Talestreamer in real time, an alternative is to store Talestreamer audio files in AWS S3 and reference them from your skill’s SSML. It’s fast, cheap, and easy to use S3-hosted files in Alexa skills and Google Assistant agents. To use this approach, do the one-time setup process now, and the audio upload process each time you want a new sound.

One-Time Setup

  1. Create an AWS Account
  2. Create an S3 bucket to store your Talestreamer files in. We’ll use talestreamer.example.com as our bucket name below.

Audio Upload

  1. Compose and test the sound using Talestreamer Composer.
  2. Download the sound. By default, it will be called talestreamer.mp3.
  3. Rename the sound to your desired name, such as example.mp3.
  4. Upload the sound to your S3 bucket.
  5. Make sure you choose to make the file world-readable when you upload it.
  6. Use your sound from your skill or agent with the following snippet:
    <audio src="https://s3.amazonaws.com/talestreamer.example.com/example.mp3"/>


Side By Side Comparison of Talestreamer and Plain Text To Speech

Side By Side Comparison, With an External Stylesheet

Comparing Amazon Polly and Google Cloud Text To Speech Voices

A Scene from The Haunted Lighthouse (A Story from The Magic Door)

Reserving a Ride in a Ride Sharing Skill

A Cave, With Sound Effects and Voices

A Skit, Featuring Matthew, With Background From PartnersInRhyme.com


Talestreamer Markup Language (TSML)

Talestreamer Stylesheets (TSSS)


Our API is documented using OpenAPI and published on Swagger Hub. You can learn more or try it out there.

Client Libraries

If your Alexa skill uses the Alexa SDK for Node.JS, or your Google Action uses the Actions on Google SDK for Node.JS, you can start using Talestreamer in 4 steps that take about 3 minutes!

Get started with:
Alexa SDK Actions on Google SDK

If you use a different SDK, contact us to request support, or use the REST API.


How do I use SSML with Talestreamer?
You can put an SSML speak tag in any span or stream tag.

Where can I get sounds that work with Talestreamer?