speech-builder
Utility to build SSML documents for different voice platforms.
Motivation / Approach
Since the major voice platforms all support slightly different subsets of SSML, documents built for one platform often cause errors when used somewhere else.
To address this issue, speech-builder accepts a list of feature flags as configuration option.
Basic Usage
const ssml = ; const s = ; console;
Helloworld
Advanced Options
Base URI
SSML allows authors to specify URLs as relative paths which get resolved according to the xml:base attribute. This is especially useful for audio files which need to be encoded differently for each platform. On platforms that don't support xml:base
speech-builder omits the attribute and performs the URL resolving itself.
;
Lexicon
Speech sythesizers sometimes fail to pronounce words correctly, especially when mixing multiple languages. Using .phoneme()
helps but can get quite cumbersome to write. As an alternative you can provide a lexicon:
;
Plain Text Output
The speech-builder can not only output SSML markup but also a plain text
representation with <p>
tags converted into line breaks. This is useful
for adding some basic formatting for visual surfaces.
;
API
Table of Contents
- lang
- addText
- addToken
- add
- sub
- phoneme
- break
- audio
- emphasis
- p
- s
- w
- effect
- sayAs
- prosody
- toString
- toPlainText
- replace
lang
Adds an xml:lang
attribute to the current node.
If not supported, this is a no-op.
Parameters
lang
string?
addText
Adds text. Characters with special meaning in XML are properly escaped.
Parameters
addToken
Like addText
but prepends a space (unless it's the first token or the
previous one alreads ends with whitespace).
Parameters
add
Like addToken
but also accepts a function or an array.
Parameters
content
any
sub
Adds a <sub>
tag. If substitions are not supported,
the alias is added as text instead.
Parameters
phoneme
Adds a <phoneme>
tag. When an object with notations in
different alphabets is passed as ph
, the first one
that is supported will be used. For platforms without phoneme
support, the special sub
alphabet can be used to generate
a <sub>
tag as fallback.
Parameters
break
Adds a <break>
tag. If not supported, this is a no-op.
Parameters
audio
Adds an <audio>
tag. If not supported, the alt text
is added as plain text.
Parameters
emphasis
Adds an <emphasis>
tag. If not supported, the text is added as-is.
Parameters
content
anylevel
string?
p
Adds a <p>
tag. If not supported, the text is added as-is.
Parameters
content
any
s
Adds an <s>
tag. If not supported, the text is added as-is.
Parameters
content
any
w
Adds a <w>
tag. If not supported, the text is added as-is.
Parameters
role
stringcontent
any
effect
Adds an <*:effect>
tag. If not supported, the text is added as-is.
NOTE: The namespace can be configured via the effect
feature setting.
Parameters
name
stringcontent
any
sayAs
Adds an <say-as>
tag. If not supported, the text is added as-is.
Parameters
prosody
Adds a <prosody>
tag. If not supported, the text is added as-is.
Parameters
attrs
Objecttext
any
toString
Returns the serialized SSML document.
Returns string
toPlainText
Returns the document without any markup. Paragraphs are turned into line breaks.
Returns string
replace
Duck-type as string to support the Jovo framework.
Parameters
Adding variations
const ssml = ;const random chance = ; ;
License
MIT