speechmarkdown-js
TypeScript icon, indicating that this package has built-in type declarations

2.1.0 • Public • Published

TypeScript version Node.js version MIT

speechmarkdown-js

Speech Markdown grammar, parser, and formatters for use with JavaScript.

Supported platforms:

  • amazon-alexa
  • amazon-polly
  • amazon-polly-neural
  • google-assistant
  • microsoft-azure
  • samsung-bixby

Find the architecture here

Quick start

SSML - Amazon Alexa

Convert Speech Markdown to SSML for Amazon Alexa

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

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

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 - Google Assistant

Convert Speech Markdown to SSML for Google Assistant

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

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

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-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-js');

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

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

Or in the methods toSSML and toText:

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

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

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-alexa"
    • "amazon-polly"
    • "amazon-polly-neural"
    • "google-assistant"
    • "microsoft-azure"
    • "samsung-bixby"
  • 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.

  • preserveEmptyLines (boolean) - keep empty lines in markdown in SSML. Default is true.

  • escapeXmlSymbols (boolean) - Currently only for amazon-alexa. Escape XML text. Default is false.

  • voices (object) - give custom names to voices and use that in your markdown:

    {
      "platform": "amazon-alexa",
      "voices": {
        "Scott": { "voice": { "name": "Brian" } },
        "Sarah": { "voice": { "name": "Kendra" } }
      }
    }
    {
      "platform": "google-assistant",
      "voices": {
        "Brian": {
          "voice": { "gender": "male", "variant": 1, "language": "en-US" }
        },
        "Sarah": {
          "voice": { "gender": "female", "variant": 3, "language": "en-US" }
        }
      }
    }

Working on this project?

Grammar

The biggest place we need help right now is with the completion of the grammar and formatters.

Short Format

  • [x] break
  • [x] emphasis - strong
  • [x] emphasis - moderate
  • [x] emphasis - none
  • [x] emphasis - reduced
  • [ ] ipa
  • [ ] sub

Standard Format

  • [x] address
  • [x] audio
  • [x] break (time)
  • [x] break (strength)
  • [x] characters / chars
  • [x] date
  • [x] defaults (section)
  • [x] disappointed
  • [x] disappointed (section)
  • [x] dj (section)
  • [x] emphasis
  • [x] excited
  • [x] excited (section)
  • [x] expletive / bleep
  • [x] fraction
  • [x] interjection
  • [x] ipa
  • [x] lang
  • [x] lang (section)
  • [x] mark
  • [x] newscaster (section)
  • [x] number
  • [x] ordinal
  • [x] telephone / phone
  • [x] pitch
  • [x] rate
  • [x] sub
  • [x] time
  • [x] unit
  • [x] voice
  • [x] voice (section)
  • [x] volume / vol
  • [x] whisper

Available scripts

  • clean - remove coverage data, Jest cache and transpiled files,
  • build - perform all build tasks
  • build:ts - transpile TypeScript to ES5
  • build:browser - creates single file ./dist.browser/speechmarkdown.js file for use in browser,
  • build:minify - creates single file ./dist.browser/speechmarkdown.min.js file for use in browser,
  • watch - interactive watch mode to automatically transpile source files,
  • lint - lint source files and tests,
  • test - run tests,
  • test:watch - interactive watch mode to automatically re-run tests

License

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

Readme

Keywords

none

Package Sidebar

Install

npm i speechmarkdown-js

Weekly Downloads

172

Version

2.1.0

License

MIT

Unpacked Size

440 kB

Total Files

53

Last publish

Collaborators

  • rmtuckerphx
  • arjanscherpenisse