echogarden 2.0.10 → 2.0.11
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/recognition/AmazonTranscribeSTT.d.ts +2 -0
- package/dist/recognition/AmazonTranscribeSTT.js +109 -0
- package/dist/recognition/AmazonTranscribeSTT.js.map +1 -1
- package/dist/utilities/WasmMemoryManager.d.ts +1 -1
- package/package.json +1 -1
- package/src/recognition/AmazonTranscribeSTT.ts +115 -0
|
@@ -4,6 +4,19 @@ import { Logger } from '../utilities/Logger.js';
|
|
|
4
4
|
export async function recgonize(rawAudio, languageCode, region, accessKeyId, secretAccessKey) {
|
|
5
5
|
const flac16Khz16bitMonoAudio = await FFMpegTranscoder.encodeFromChannels(rawAudio, { format: 'flac', sampleRate: 16000, sampleFormat: 's16', channelCount: 1 });
|
|
6
6
|
const logger = new Logger();
|
|
7
|
+
if (!supportedLanguageCodes.includes(languageCode)) {
|
|
8
|
+
let matchingLanguageCode = undefined;
|
|
9
|
+
if (languageCode.length === 2) {
|
|
10
|
+
matchingLanguageCode = languageCodeDefaultDialects.find(value => value.startsWith(languageCode));
|
|
11
|
+
}
|
|
12
|
+
if (matchingLanguageCode) {
|
|
13
|
+
logger.log(`Short language code '${languageCode}' has been extended to the default dialect '${matchingLanguageCode}'`);
|
|
14
|
+
languageCode = matchingLanguageCode;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
throw new Error(`Language code ${languageCode} is not supported by Amazon Transcribe`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
7
20
|
logger.start('Initialize Amazon Transcribe streaming client module');
|
|
8
21
|
const streamingTranscribeSdk = await import('@aws-sdk/client-transcribe-streaming');
|
|
9
22
|
const streamingTranscribeClient = new streamingTranscribeSdk.TranscribeStreamingClient({
|
|
@@ -75,4 +88,100 @@ export async function recgonize(rawAudio, languageCode, region, accessKeyId, sec
|
|
|
75
88
|
logger.end();
|
|
76
89
|
return { transcript, timeline };
|
|
77
90
|
}
|
|
91
|
+
export const supportedLanguageCodes = [
|
|
92
|
+
'af-ZA',
|
|
93
|
+
'ar-AE',
|
|
94
|
+
'ar-SA',
|
|
95
|
+
'ca-ES',
|
|
96
|
+
'cs-CZ',
|
|
97
|
+
'da-DK',
|
|
98
|
+
'de-CH',
|
|
99
|
+
'de-DE',
|
|
100
|
+
'el-GR',
|
|
101
|
+
'en-AB',
|
|
102
|
+
'en-AU',
|
|
103
|
+
'en-GB',
|
|
104
|
+
'en-IE',
|
|
105
|
+
'en-IN',
|
|
106
|
+
'en-NZ',
|
|
107
|
+
'en-US',
|
|
108
|
+
'en-WL',
|
|
109
|
+
'en-ZA',
|
|
110
|
+
'es-ES',
|
|
111
|
+
'es-US',
|
|
112
|
+
'eu-ES',
|
|
113
|
+
'fa-IR',
|
|
114
|
+
'fi-FI',
|
|
115
|
+
'fr-CA',
|
|
116
|
+
'fr-FR',
|
|
117
|
+
'gl-ES',
|
|
118
|
+
'he-IL',
|
|
119
|
+
'hi-IN',
|
|
120
|
+
'hr-HR',
|
|
121
|
+
'id-ID',
|
|
122
|
+
'it-IT',
|
|
123
|
+
'ja-JP',
|
|
124
|
+
'ko-KR',
|
|
125
|
+
'lv-LV',
|
|
126
|
+
'ms-MY',
|
|
127
|
+
'nl-NL',
|
|
128
|
+
'no-NO',
|
|
129
|
+
'pl-PL',
|
|
130
|
+
'pt-BR',
|
|
131
|
+
'pt-PT',
|
|
132
|
+
'ro-RO',
|
|
133
|
+
'ru-RU',
|
|
134
|
+
'sk-SK',
|
|
135
|
+
'so-SO',
|
|
136
|
+
'sr-RS',
|
|
137
|
+
'sv-SE',
|
|
138
|
+
'th-TH',
|
|
139
|
+
'tl-PH',
|
|
140
|
+
'uk-UA',
|
|
141
|
+
'vi-VN',
|
|
142
|
+
'zh-CN',
|
|
143
|
+
'zh-HK',
|
|
144
|
+
'zh-TW',
|
|
145
|
+
'zu-ZA',
|
|
146
|
+
];
|
|
147
|
+
export const languageCodeDefaultDialects = [
|
|
148
|
+
'af-ZA',
|
|
149
|
+
'ar-SA',
|
|
150
|
+
'ca-ES',
|
|
151
|
+
'cs-CZ',
|
|
152
|
+
'da-DK',
|
|
153
|
+
'de-DE',
|
|
154
|
+
'el-GR',
|
|
155
|
+
'en-US',
|
|
156
|
+
'es-ES',
|
|
157
|
+
'eu-ES',
|
|
158
|
+
'fa-IR',
|
|
159
|
+
'fi-FI',
|
|
160
|
+
'fr-FR',
|
|
161
|
+
'gl-ES',
|
|
162
|
+
'he-IL',
|
|
163
|
+
'hi-IN',
|
|
164
|
+
'hr-HR',
|
|
165
|
+
'id-ID',
|
|
166
|
+
'it-IT',
|
|
167
|
+
'ja-JP',
|
|
168
|
+
'ko-KR',
|
|
169
|
+
'lv-LV',
|
|
170
|
+
'ms-MY',
|
|
171
|
+
'nl-NL',
|
|
172
|
+
'no-NO',
|
|
173
|
+
'pl-PL',
|
|
174
|
+
'pt-BR',
|
|
175
|
+
'ro-RO',
|
|
176
|
+
'ru-RU',
|
|
177
|
+
'sk-SK',
|
|
178
|
+
'so-SO',
|
|
179
|
+
'sr-RS',
|
|
180
|
+
'sv-SE',
|
|
181
|
+
'th-TH',
|
|
182
|
+
'tl-PH',
|
|
183
|
+
'uk-UA',
|
|
184
|
+
'vi-VN',
|
|
185
|
+
'zh-CN',
|
|
186
|
+
];
|
|
78
187
|
//# sourceMappingURL=AmazonTranscribeSTT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmazonTranscribeSTT.js","sourceRoot":"","sources":["../../src/recognition/AmazonTranscribeSTT.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,gBAAgB,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAI/C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAkB,EAAE,YAAoB,EAAE,MAAc,EAAE,WAAmB,EAAE,eAAuB;IACrI,MAAM,uBAAuB,GAAG,MAAM,gBAAgB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAA;IAEhK,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"AmazonTranscribeSTT.js","sourceRoot":"","sources":["../../src/recognition/AmazonTranscribeSTT.ts"],"names":[],"mappings":"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"}
|
|
@@ -109,7 +109,7 @@ declare abstract class TypedArrayRef<T extends TypedArray> {
|
|
|
109
109
|
constructor(ptr: number, length: number, manager: WasmMemoryManager);
|
|
110
110
|
get view(): T;
|
|
111
111
|
protected abstract getView(): T;
|
|
112
|
-
slice(start?: number, end?: number): Uint8Array<ArrayBuffer> |
|
|
112
|
+
slice(start?: number, end?: number): Uint8Array<ArrayBuffer> | Int8Array<ArrayBuffer> | Float32Array<ArrayBuffer> | Int16Array<ArrayBuffer> | Int32Array<ArrayBuffer> | Float64Array<ArrayBuffer> | Uint8ClampedArray<ArrayBuffer> | Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer>;
|
|
113
113
|
get address(): number;
|
|
114
114
|
clear(): this;
|
|
115
115
|
free(): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "echogarden",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.11",
|
|
4
4
|
"description": "An easy-to-use speech toolset. Includes tools for synthesis, recognition, alignment, speech translation, language detection, source separation and more.",
|
|
5
5
|
"author": "Rotem Dan",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -9,6 +9,23 @@ export async function recgonize(rawAudio: RawAudio, languageCode: string, region
|
|
|
9
9
|
const flac16Khz16bitMonoAudio = await FFMpegTranscoder.encodeFromChannels(rawAudio, { format: 'flac', sampleRate: 16000, sampleFormat: 's16', channelCount: 1 })
|
|
10
10
|
|
|
11
11
|
const logger = new Logger()
|
|
12
|
+
|
|
13
|
+
if (!supportedLanguageCodes.includes(languageCode)) {
|
|
14
|
+
let matchingLanguageCode: string | undefined = undefined
|
|
15
|
+
|
|
16
|
+
if (languageCode.length === 2) {
|
|
17
|
+
matchingLanguageCode = languageCodeDefaultDialects.find(value => value.startsWith(languageCode))
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (matchingLanguageCode) {
|
|
21
|
+
logger.log(`Short language code '${languageCode}' has been extended to the default dialect '${matchingLanguageCode}'`)
|
|
22
|
+
|
|
23
|
+
languageCode = matchingLanguageCode
|
|
24
|
+
} else {
|
|
25
|
+
throw new Error(`Language code ${languageCode} is not supported by Amazon Transcribe`)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
12
29
|
logger.start('Initialize Amazon Transcribe streaming client module')
|
|
13
30
|
|
|
14
31
|
const streamingTranscribeSdk = await import('@aws-sdk/client-transcribe-streaming')
|
|
@@ -109,3 +126,101 @@ export async function recgonize(rawAudio: RawAudio, languageCode: string, region
|
|
|
109
126
|
|
|
110
127
|
return { transcript, timeline }
|
|
111
128
|
}
|
|
129
|
+
|
|
130
|
+
export const supportedLanguageCodes: string[] = [
|
|
131
|
+
'af-ZA',
|
|
132
|
+
'ar-AE',
|
|
133
|
+
'ar-SA',
|
|
134
|
+
'ca-ES',
|
|
135
|
+
'cs-CZ',
|
|
136
|
+
'da-DK',
|
|
137
|
+
'de-CH',
|
|
138
|
+
'de-DE',
|
|
139
|
+
'el-GR',
|
|
140
|
+
'en-AB',
|
|
141
|
+
'en-AU',
|
|
142
|
+
'en-GB',
|
|
143
|
+
'en-IE',
|
|
144
|
+
'en-IN',
|
|
145
|
+
'en-NZ',
|
|
146
|
+
'en-US',
|
|
147
|
+
'en-WL',
|
|
148
|
+
'en-ZA',
|
|
149
|
+
'es-ES',
|
|
150
|
+
'es-US',
|
|
151
|
+
'eu-ES',
|
|
152
|
+
'fa-IR',
|
|
153
|
+
'fi-FI',
|
|
154
|
+
'fr-CA',
|
|
155
|
+
'fr-FR',
|
|
156
|
+
'gl-ES',
|
|
157
|
+
'he-IL',
|
|
158
|
+
'hi-IN',
|
|
159
|
+
'hr-HR',
|
|
160
|
+
'id-ID',
|
|
161
|
+
'it-IT',
|
|
162
|
+
'ja-JP',
|
|
163
|
+
'ko-KR',
|
|
164
|
+
'lv-LV',
|
|
165
|
+
'ms-MY',
|
|
166
|
+
'nl-NL',
|
|
167
|
+
'no-NO',
|
|
168
|
+
'pl-PL',
|
|
169
|
+
'pt-BR',
|
|
170
|
+
'pt-PT',
|
|
171
|
+
'ro-RO',
|
|
172
|
+
'ru-RU',
|
|
173
|
+
'sk-SK',
|
|
174
|
+
'so-SO',
|
|
175
|
+
'sr-RS',
|
|
176
|
+
'sv-SE',
|
|
177
|
+
'th-TH',
|
|
178
|
+
'tl-PH',
|
|
179
|
+
'uk-UA',
|
|
180
|
+
'vi-VN',
|
|
181
|
+
'zh-CN',
|
|
182
|
+
'zh-HK',
|
|
183
|
+
'zh-TW',
|
|
184
|
+
'zu-ZA',
|
|
185
|
+
]
|
|
186
|
+
|
|
187
|
+
export const languageCodeDefaultDialects: string[] = [
|
|
188
|
+
'af-ZA',
|
|
189
|
+
'ar-SA',
|
|
190
|
+
'ca-ES',
|
|
191
|
+
'cs-CZ',
|
|
192
|
+
'da-DK',
|
|
193
|
+
'de-DE',
|
|
194
|
+
'el-GR',
|
|
195
|
+
'en-US',
|
|
196
|
+
'es-ES',
|
|
197
|
+
'eu-ES',
|
|
198
|
+
'fa-IR',
|
|
199
|
+
'fi-FI',
|
|
200
|
+
'fr-FR',
|
|
201
|
+
'gl-ES',
|
|
202
|
+
'he-IL',
|
|
203
|
+
'hi-IN',
|
|
204
|
+
'hr-HR',
|
|
205
|
+
'id-ID',
|
|
206
|
+
'it-IT',
|
|
207
|
+
'ja-JP',
|
|
208
|
+
'ko-KR',
|
|
209
|
+
'lv-LV',
|
|
210
|
+
'ms-MY',
|
|
211
|
+
'nl-NL',
|
|
212
|
+
'no-NO',
|
|
213
|
+
'pl-PL',
|
|
214
|
+
'pt-BR',
|
|
215
|
+
'ro-RO',
|
|
216
|
+
'ru-RU',
|
|
217
|
+
'sk-SK',
|
|
218
|
+
'so-SO',
|
|
219
|
+
'sr-RS',
|
|
220
|
+
'sv-SE',
|
|
221
|
+
'th-TH',
|
|
222
|
+
'tl-PH',
|
|
223
|
+
'uk-UA',
|
|
224
|
+
'vi-VN',
|
|
225
|
+
'zh-CN',
|
|
226
|
+
]
|