@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/dist/co-azure-tts.es.js +14 -12
- package/dist/co-azure-tts.umd.js +6 -11
- package/package.json +1 -1
- package/src/TextToSpeech.ts +16 -13
- package/.idea/azure-text-to-speech.iml +0 -8
- package/.idea/codeStyles/Project.xml +0 -376
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/inspectionProfiles/Project_Default.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
package/package.json
CHANGED
package/src/TextToSpeech.ts
CHANGED
@@ -34,15 +34,16 @@ export class TextToSpeech {
|
|
34
34
|
currentWord: string = '';
|
35
35
|
currentOffset: number = 0;
|
36
36
|
wordBoundaryOffset: number = 0;
|
37
|
-
|
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.
|
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.
|
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.
|
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
|
-
|
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
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
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>
|
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>
|