@creativeorange/azure-text-to-speech 1.2.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@creativeorange/azure-text-to-speech",
3
- "version": "1.2.2",
3
+ "version": "1.3.0",
4
4
  "main": "dist/co-azure-tts.umd.js",
5
5
  "browser": "dist/co-azure-tts.es.js",
6
6
  "scripts": {
@@ -34,15 +34,16 @@ export class TextToSpeech {
34
34
  currentWord: string = '';
35
35
  currentOffset: number = 0;
36
36
  wordBoundaryOffset: number = 0;
37
- privTextOffset: number = 0;
37
+ prevTextOffset: number = 0;
38
+ url: string = '';
38
39
 
39
-
40
- constructor(key: string, region: string, voice: string, rate: number = 0, pitch: number = 0) {
40
+ constructor(key: string, region: string, voice: string, rate: number = 0, pitch: number = 0, url: string = '') {
41
41
  this.key = key;
42
42
  this.region = region;
43
43
  this.voice = voice;
44
44
  this.rate = rate;
45
45
  this.pitch = pitch;
46
+ this.url = url;
46
47
  }
47
48
 
48
49
  async start() {
@@ -238,7 +239,7 @@ export class TextToSpeech {
238
239
  }
239
240
  this.player = undefined;
240
241
  this.highlightDiv = undefined;
241
- this.privTextOffset = 0;
242
+ this.prevTextOffset = 0;
242
243
  }
243
244
 
244
245
  async startSynthesizer(node: any, attr: Attr) {
@@ -309,13 +310,13 @@ export class TextToSpeech {
309
310
  wordBoundary = this.previousWordBoundary ?? undefined;
310
311
  }
311
312
 
312
- if (wordBoundary === undefined || this.privTextOffset > wordBoundary.privTextOffset) {
313
+ if (wordBoundary === undefined || this.prevTextOffset > wordBoundary.prevTextOffset) {
313
314
  this.highlightDiv.innerHTML = this.originalHighlightDivInnerHTML;
314
315
  } else {
315
316
  if (!this.wordEncounters[wordBoundary.text]) {
316
317
  this.wordEncounters[wordBoundary.text] = 0;
317
318
  }
318
- this.privTextOffset = wordBoundary.privTextOffset;
319
+ this.prevTextOffset = wordBoundary.prevTextOffset;
319
320
 
320
321
  if (this.currentWord !== wordBoundary.text || this.wordBoundaryOffset !== wordBoundary.textOffset) {
321
322
  this.currentOffset = this.getPosition(
@@ -358,16 +359,18 @@ export class TextToSpeech {
358
359
  }
359
360
 
360
361
  buildSSML(text: string) {
361
- return `<speak xmlns="http://www.w3.org/2001/10/synthesis"
362
+ let ssml = `<speak xmlns="http://www.w3.org/2001/10/synthesis"
362
363
  xmlns:mstts="http://www.w3.org/2001/mstts"
363
364
  xmlns:emo="http://www.w3.org/2009/10/emotionml"
364
365
  version="1.0"
365
366
  xml:lang="en-US">
366
- <voice name="${this.voice}">
367
- <prosody rate="${this.rate}%" pitch="${this.pitch}%">
368
- ${text}
369
- </prosody>
370
- </voice>
371
- </speak>`;
367
+ <voice name="${this.voice}">`;
368
+
369
+ if (this.url !== '') {
370
+ ssml += `<lexicon uri="${this.url}"/>`;
371
+ }
372
+
373
+ ssml += `<prosody rate="${this.rate}%" pitch="${this.pitch}%">${text}</prosody></voice></speak>`;
374
+ return ssml;
372
375
  }
373
376
  }
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="WEB_MODULE" version="4">
3
- <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$" />
5
- <orderEntry type="inheritedJdk" />
6
- <orderEntry type="sourceFolder" forTests="false" />
7
- </component>
8
- </module>
@@ -1,376 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <code_scheme name="Project" version="173">
3
- <option name="FORMATTER_TAGS_ENABLED" value="true" />
4
- <option name="DO_NOT_FORMAT">
5
- <list>
6
- <fileSet type="globPattern" pattern="*.{blade.php,md,vue,js}" />
7
- </list>
8
- </option>
9
- <JSCodeStyleSettings version="0">
10
- <option name="FORCE_SEMICOLON_STYLE" value="true" />
11
- <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
12
- <option name="USE_DOUBLE_QUOTES" value="false" />
13
- <option name="FORCE_QUOTE_STYlE" value="true" />
14
- <option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
15
- </JSCodeStyleSettings>
16
- <PHPCodeStyleSettings>
17
- <option name="ALIGN_KEY_VALUE_PAIRS" value="true" />
18
- <option name="CONCAT_SPACES" value="false" />
19
- <option name="COMMA_AFTER_LAST_ARRAY_ELEMENT" value="true" />
20
- <option name="PHPDOC_BLANK_LINE_BEFORE_TAGS" value="true" />
21
- <option name="PHPDOC_WRAP_LONG_LINES" value="true" />
22
- <option name="BLANK_LINES_BETWEEN_IMPORTS" value="1" />
23
- <option name="PHPDOC_PARAM_SPACES_BETWEEN_TAG_AND_TYPE" value="2" />
24
- <option name="PHPDOC_PARAM_SPACES_BETWEEN_TYPE_AND_NAME" value="2" />
25
- <option name="PHPDOC_PARAM_SPACES_BETWEEN_NAME_AND_DESCRIPTION" value="2" />
26
- <option name="LOWER_CASE_BOOLEAN_CONST" value="true" />
27
- <option name="LOWER_CASE_NULL_CONST" value="true" />
28
- <option name="ELSE_IF_STYLE" value="COMBINE" />
29
- <option name="VARIABLE_NAMING_STYLE" value="CAMEL_CASE" />
30
- <option name="KEEP_RPAREN_AND_LBRACE_ON_ONE_LINE" value="true" />
31
- <option name="BLANK_LINES_AFTER_OPENING_TAG" value="1" />
32
- <option name="KEEP_BLANK_LINES_AFTER_LBRACE" value="0" />
33
- <option name="FORCE_SHORT_DECLARATION_ARRAY_STYLE" value="true" />
34
- <option name="NEW_LINE_AFTER_PHP_OPENING_TAG" value="true" />
35
- </PHPCodeStyleSettings>
36
- <editorconfig>
37
- <option name="ENABLED" value="false" />
38
- </editorconfig>
39
- <codeStyleSettings language="JavaScript">
40
- <option name="RIGHT_MARGIN" value="125" />
41
- <option name="BLOCK_COMMENT_ADD_SPACE" value="true" />
42
- <option name="INDENT_CASE_FROM_SWITCH" value="false" />
43
- <option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
44
- <option name="ALIGN_MULTILINE_FOR" value="false" />
45
- <option name="IF_BRACE_FORCE" value="1" />
46
- <option name="DOWHILE_BRACE_FORCE" value="1" />
47
- <option name="WHILE_BRACE_FORCE" value="1" />
48
- <option name="FOR_BRACE_FORCE" value="1" />
49
- </codeStyleSettings>
50
- <codeStyleSettings language="PHP">
51
- <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" />
52
- <option name="BLANK_LINES_AFTER_PACKAGE" value="1" />
53
- <option name="BLANK_LINES_AROUND_FIELD" value="1" />
54
- <option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
55
- <option name="ALIGN_MULTILINE_EXTENDS_LIST" value="true" />
56
- <option name="SPACE_AFTER_TYPE_CAST" value="true" />
57
- <option name="CALL_PARAMETERS_WRAP" value="1" />
58
- <option name="METHOD_PARAMETERS_WRAP" value="5" />
59
- <option name="METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" />
60
- <option name="METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
61
- <option name="EXTENDS_LIST_WRAP" value="5" />
62
- <option name="FOR_STATEMENT_LPAREN_ON_NEXT_LINE" value="true" />
63
- <option name="FOR_STATEMENT_RPAREN_ON_NEXT_LINE" value="true" />
64
- <option name="ARRAY_INITIALIZER_WRAP" value="1" />
65
- <option name="ARRAY_INITIALIZER_LBRACE_ON_NEXT_LINE" value="true" />
66
- <option name="ARRAY_INITIALIZER_RBRACE_ON_NEXT_LINE" value="true" />
67
- <option name="IF_BRACE_FORCE" value="3" />
68
- <option name="DOWHILE_BRACE_FORCE" value="3" />
69
- <option name="WHILE_BRACE_FORCE" value="3" />
70
- <option name="FOR_BRACE_FORCE" value="3" />
71
- <arrangement>
72
- <rules>
73
- <section>
74
- <rule>
75
- <match>
76
- <CONST>true</CONST>
77
- </match>
78
- </rule>
79
- </section>
80
- <section>
81
- <rule>
82
- <match>
83
- <AND>
84
- <FIELD>true</FIELD>
85
- <PUBLIC>true</PUBLIC>
86
- <STATIC>true</STATIC>
87
- </AND>
88
- </match>
89
- </rule>
90
- </section>
91
- <section>
92
- <rule>
93
- <match>
94
- <AND>
95
- <FIELD>true</FIELD>
96
- <PROTECTED>true</PROTECTED>
97
- <STATIC>true</STATIC>
98
- </AND>
99
- </match>
100
- </rule>
101
- </section>
102
- <section>
103
- <rule>
104
- <match>
105
- <AND>
106
- <FIELD>true</FIELD>
107
- <PRIVATE>true</PRIVATE>
108
- <STATIC>true</STATIC>
109
- </AND>
110
- </match>
111
- </rule>
112
- </section>
113
- <section>
114
- <rule>
115
- <match>
116
- <AND>
117
- <FIELD>true</FIELD>
118
- <PUBLIC>true</PUBLIC>
119
- </AND>
120
- </match>
121
- </rule>
122
- </section>
123
- <section>
124
- <rule>
125
- <match>
126
- <AND>
127
- <FIELD>true</FIELD>
128
- <PROTECTED>true</PROTECTED>
129
- </AND>
130
- </match>
131
- </rule>
132
- </section>
133
- <section>
134
- <rule>
135
- <match>
136
- <AND>
137
- <FIELD>true</FIELD>
138
- <PRIVATE>true</PRIVATE>
139
- </AND>
140
- </match>
141
- </rule>
142
- </section>
143
- <section>
144
- <rule>
145
- <match>
146
- <CONSTRUCTOR>true</CONSTRUCTOR>
147
- </match>
148
- </rule>
149
- </section>
150
- <section>
151
- <rule>
152
- <match>
153
- <AND>
154
- <ABSTRACT>true</ABSTRACT>
155
- <METHOD>true</METHOD>
156
- <PUBLIC>true</PUBLIC>
157
- <STATIC>true</STATIC>
158
- </AND>
159
- </match>
160
- </rule>
161
- </section>
162
- <section>
163
- <rule>
164
- <match>
165
- <AND>
166
- <ABSTRACT>true</ABSTRACT>
167
- <METHOD>true</METHOD>
168
- <PROTECTED>true</PROTECTED>
169
- <STATIC>true</STATIC>
170
- </AND>
171
- </match>
172
- </rule>
173
- </section>
174
- <section>
175
- <rule>
176
- <match>
177
- <AND>
178
- <ABSTRACT>true</ABSTRACT>
179
- <METHOD>true</METHOD>
180
- <PRIVATE>true</PRIVATE>
181
- <STATIC>true</STATIC>
182
- </AND>
183
- </match>
184
- </rule>
185
- </section>
186
- <section>
187
- <rule>
188
- <match>
189
- <AND>
190
- <ABSTRACT>true</ABSTRACT>
191
- <METHOD>true</METHOD>
192
- <PUBLIC>true</PUBLIC>
193
- </AND>
194
- </match>
195
- </rule>
196
- </section>
197
- <section>
198
- <rule>
199
- <match>
200
- <AND>
201
- <ABSTRACT>true</ABSTRACT>
202
- <METHOD>true</METHOD>
203
- <PROTECTED>true</PROTECTED>
204
- </AND>
205
- </match>
206
- </rule>
207
- </section>
208
- <section>
209
- <rule>
210
- <match>
211
- <AND>
212
- <ABSTRACT>true</ABSTRACT>
213
- <METHOD>true</METHOD>
214
- <PRIVATE>true</PRIVATE>
215
- </AND>
216
- </match>
217
- </rule>
218
- </section>
219
- <section>
220
- <rule>
221
- <match>
222
- <AND>
223
- <FINAL>true</FINAL>
224
- <METHOD>true</METHOD>
225
- <PUBLIC>true</PUBLIC>
226
- <STATIC>true</STATIC>
227
- </AND>
228
- </match>
229
- </rule>
230
- </section>
231
- <section>
232
- <rule>
233
- <match>
234
- <AND>
235
- <FINAL>true</FINAL>
236
- <METHOD>true</METHOD>
237
- <PROTECTED>true</PROTECTED>
238
- <STATIC>true</STATIC>
239
- </AND>
240
- </match>
241
- </rule>
242
- </section>
243
- <section>
244
- <rule>
245
- <match>
246
- <AND>
247
- <FINAL>true</FINAL>
248
- <METHOD>true</METHOD>
249
- <PRIVATE>true</PRIVATE>
250
- <STATIC>true</STATIC>
251
- </AND>
252
- </match>
253
- </rule>
254
- </section>
255
- <section>
256
- <rule>
257
- <match>
258
- <AND>
259
- <FINAL>true</FINAL>
260
- <METHOD>true</METHOD>
261
- <PUBLIC>true</PUBLIC>
262
- </AND>
263
- </match>
264
- </rule>
265
- </section>
266
- <section>
267
- <rule>
268
- <match>
269
- <AND>
270
- <FINAL>true</FINAL>
271
- <METHOD>true</METHOD>
272
- <PROTECTED>true</PROTECTED>
273
- </AND>
274
- </match>
275
- </rule>
276
- </section>
277
- <section>
278
- <rule>
279
- <match>
280
- <AND>
281
- <FINAL>true</FINAL>
282
- <METHOD>true</METHOD>
283
- <PRIVATE>true</PRIVATE>
284
- </AND>
285
- </match>
286
- </rule>
287
- </section>
288
- <section>
289
- <rule>
290
- <match>
291
- <AND>
292
- <METHOD>true</METHOD>
293
- <PUBLIC>true</PUBLIC>
294
- <STATIC>true</STATIC>
295
- </AND>
296
- </match>
297
- </rule>
298
- </section>
299
- <section>
300
- <rule>
301
- <match>
302
- <AND>
303
- <METHOD>true</METHOD>
304
- <PROTECTED>true</PROTECTED>
305
- <STATIC>true</STATIC>
306
- </AND>
307
- </match>
308
- </rule>
309
- </section>
310
- <section>
311
- <rule>
312
- <match>
313
- <AND>
314
- <METHOD>true</METHOD>
315
- <PRIVATE>true</PRIVATE>
316
- <STATIC>true</STATIC>
317
- </AND>
318
- </match>
319
- </rule>
320
- </section>
321
- <section>
322
- <rule>
323
- <match>
324
- <AND>
325
- <METHOD>true</METHOD>
326
- <PUBLIC>true</PUBLIC>
327
- </AND>
328
- </match>
329
- </rule>
330
- </section>
331
- <section>
332
- <rule>
333
- <match>
334
- <AND>
335
- <METHOD>true</METHOD>
336
- <PROTECTED>true</PROTECTED>
337
- </AND>
338
- </match>
339
- </rule>
340
- </section>
341
- <section>
342
- <rule>
343
- <match>
344
- <AND>
345
- <METHOD>true</METHOD>
346
- <PRIVATE>true</PRIVATE>
347
- </AND>
348
- </match>
349
- </rule>
350
- </section>
351
- <section>
352
- <rule>
353
- <match>
354
- <TRAIT>true</TRAIT>
355
- </match>
356
- </rule>
357
- </section>
358
- <section>
359
- <rule>
360
- <match>
361
- <INTERFACE>true</INTERFACE>
362
- </match>
363
- </rule>
364
- </section>
365
- <section>
366
- <rule>
367
- <match>
368
- <CLASS>true</CLASS>
369
- </match>
370
- </rule>
371
- </section>
372
- </rules>
373
- </arrangement>
374
- </codeStyleSettings>
375
- </code_scheme>
376
- </component>
@@ -1,5 +0,0 @@
1
- <component name="ProjectCodeStyleConfiguration">
2
- <state>
3
- <option name="USE_PER_PROJECT_SETTINGS" value="true" />
4
- </state>
5
- </component>
@@ -1,6 +0,0 @@
1
- <component name="InspectionProjectProfileManager">
2
- <profile version="1.0">
3
- <option name="myName" value="Project Default" />
4
- <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
5
- </profile>
6
- </component>
package/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/azure-text-to-speech.iml" filepath="$PROJECT_DIR$/.idea/azure-text-to-speech.iml" />
6
- </modules>
7
- </component>
8
- </project>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
- </component>
6
- </project>