Speech Markdown grammar, parser, and formatters for use with JavaScript.
This project is a work-in-progress. All volunteers are appreciated!
Find the architecture here
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>
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>
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
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
andgoogle-assistant
. -
includeFormatterComment
(boolean) - Adds an XML comment to the SSML output indicating the formatter used. Default isfalse
. -
includeSpeakTag
(boolean) - Determines if the<speak>
tag will be rendered in the SSML output. Default istrue
. -
includeParagraphTag
(boolean) - Determines if the<p>
tag will be rendered in the SSML output. Default isfalse
.
The biggest place we need help right now is with the completion of the grammar and formatters.
- break
- emphasis - strong
- emphasis - moderate
- emphasis - none
- emphasis - reduced
- ipa
- sub
- 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
clean
- remove coverage data, Jest cache and transpiled files,build
- 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,build: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
Licensed under the MIT. See the LICENSE file for details.