1.9.1 • Published 3 years ago

speechmarkdown-amzn-polly-js v1.9.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

TypeScript version Node.js version MIT

speechmarkdown-amzn-polly-js

This project adds speechmarkdown support for Amazon Polly, built on top of speechmarkdown-js

Initiated the migration of polly-only features since the project seemed to be dormant in the original git repository. Pull Request

Includes XML escaping by Garcia Guillaume Pull Request

Differences

Some tags from the original speechmarkdown-js library has been disabled due to the nature of how ssml is used in amazon polly.

  • Removal of voice tag Voice is specified separately in the api call. Hence this solution is only for converting speechmarkdown to ssml, and assumes that the user is sure how the generated ssml will be used with a valid voice id.

Amazon Polly Neural Voices

MD support

Neural Only

  • newscaster (section)

Standard Only

  • emphasis
  • pitch
  • timbre
  • whisper

Both Standard and Neural

  • address
  • break (time)
  • break (strength)
  • cardinal
  • characters / chars
  • date
  • digits
  • drc
  • expletive / bleep
  • fraction
  • ipa
  • lang
  • lang (section)
  • mark
  • number
  • ordinal
  • telephone / phone
  • rate
  • sub
  • time
  • unit
  • volume / vol

Unsupported

  • breath
  • auto-breath
  • x-sampa
  • phonation

Quick start

SSML - Amazon Polly

Convert Speech Markdown to SSML for Amazon Alexa

const smd = require('speechmarkdown-polly-js');

const markdown = `Sample [3s] speech [250ms] markdown`;
const options = {
    platform: 'amazon-polly'
};

const speech = new smd.SpeechMarkdown();
const ssml = speech.toSSML(markdown, options);

The resulting SSML is:

<speak>
Sample <break time="3s"/> speech <break time="250ms"/> markdown
</speak>

SSML - Amazon Polly Neural

Convert Speech Markdown to SSML for Amazon Alexa

const smd = require('speechmarkdown-polly-js');

const markdown = `Sample [3s] speech [250ms] markdown`;
const options = {
    platform: 'amazon-polly-neural'
};

const speech = new smd.SpeechMarkdown();
const ssml = speech.toSSML(markdown, options);

The resulting SSML is:

<speak>
Sample <break time="3s"/> speech <break time="250ms"/> markdown
</speak>

Plain Text

Convert Speech Markdown to Plain Text

const smd = require('speechmarkdown-polly-js');

const markdown = `Sample [3s] speech [250ms] markdown`;
const options = {};

const speech = new smd.SpeechMarkdown();
const text = speech.toText(markdown, options);

The resulting text is:

Sample speech markdown

More

Options

You can pass options into the constructor:

const smd = require('speechmarkdown-polly-js');

const markdown = `Sample [3s] speech [250ms] markdown`;
const options = {
    platform: 'amazon-polly'
};

const speech = new smd.SpeechMarkdown(options);
const ssml = speech.toSSML(markdown);

Or in the methods toSSML and toText:

const smd = require('speechmarkdown-polly-js');

const markdown = `Sample [3s] speech [250ms] markdown`;
const options = {
    platform: 'amazon-polly'
};

const speech = new smd.SpeechMarkdown();
const ssml = speech.toSSML(markdown, options);

Available options are:

  • platform (string) - Determines the formatter to use to render SSML. Valid values are: amazon-polly and amazon-polly-neural.

  • includeFormatterComment (boolean) - Adds an XML comment to the SSML output indicating the formatter used. Default is false.

  • includeSpeakTag (boolean) - Determines if the <speak> tag will be rendered in the SSML output. Default is true.

  • includeParagraphTag (boolean) - Determines if the <p> tag will be rendered in the SSML output. Default is false.

License

Licensed under the MIT. See the LICENSE file for details.