Socket
Socket
Sign inDemoInstall

wiki2ssml

Package Overview
Dependencies
1
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.2.2 to 0.2.3

9

package.json
{
"name": "wiki2ssml",
"version": "0.2.2",
"version": "0.2.3",
"description": "Wiki2SSML provides the WikiVoice markup language used for fine-tuning synthesised voice.",

@@ -17,6 +17,9 @@ "license": "Apache-2.0",

"ssml",
"markup language",
"wikitext",
"text-to-speech",
"voice tuning",
"wikitext"
"amazon polly",
"google cloud tts",
"ibm watson tts",
"microsoft azure tts"
],

@@ -23,0 +26,0 @@ "author": {

@@ -38,3 +38,3 @@ # Wiki2SSML

| [[type:TYPE,format:FORMAT,detail:DETAIL|TEXT]] | Type it should be said as |
| [[mark:NAME|TEXT]] | Mark referencing a location |
| [[mark:NAME]] | Mark referencing a location |

@@ -45,12 +45,15 @@ # Supported Vendor-Specific Markups

| [[amzWhispered|TEXT]] | Whispering |
| [[amzPhonation:soft|TEXT]] | Speaking Softly |
| [[amzPhonation:PHONATION|TEXT]] | Speaking Softly |
| [[amzTimbre:SCALE|TEXT]] | Controlling Timbre |
| [[amzDRC|TEXT]] | Dynamic Range Compression |
| [[amzBreathDuration:SCALE,amzBreathVolume:SCALE]] | Breathing with duration and volume |
| [[amzDefaultBreath]] | Default sound of breathing |
| [[amzBreathDuration:SCALE,amzBreathVolume:SCALE]] | Breathing based on the manual model |
| [[amzDefaultBreath]] | Default breathing based on the manual model |
| [[amzAutoBreathsVolume:SCALE,amzAutoBreathsFrequency:SCALE,amzAutoBreathsDuration:SCALE|TEXT]] | Breathing based on the automated model |
| [[amzDefaultAutoBreaths]] | Default breathing based on the automated model |
| [[ibmExprType:TYPE|TEXT]] | Expressiveness type |
| [[ibmTransType:TYPE,ibmStrength:SCALE|TEXT]] | Voice transformation |
| [[ibmTransType:TYPE,ibmTransStrength:SCALE|TEXT]] | Voice transformation |
| [[ibmTransBreathiness:SCALE,ibmTransPitchRange:SCALE,ibmTransTimbre:SCALE|TEXT]] | Voice custom transformation |
More details on canonical attribute values can be found at [Speech Synthesis Markup Language (SSML)](https://www.w3.org/TR/speech-synthesis/).
More details on canonical attribute values can be found at [Speech Synthesis Markup Language (SSML)](https://www.w3.org/TR/speech-synthesis/). For ranges of vendor-specific values please refer to their online documents.

@@ -57,0 +60,0 @@ # Example

@@ -26,7 +26,4 @@ "use strict";

describe("Test parser", () => {
before(() => {
describe("Speed, pitch and volume", () => {
undertest = require("../src/wiki2ssml");
});
describe("Speed, pitch and volume", () => {
var happy = [

@@ -102,5 +99,5 @@ { expression: "[[speed:x-slow|TEXT]]", expected: HEAD + "<prosody rate=\"x-slow\">TEXT</prosody>" + TAIL },

var sad = [
{ expression: "[[speed:unknown|TEXT]]", expected: HEAD + "<prosody rate=\"x-slow\">TEXT</prosody>" + TAIL },
{ expression: "[[pitch:unknown|TEXT]]", expected: HEAD + "<prosody pitch=\"low\">TEXT</prosody>" + TAIL },
{ expression: "[[volume:unknown|TEXT]]", expected: HEAD + "<prosody volume=\"loud\">TEXT</prosody>" + TAIL }
{ expression: "[[speed:unknown|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[pitch:unknown|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[volume:unknown|TEXT]]", expected: undertest.SyntaxError }
];

@@ -113,2 +110,3 @@

describe("Emphasis level", () => {
undertest = require("../src/wiki2ssml");
var happy = [

@@ -126,3 +124,3 @@ { expression: "[[emphasis:strong|TEXT]]", expected: HEAD + "<emphasis level=\"strong\">TEXT</emphasis>" + TAIL },

var sad = [
{ expression: "[[emphasis:unknown|TEXT]]", expected: HEAD + "<emphasis level=\"strong\">TEXT</emphasis>" + TAIL }
{ expression: "[[emphasis:unknown|TEXT]]", expected: undertest.SyntaxError }
];

@@ -135,2 +133,3 @@

describe("Silence with duration", () => {
undertest = require("../src/wiki2ssml");
var happy = [

@@ -158,4 +157,4 @@ { expression: "[[strength:none]]", expected: HEAD + "<break strength=\"none\"/>" + TAIL },

var sad = [
{ expression: "[[silence:unknown]]", expected: HEAD + "<break time=\"100s\"/>" + TAIL },
{ expression: "[[strength:unknown]]", expected: HEAD + "<break strength=\"none\"/>" + TAIL }
{ expression: "[[silence:unknown]]", expected: undertest.SyntaxError },
{ expression: "[[strength:unknown]]", expected: undertest.SyntaxError }
];

@@ -168,2 +167,3 @@

describe("Substitution", () => {
undertest = require("../src/wiki2ssml");
var happy = [

@@ -180,2 +180,3 @@ { expression: "[[substitute:red color|red colour]]", expected: HEAD + "<sub alias=\"red color\">red colour</sub>" + TAIL },

describe("Embedded audio", () => {
undertest = require("../src/wiki2ssml");
var happy = [

@@ -190,2 +191,3 @@ { expression: "[[audio:https://example.mp3]]", expected: HEAD + "<audio src=\"https://example.mp3\"/>" + TAIL },

describe("Language code", () => {
undertest = require("../src/wiki2ssml");
var happy = [

@@ -200,2 +202,3 @@ { expression: "[[lang:en-GB|TEXT]]", expected: HEAD + "<lang xml:lang=\"en-GB\">TEXT</lang>" + TAIL },

describe("Paragraph and senctence", () => {
undertest = require("../src/wiki2ssml");
var happy = [

@@ -212,2 +215,3 @@ { expression: "[[paragraph|TEXT]]", expected: HEAD + "<p>TEXT</p>" + TAIL },

describe("Phoneme with alphabet and pronunciation", () => {
undertest = require("../src/wiki2ssml");
var happy = [

@@ -225,2 +229,3 @@ { expression: "[[pronunciation:təˈmɑːtəʊ|tomato]]", expected: HEAD + "<phoneme ph=\"təˈmɑːtəʊ\">tomato</phoneme>" + TAIL },

describe("Type for interpretation", () => {
undertest = require("../src/wiki2ssml");
var happy = [

@@ -306,5 +311,5 @@ { expression: "[[type:cardinal|TEXT]]", expected: HEAD + "<say-as interpret-as=\"cardinal\">TEXT</say-as>" + TAIL },

var sad = [
{ expression: "[[type:unknown|TEXT]]", expected: HEAD + "<say-as interpret-as=\"cardinal\">TEXT</say-as>" + TAIL },
{ expression: "[[type:date,format:unknown|TEXT]]", expected: HEAD + "<say-as interpret-as=\"date\" format=\"dmy\">TEXT</say-as>" + TAIL },
{ expression: "[[type:time,format:hms24,detail:_|TEXT]]", expected: HEAD + "<say-as interpret-as=\"time\" format=\"hms24\" detail=\"1\">TEXT</say-as>" + TAIL }
{ expression: "[[type:unknown|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[type:date,format:unknown|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[type:time,format:hms24,detail:_|TEXT]]", expected: undertest.SyntaxError }
];

@@ -317,2 +322,3 @@

describe("Voice name", () => {
undertest = require("../src/wiki2ssml");
var happy = [

@@ -327,2 +333,3 @@ { expression: "[[voice:NAME|TEXT]]", expected: HEAD + "<voice name=\"NAME\">TEXT</voice>" + TAIL },

describe("Part of Speech", () => {
undertest = require("../src/wiki2ssml");
var happy = [

@@ -336,5 +343,6 @@ { expression: "[[pos:VB|TEXT]]", expected: HEAD + "<w role=\"VB\">TEXT</w>" + TAIL }

describe("Mark with name", () => {
undertest = require("../src/wiki2ssml");
var happy = [
{ expression: "[[mark:NAME|TEXT]]", expected: HEAD + "<mark name=\"NAME\"/>" + TAIL },
{ expression: "[[mar:NAME|TEXT]]", expected: HEAD + "<mark name=\"NAME\"/>" + TAIL }
{ expression: "[[mark:NAME]]", expected: HEAD + "<mark name=\"NAME\"/>" + TAIL },
{ expression: "[[mar:NAME]]", expected: HEAD + "<mark name=\"NAME\"/>" + TAIL }
];

@@ -346,2 +354,3 @@

describe("Default speaking", () => {
undertest = require("../src/wiki2ssml");
var happy = [

@@ -355,2 +364,3 @@ { expression: "This is a test without markups", expected: HEAD + "This is a test without markups" + TAIL }

describe("Vendor extensions", () => {
undertest = require("../src/wiki2ssml");
var happy = [

@@ -375,15 +385,126 @@ { expression: "[[amzWhispered|TEXT]]", expected: HEAD + "<amazon:effect name=\"whispered\">TEXT</amazon:effect>" + TAIL },

{ expression: "[[adb]]", expected: HEAD + "<amazon:breath/>" + TAIL },
{ expression: "[[amzAutoBreathsVolume:medium,amzAutoBreathsFrequency:low,amzAutoBreathsDuration:long|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabv:medium,aabf:low,aabd:long|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsVolume:medium,amzAutoBreathsDuration:long,amzAutoBreathsFrequency:low|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabv:medium,aabd:long,aabf:low|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsDuration:long,amzAutoBreathsFrequency:low,amzAutoBreathsVolume:medium|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabd:long,aabf:low,aabv:medium|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsDuration:long,amzAutoBreathsVolume:medium,amzAutoBreathsFrequency:low|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabd:long,aabv:medium,aabf:low|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsFrequency:low,amzAutoBreathsVolume:medium,amzAutoBreathsDuration:long|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabf:low,aabv:medium,aabd:long|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsFrequency:low,amzAutoBreathsDuration:long,amzAutoBreathsVolume:medium|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabf:low,aabd:long,aabv:medium|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsVolume:medium,amzAutoBreathsFrequency:low|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabv:medium,aabf:low|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsFrequency:low,amzAutoBreathsVolume:medium|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabf:low,aabv:medium|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" frequency=\"low\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsDuration:long,amzAutoBreathsVolume:medium|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabd:long,aabv:medium|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsVolume:medium,amzAutoBreathsDuration:long|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabv:medium,aabd:long|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsFrequency:low,amzAutoBreathsDuration:long|TEXT]]", expected: HEAD + "<amazon:auto-breaths frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabf:low,aabd:long|TEXT]]", expected: HEAD + "<amazon:auto-breaths frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsDuration:long,amzAutoBreathsFrequency:low|TEXT]]", expected: HEAD + "<amazon:auto-breaths frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabd:long,aabf:low|TEXT]]", expected: HEAD + "<amazon:auto-breaths frequency=\"low\" duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsVolume:medium|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabv:medium|TEXT]]", expected: HEAD + "<amazon:auto-breaths volume=\"medium\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsFrequency:low|TEXT]]", expected: HEAD + "<amazon:auto-breaths frequency=\"low\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabf:low|TEXT]]", expected: HEAD + "<amazon:auto-breaths frequency=\"low\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzAutoBreathsDuration:long|TEXT]]", expected: HEAD + "<amazon:auto-breaths duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[aabd:long|TEXT]]", expected: HEAD + "<amazon:auto-breaths duration=\"long\">TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[amzDefaultAutoBreaths|TEXT]]", expected: HEAD + "<amazon:auto-breaths>TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[adab|TEXT]]", expected: HEAD + "<amazon:auto-breaths>TEXT</amazon:auto-breaths>" + TAIL },
{ expression: "[[ibmExprType:GoodNews|TEXT]]", expected: HEAD + "<express-as type=\"GoodNews\">TEXT</express-as>" + TAIL },
{ expression: "[[iet:GoodNews|TEXT]]", expected: HEAD + "<express-as type=\"GoodNews\">TEXT</express-as>" + TAIL },
{ expression: "[[ibmTransType:Young,ibmStrength:80%|TEXT]]", expected: HEAD + "<voice-transformation type=\"Young\" strength=\"80%\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itt:Young,ist:80%|TEXT]]", expected: HEAD + "<voice-transformation type=\"Young\" strength=\"80%\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmStrength:80%,ibmTransType:Young|TEXT]]", expected: HEAD + "<voice-transformation type=\"Young\" strength=\"80%\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransType:Young,ibmTransStrength:80%|TEXT]]", expected: HEAD + "<voice-transformation type=\"Young\" strength=\"80%\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itt:Young,its:80%|TEXT]]", expected: HEAD + "<voice-transformation type=\"Young\" strength=\"80%\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransStrength:80%,ibmTransType:Young|TEXT]]", expected: HEAD + "<voice-transformation type=\"Young\" strength=\"80%\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransType:Young|TEXT]]", expected: HEAD + "<voice-transformation type=\"Young\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itt:Young|TEXT]]", expected: HEAD + "<voice-transformation type=\"Young\">TEXT</voice-transformation>" + TAIL }
{ expression: "[[itt:Young|TEXT]]", expected: HEAD + "<voice-transformation type=\"Young\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransBreathiness:high,ibmTransPitchRange:wide,ibmTransTimbre:Sunrise|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itb:high,itp:wide,itm:Sunrise|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransBreathiness:high,ibmTransTimbre:Sunrise,ibmTransPitchRange:wide|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itb:high,itm:Sunrise,itp:wide|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransPitchRange:wide,ibmTransTimbre:Sunrise,ibmTransBreathiness:high|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itp:wide,itm:Sunrise,itb:high|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransPitchRange:wide,ibmTransBreathiness:high,ibmTransTimbre:Sunrise|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itp:wide,itb:high,itm:Sunrise|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransTimbre:Sunrise,ibmTransBreathiness:high,ibmTransPitchRange:wide|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itm:Sunrise,itp:wide,itb:high|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransTimbre:Sunrise,ibmTransPitchRange:wide,ibmTransBreathiness:high|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itm:Sunrise,itp:wide,itb:high|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransBreathiness:high,ibmTransPitchRange:wide|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itb:high,itp:wide|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransBreathiness:high,ibmTransTimbre:Sunrise|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itb:high,itm:Sunrise|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransPitchRange:wide,ibmTransTimbre:Sunrise|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itp:wide,itm:Sunrise|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransPitchRange:wide,ibmTransBreathiness:high|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itp:wide,itb:high|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" pitch_range=\"wide\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransTimbre:Sunrise,ibmTransBreathiness:high|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itm:Sunrise,itb:high|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransTimbre:Sunrise,ibmTransPitchRange:wide|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itm:Sunrise,itp:wide|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" pitch_range=\"wide\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransBreathiness:high|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itb:high|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" breathiness=\"high\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransPitchRange:wide|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" pitch_range=\"wide\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itp:wide|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" pitch_range=\"wide\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[ibmTransTimbre:Sunrise|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL },
{ expression: "[[itm:Sunrise|TEXT]]", expected: HEAD + "<voice-transformation type=\"Custom\" timbre=\"Sunrise\">TEXT</voice-transformation>" + TAIL }
];
var sad = [
{ expression: "[[amzPhonation:unknown|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[amzTimbre:unknown|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[amzBreathVolume:unknown]]", expected: undertest.SyntaxError },
{ expression: "[[amzBreathDuration:unknown]]", expected: undertest.SyntaxError },
{ expression: "[[amzAutoBreathsVolume:unknown|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[amzAutoBreathsFrequency:unknown|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[amzAutoBreathsDuration:unknown|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[ibmExprType:unknown|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[ibmTransType:unknown|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[ibmTransStrength:unknown,ibmTransType:Young|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[ibmTransBreathiness:unknown|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[ibmTransPitchRange:unknown|TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[ibmTransTimbre:unknown|TEXT]]",expected: undertest.SyntaxError }
];
runHappyTests(happy);
runSadTests(sad);
});
describe("Combined markups", () => {
undertest = require("../src/wiki2ssml");
var happy = [
{ expression: "start [[volume:medium|TEXT]] middle [[silence:0.5s]] end", expected: HEAD + "start <prosody volume=\"medium\">TEXT</prosody> middle <break time=\"0.5s\"/> end" + TAIL },
{ expression: "[[volume:medium|TEXT]] middle [[silence:0.5s]] end", expected: HEAD + "<prosody volume=\"medium\">TEXT</prosody> middle <break time=\"0.5s\"/> end" + TAIL },
{ expression: "start [[volume:medium|TEXT]] middle [[silence:0.5s]]", expected: HEAD + "start <prosody volume=\"medium\">TEXT</prosody> middle <break time=\"0.5s\"/>" + TAIL },
{ expression: "[[volume:medium|TEXT]] middle [[silence:0.5s]]", expected: HEAD + "<prosody volume=\"medium\">TEXT</prosody> middle <break time=\"0.5s\"/>" + TAIL },
{ expression: "TEXT[[voice:NAME|TEXT[[lang:en-GB|TEXT]]TEXT]]TEXT", expected: HEAD + "TEXT<voice name=\"NAME\">TEXT<lang xml:lang=\"en-GB\">TEXT</lang>TEXT</voice>TEXT" + TAIL },
{ expression: "[[voice:NAME|TEXT[[lang:en-GB|TEXT]]TEXT]]TEXT", expected: HEAD + "<voice name=\"NAME\">TEXT<lang xml:lang=\"en-GB\">TEXT</lang>TEXT</voice>TEXT" + TAIL },
{ expression: "TEXT[[voice:NAME|TEXT[[lang:en-GB|TEXT]]TEXT]]", expected: HEAD + "TEXT<voice name=\"NAME\">TEXT<lang xml:lang=\"en-GB\">TEXT</lang>TEXT</voice>" + TAIL },
{ expression: "[[voice:NAME|TEXT[[lang:en-GB|TEXT]]TEXT]]", expected: HEAD + "<voice name=\"NAME\">TEXT<lang xml:lang=\"en-GB\">TEXT</lang>TEXT</voice>" + TAIL },
{ expression: "[[voice:NAME|[[lang:en-GB|TEXT]]TEXT]]", expected: HEAD + "<voice name=\"NAME\"><lang xml:lang=\"en-GB\">TEXT</lang>TEXT</voice>" + TAIL },
{ expression: "[[voice:NAME|TEXT[[lang:en-GB|TEXT]]]]", expected: HEAD + "<voice name=\"NAME\">TEXT<lang xml:lang=\"en-GB\">TEXT</lang></voice>" + TAIL },
{ expression: "[[speed:medium,volume:+6dB,pitch:medium|TEXT[[type:time,format:hms24,detail:1|TEXT]]]]", expected: HEAD + "<prosody rate=\"medium\" pitch=\"medium\" volume=\"+6dB\">TEXT<say-as interpret-as=\"time\" format=\"hms24\" detail=\"1\">TEXT</say-as></prosody>" + TAIL }
];
var sad = [
{ expression: "start [volume:medium|TEXT]] middle [[silence:0.5s]] end", expected: undertest.SyntaxError },
{ expression: "[[volume:medium|TEXT] middle [[silence:0.5s]] end", expected: undertest.SyntaxError },
{ expression: "start [[volume:medium|TEXT]] middle [silence:0.5s]]", expected: undertest.SyntaxError },
{ expression: "[[volume:medium|TEXT]] middle [[silence:0.5s]", expected: undertest.SyntaxError },
{ expression: "TEXT[voice:NAME|TEXT[[lang:en-GB|TEXT]]TEXT]]TEXT", expected: undertest.SyntaxError },
{ expression: "[[voice:NAME|TEXT[lang:en-GB|TEXT]]TEXT]]TEXT", expected: undertest.SyntaxError },
{ expression: "TEXT[[voice:NAME|TEXT[[lang:en-GB|TEXT]TEXT]]", expected: undertest.SyntaxError },
{ expression: "[[voice:NAME|TEXT[[lang:en-GB|TEXT]]TEXT]", expected: undertest.SyntaxError }
];
runHappyTests(happy);
runSadTests(sad);
});
it("should ignore whitespaces", () => {
undertest = require("../src/wiki2ssml");
var happy = [

@@ -412,3 +533,11 @@ { expression: "[[ speed: medium ,volume: +6dB,pitch: medium|TEXT]]", expected: HEAD + "<prosody rate=\"medium\" pitch=\"medium\" volume=\"+6dB\">TEXT</prosody>" + TAIL },

it("should escape control characters", () => {
undertest = require("../src/wiki2ssml");
var parsed = undertest.parseToSsml("[[volume:+6dB|\"a\" + 'b' & c <> d]]", "en-GB");
expect(parsed).to.be.a("string");
expect(parsed).to.equal(HEAD + "<prosody volume=\"+6dB\">&quot;a&quot; + &apos;b&apos; &amp; c &lt;&gt; d</prosody>" + TAIL);
});
it("should return original input which dose not have markups", () => {
undertest = require("../src/wiki2ssml");
var text_without_markup = "This is a test without markups";

@@ -421,2 +550,3 @@ var parsed = undertest.parseToSsml(text_without_markup, "en-GB");

it("should use a specific SSML version parsed in", () => {
undertest = require("../src/wiki2ssml");
var parsed = undertest.parseToSsml("[[volume:+6dB|TEXT]]", "en-GB", "1.0");

@@ -428,2 +558,3 @@ expect(parsed).to.be.a("string");

it("should detect and validate markups", () => {
undertest = require("../src/wiki2ssml");
expect(undertest.hasValidMarkups("[[volume:medium|TEXT]] and [[silence:0.5s]] and [[substitute:substitute|original]] are markups")).to.be.true;

@@ -435,2 +566,3 @@ expect(undertest.hasValidMarkups("This is a test without valid [[markups]]")).to.be.false;

it("should strip markups and output plain text", () => {
undertest = require("../src/wiki2ssml");
var parsed = undertest.parseToPlainText("[[volume:medium|TEXT]] and [[silence:0.5s]] and [[substitute:substitute|original]] are present");

@@ -443,2 +575,3 @@ expect(parsed).to.be.a("string");

it("should throw SyntaxError on incorrect grammar", () => {
undertest = require("../src/wiki2ssml");
try {

@@ -454,2 +587,3 @@ undertest.reloadGrammar("incorrect");

it("should throw ArgumentError on missing language code", () => {
undertest = require("../src/wiki2ssml");
try {

@@ -484,3 +618,3 @@ undertest.parseToSsml("[[volume:+6dB|TEXT]]");

} catch (e) {
expect(e instanceof undertest.SyntaxError).to.be.true;
expect(e instanceof test.expected).to.be.true;
expect(e.message).to.have.string("Expected");

@@ -487,0 +621,0 @@ }

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc