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

Sign up to get free protection for your applications and to get access to all the features.
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>