2.1.0 • Published 1 year ago

speechmarkdown-js v2.1.0

Weekly downloads
700
License
MIT
Repository
github
Last release
1 year ago

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

  • break
  • emphasis - strong
  • emphasis - moderate
  • emphasis - none
  • emphasis - reduced
  • ipa
  • sub

Standard Format

  • address
  • audio
  • break (time)
  • break (strength)
  • characters / chars
  • date
  • defaults (section)
  • disappointed
  • disappointed (section)
  • dj (section)
  • emphasis
  • excited
  • excited (section)
  • expletive / bleep
  • fraction
  • interjection
  • ipa
  • lang
  • lang (section)
  • mark
  • newscaster (section)
  • number
  • ordinal
  • telephone / phone
  • pitch
  • rate
  • sub
  • time
  • unit
  • voice
  • voice (section)
  • volume / vol
  • 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.

2.1.0

1 year ago

2.0.0

3 years ago

1.9.0

3 years ago

1.8.0

3 years ago

1.7.0

3 years ago

1.6.0

4 years ago

1.5.0

4 years ago

1.4.1

4 years ago

1.4.0

4 years ago

1.3.0

4 years ago

1.2.1

4 years ago

1.2.0

4 years ago

1.1.0

4 years ago

1.0.0

4 years ago

0.8.5-beta.1

5 years ago

0.8.5-beta.0

5 years ago

0.8.3-beta.0

5 years ago

0.8.2-beta.1

5 years ago

0.8.2-beta.0

5 years ago

0.8.1-beta.0

5 years ago

0.8.0-beta.0

5 years ago

0.7.0-alpha.0

5 years ago

0.6.0-alpha.0

5 years ago

0.5.0-alpha.0

5 years ago

0.4.0-alpha.0

5 years ago

0.3.1-alpha.0

5 years ago

0.3.0-alpha.0

5 years ago

0.1.0-alpha.0

5 years ago

0.0.1

5 years ago