tjbot-ce 3.0.1
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/LICENSE +202 -0
- package/README.md +382 -0
- package/dist/camera/camera.d.ts +62 -0
- package/dist/camera/camera.d.ts.map +1 -0
- package/dist/camera/camera.js +155 -0
- package/dist/camera/camera.js.map +1 -0
- package/dist/camera/index.d.ts +18 -0
- package/dist/camera/index.d.ts.map +1 -0
- package/dist/camera/index.js +18 -0
- package/dist/camera/index.js.map +1 -0
- package/dist/config/config-types.d.ts +75 -0
- package/dist/config/config-types.d.ts.map +1 -0
- package/dist/config/config-types.generated.d.ts +495 -0
- package/dist/config/config-types.generated.d.ts.map +1 -0
- package/dist/config/config-types.generated.js +2 -0
- package/dist/config/config-types.generated.js.map +1 -0
- package/dist/config/config-types.js +175 -0
- package/dist/config/config-types.js.map +1 -0
- package/dist/config/index.d.ts +20 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +19 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/tjbot-config.d.ts +98 -0
- package/dist/config/tjbot-config.d.ts.map +1 -0
- package/dist/config/tjbot-config.js +309 -0
- package/dist/config/tjbot-config.js.map +1 -0
- package/dist/config/vendor/colors.yaml +61 -0
- package/dist/config/vendor/model-registry.yaml +275 -0
- package/dist/config/vendor/tjbot-config.schema.yaml +792 -0
- package/dist/config/vendor/tjbot.default.toml +452 -0
- package/dist/led/index.d.ts +20 -0
- package/dist/led/index.d.ts.map +1 -0
- package/dist/led/index.js +20 -0
- package/dist/led/index.js.map +1 -0
- package/dist/led/led-common-anode.d.ts +38 -0
- package/dist/led/led-common-anode.d.ts.map +1 -0
- package/dist/led/led-common-anode.js +79 -0
- package/dist/led/led-common-anode.js.map +1 -0
- package/dist/led/led-neopixel-spi.d.ts +60 -0
- package/dist/led/led-neopixel-spi.d.ts.map +1 -0
- package/dist/led/led-neopixel-spi.js +216 -0
- package/dist/led/led-neopixel-spi.js.map +1 -0
- package/dist/led/led-neopixel-ws281x.js +186 -0
- package/dist/led/led-neopixel.d.ts +57 -0
- package/dist/led/led-neopixel.d.ts.map +1 -0
- package/dist/led/led-neopixel.js +235 -0
- package/dist/led/led-neopixel.js.map +1 -0
- package/dist/microphone/index.d.ts +18 -0
- package/dist/microphone/index.d.ts.map +1 -0
- package/dist/microphone/index.js +18 -0
- package/dist/microphone/index.js.map +1 -0
- package/dist/microphone/microphone.d.ts +65 -0
- package/dist/microphone/microphone.d.ts.map +1 -0
- package/dist/microphone/microphone.js +179 -0
- package/dist/microphone/microphone.js.map +1 -0
- package/dist/rpi-drivers/index.d.ts +22 -0
- package/dist/rpi-drivers/index.d.ts.map +1 -0
- package/dist/rpi-drivers/index.js +22 -0
- package/dist/rpi-drivers/index.js.map +1 -0
- package/dist/rpi-drivers/rpi-detect.d.ts +24 -0
- package/dist/rpi-drivers/rpi-detect.d.ts.map +1 -0
- package/dist/rpi-drivers/rpi-detect.js +49 -0
- package/dist/rpi-drivers/rpi-detect.js.map +1 -0
- package/dist/rpi-drivers/rpi-driver.d.ts +116 -0
- package/dist/rpi-drivers/rpi-driver.d.ts.map +1 -0
- package/dist/rpi-drivers/rpi-driver.js +261 -0
- package/dist/rpi-drivers/rpi-driver.js.map +1 -0
- package/dist/rpi-drivers/rpi3-driver.d.ts +47 -0
- package/dist/rpi-drivers/rpi3-driver.d.ts.map +1 -0
- package/dist/rpi-drivers/rpi3-driver.js +145 -0
- package/dist/rpi-drivers/rpi3-driver.js.map +1 -0
- package/dist/rpi-drivers/rpi4-driver.d.ts +35 -0
- package/dist/rpi-drivers/rpi4-driver.d.ts.map +1 -0
- package/dist/rpi-drivers/rpi4-driver.js +101 -0
- package/dist/rpi-drivers/rpi4-driver.js.map +1 -0
- package/dist/rpi-drivers/rpi5-driver.d.ts +33 -0
- package/dist/rpi-drivers/rpi5-driver.d.ts.map +1 -0
- package/dist/rpi-drivers/rpi5-driver.js +78 -0
- package/dist/rpi-drivers/rpi5-driver.js.map +1 -0
- package/dist/servo/index.d.ts +19 -0
- package/dist/servo/index.d.ts.map +1 -0
- package/dist/servo/index.js +19 -0
- package/dist/servo/index.js.map +1 -0
- package/dist/servo/servo-constants.d.ts +33 -0
- package/dist/servo/servo-constants.d.ts.map +1 -0
- package/dist/servo/servo-constants.js +34 -0
- package/dist/servo/servo-constants.js.map +1 -0
- package/dist/servo/servo-lgpio.d.ts +82 -0
- package/dist/servo/servo-lgpio.d.ts.map +1 -0
- package/dist/servo/servo-lgpio.js +178 -0
- package/dist/servo/servo-lgpio.js.map +1 -0
- package/dist/speaker/audio-player.d.ts +30 -0
- package/dist/speaker/audio-player.d.ts.map +1 -0
- package/dist/speaker/audio-player.js +68 -0
- package/dist/speaker/audio-player.js.map +1 -0
- package/dist/speaker/index.d.ts +18 -0
- package/dist/speaker/index.d.ts.map +1 -0
- package/dist/speaker/index.js +18 -0
- package/dist/speaker/index.js.map +1 -0
- package/dist/speaker/speaker.d.ts +53 -0
- package/dist/speaker/speaker.d.ts.map +1 -0
- package/dist/speaker/speaker.js +125 -0
- package/dist/speaker/speaker.js.map +1 -0
- package/dist/stt/backends/azure-stt.d.ts +32 -0
- package/dist/stt/backends/azure-stt.d.ts.map +1 -0
- package/dist/stt/backends/azure-stt.js +227 -0
- package/dist/stt/backends/azure-stt.js.map +1 -0
- package/dist/stt/backends/google-cloud-stt.d.ts +31 -0
- package/dist/stt/backends/google-cloud-stt.d.ts.map +1 -0
- package/dist/stt/backends/google-cloud-stt.js +371 -0
- package/dist/stt/backends/google-cloud-stt.js.map +1 -0
- package/dist/stt/backends/ibm-watson-stt.d.ts +32 -0
- package/dist/stt/backends/ibm-watson-stt.d.ts.map +1 -0
- package/dist/stt/backends/ibm-watson-stt.js +190 -0
- package/dist/stt/backends/ibm-watson-stt.js.map +1 -0
- package/dist/stt/backends/sherpa-onnx-stt.d.ts +117 -0
- package/dist/stt/backends/sherpa-onnx-stt.d.ts.map +1 -0
- package/dist/stt/backends/sherpa-onnx-stt.js +694 -0
- package/dist/stt/backends/sherpa-onnx-stt.js.map +1 -0
- package/dist/stt/index.d.ts +20 -0
- package/dist/stt/index.d.ts.map +1 -0
- package/dist/stt/index.js +21 -0
- package/dist/stt/index.js.map +1 -0
- package/dist/stt/stt-engine.d.ts +68 -0
- package/dist/stt/stt-engine.d.ts.map +1 -0
- package/dist/stt/stt-engine.js +99 -0
- package/dist/stt/stt-engine.js.map +1 -0
- package/dist/stt/stt-utils.d.ts +36 -0
- package/dist/stt/stt-utils.d.ts.map +1 -0
- package/dist/stt/stt-utils.js +112 -0
- package/dist/stt/stt-utils.js.map +1 -0
- package/dist/stt/stt.d.ts +52 -0
- package/dist/stt/stt.d.ts.map +1 -0
- package/dist/stt/stt.js +100 -0
- package/dist/stt/stt.js.map +1 -0
- package/dist/tjbot.d.ts +317 -0
- package/dist/tjbot.d.ts.map +1 -0
- package/dist/tjbot.js +736 -0
- package/dist/tjbot.js.map +1 -0
- package/dist/tts/backends/azure-tts.d.ts +30 -0
- package/dist/tts/backends/azure-tts.d.ts.map +1 -0
- package/dist/tts/backends/azure-tts.js +92 -0
- package/dist/tts/backends/azure-tts.js.map +1 -0
- package/dist/tts/backends/google-cloud-tts.d.ts +38 -0
- package/dist/tts/backends/google-cloud-tts.d.ts.map +1 -0
- package/dist/tts/backends/google-cloud-tts.js +116 -0
- package/dist/tts/backends/google-cloud-tts.js.map +1 -0
- package/dist/tts/backends/ibm-watson-tts.d.ts +42 -0
- package/dist/tts/backends/ibm-watson-tts.d.ts.map +1 -0
- package/dist/tts/backends/ibm-watson-tts.js +99 -0
- package/dist/tts/backends/ibm-watson-tts.js.map +1 -0
- package/dist/tts/backends/sherpa-onnx-tts.d.ts +80 -0
- package/dist/tts/backends/sherpa-onnx-tts.d.ts.map +1 -0
- package/dist/tts/backends/sherpa-onnx-tts.js +237 -0
- package/dist/tts/backends/sherpa-onnx-tts.js.map +1 -0
- package/dist/tts/index.d.ts +19 -0
- package/dist/tts/index.d.ts.map +1 -0
- package/dist/tts/index.js +20 -0
- package/dist/tts/index.js.map +1 -0
- package/dist/tts/tts-engine.d.ts +67 -0
- package/dist/tts/tts-engine.d.ts.map +1 -0
- package/dist/tts/tts-engine.js +109 -0
- package/dist/tts/tts-engine.js.map +1 -0
- package/dist/tts/tts.d.ts +47 -0
- package/dist/tts/tts.d.ts.map +1 -0
- package/dist/tts/tts.js +101 -0
- package/dist/tts/tts.js.map +1 -0
- package/dist/utils/colors.d.ts +39 -0
- package/dist/utils/colors.d.ts.map +1 -0
- package/dist/utils/colors.js +155 -0
- package/dist/utils/colors.js.map +1 -0
- package/dist/utils/constants.d.ts +41 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +43 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/credentials.d.ts +43 -0
- package/dist/utils/credentials.d.ts.map +1 -0
- package/dist/utils/credentials.js +121 -0
- package/dist/utils/credentials.js.map +1 -0
- package/dist/utils/errors.d.ts +26 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +32 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/index.d.ts +25 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +23 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logging.d.ts +44 -0
- package/dist/utils/logging.d.ts.map +1 -0
- package/dist/utils/logging.js +113 -0
- package/dist/utils/logging.js.map +1 -0
- package/dist/utils/model-registry.d.ts +142 -0
- package/dist/utils/model-registry.d.ts.map +1 -0
- package/dist/utils/model-registry.js +391 -0
- package/dist/utils/model-registry.js.map +1 -0
- package/dist/utils/utils.d.ts +33 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +50 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/vision/backends/azure-vision.d.ts +33 -0
- package/dist/vision/backends/azure-vision.d.ts.map +1 -0
- package/dist/vision/backends/azure-vision.js +151 -0
- package/dist/vision/backends/azure-vision.js.map +1 -0
- package/dist/vision/backends/google-cloud-vision.d.ts +32 -0
- package/dist/vision/backends/google-cloud-vision.d.ts.map +1 -0
- package/dist/vision/backends/google-cloud-vision.js +193 -0
- package/dist/vision/backends/google-cloud-vision.js.map +1 -0
- package/dist/vision/backends/onnx.d.ts +116 -0
- package/dist/vision/backends/onnx.d.ts.map +1 -0
- package/dist/vision/backends/onnx.js +781 -0
- package/dist/vision/backends/onnx.js.map +1 -0
- package/dist/vision/index.d.ts +19 -0
- package/dist/vision/index.d.ts.map +1 -0
- package/dist/vision/index.js +20 -0
- package/dist/vision/index.js.map +1 -0
- package/dist/vision/vision-engine.d.ts +131 -0
- package/dist/vision/vision-engine.d.ts.map +1 -0
- package/dist/vision/vision-engine.js +97 -0
- package/dist/vision/vision-engine.js.map +1 -0
- package/dist/vision/vision.d.ts +48 -0
- package/dist/vision/vision.d.ts.map +1 -0
- package/dist/vision/vision.js +83 -0
- package/dist/vision/vision.js.map +1 -0
- package/package.json +124 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tjbot.js","sourceRoot":"","sources":["../src/tjbot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026-present TJBot Contributors. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { TTSEngine } from '../tts-engine.js';
|
|
17
|
+
/**
|
|
18
|
+
* Azure Cognitive Services Text-to-Speech Engine
|
|
19
|
+
*
|
|
20
|
+
* Cloud-based speech synthesis using Microsoft Azure Speech Services.
|
|
21
|
+
* Requires Azure subscription key and region to be configured.
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
export declare class AzureTTSEngine extends TTSEngine {
|
|
25
|
+
private subscriptionKey?;
|
|
26
|
+
private region?;
|
|
27
|
+
initialize(): Promise<void>;
|
|
28
|
+
synthesize(text: string): Promise<Buffer>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=azure-tts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-tts.d.ts","sourceRoot":"","sources":["../../../src/tts/backends/azure-tts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,SAAS;IACzC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,MAAM,CAAC,CAAS;IAElB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA+DlD"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026-present TJBot Contributors. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import * as sdk from 'microsoft-cognitiveservices-speech-sdk';
|
|
17
|
+
import { loadAzureCredentials } from '../../utils/credentials.js';
|
|
18
|
+
import { TJBotError } from '../../utils/index.js';
|
|
19
|
+
import { getLogger } from '../../utils/logging.js';
|
|
20
|
+
import { TTSEngine } from '../tts-engine.js';
|
|
21
|
+
const logger = getLogger(import.meta.url);
|
|
22
|
+
/**
|
|
23
|
+
* Azure Cognitive Services Text-to-Speech Engine
|
|
24
|
+
*
|
|
25
|
+
* Cloud-based speech synthesis using Microsoft Azure Speech Services.
|
|
26
|
+
* Requires Azure subscription key and region to be configured.
|
|
27
|
+
* @public
|
|
28
|
+
*/
|
|
29
|
+
export class AzureTTSEngine extends TTSEngine {
|
|
30
|
+
subscriptionKey;
|
|
31
|
+
region;
|
|
32
|
+
async initialize() {
|
|
33
|
+
const config = this.config;
|
|
34
|
+
const credentials = loadAzureCredentials(config?.credentialsPath);
|
|
35
|
+
this.subscriptionKey = credentials.speechKey;
|
|
36
|
+
this.region = credentials.speechRegion;
|
|
37
|
+
if (!config?.voice) {
|
|
38
|
+
throw new TJBotError('Azure TTS voice not specified. Provide voice in speak.backend.azure-tts config.');
|
|
39
|
+
}
|
|
40
|
+
if (!this.subscriptionKey || !this.region) {
|
|
41
|
+
throw new TJBotError('Azure Speech subscription key and region are required.');
|
|
42
|
+
}
|
|
43
|
+
logger.info('Azure TTS engine initialized');
|
|
44
|
+
logger.debug(`Initialized AzureTTSEngine with config:
|
|
45
|
+
voice: ${config?.voice},
|
|
46
|
+
region: ${this.region},
|
|
47
|
+
subscriptionKey: ${this.subscriptionKey ? '***' : 'not set'}`);
|
|
48
|
+
}
|
|
49
|
+
async synthesize(text) {
|
|
50
|
+
if (!this.subscriptionKey || !this.region) {
|
|
51
|
+
throw new TJBotError('Azure TTS not initialized. Call initialize() first.');
|
|
52
|
+
}
|
|
53
|
+
this.validateText(text);
|
|
54
|
+
try {
|
|
55
|
+
const voiceName = this.config?.voice;
|
|
56
|
+
if (!voiceName) {
|
|
57
|
+
throw new TJBotError('Azure TTS voice not specified. Provide voice in speak config.');
|
|
58
|
+
}
|
|
59
|
+
logger.verbose(`Synthesizing speech with Azure TTS (voice=${voiceName})`);
|
|
60
|
+
// Create speech config
|
|
61
|
+
const speechConfig = sdk.SpeechConfig.fromSubscription(this.subscriptionKey, this.region);
|
|
62
|
+
speechConfig.speechSynthesisVoiceName = voiceName;
|
|
63
|
+
speechConfig.speechSynthesisOutputFormat = sdk.SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm;
|
|
64
|
+
// Create synthesizer with null audio config to get result in memory
|
|
65
|
+
const synthesizer = new sdk.SpeechSynthesizer(speechConfig, undefined);
|
|
66
|
+
return new Promise((resolve, reject) => {
|
|
67
|
+
synthesizer.speakTextAsync(text, (result) => {
|
|
68
|
+
synthesizer.close();
|
|
69
|
+
if (result.reason === sdk.ResultReason.SynthesizingAudioCompleted) {
|
|
70
|
+
const audioData = Buffer.from(result.audioData);
|
|
71
|
+
logger.debug(`Azure TTS synthesis complete: ${audioData.length} bytes`);
|
|
72
|
+
resolve(audioData);
|
|
73
|
+
}
|
|
74
|
+
else if (result.reason === sdk.ResultReason.Canceled) {
|
|
75
|
+
const cancellation = sdk.SpeechSynthesisCancellationDetails.fromResult(result);
|
|
76
|
+
reject(new TJBotError(`Azure TTS canceled: ${cancellation.reason} - ${cancellation.errorDetails}`));
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
reject(new TJBotError(`Azure TTS synthesis failed with reason: ${result.reason}`));
|
|
80
|
+
}
|
|
81
|
+
}, (error) => {
|
|
82
|
+
synthesizer.close();
|
|
83
|
+
reject(new TJBotError(`Azure TTS synthesis error: ${error}`));
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
throw new TJBotError('Azure TTS synthesis failed', { cause: error });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=azure-tts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-tts.js","sourceRoot":"","sources":["../../../src/tts/backends/azure-tts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026-present TJBot Contributors. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { TTSEngine } from '../tts-engine.js';
|
|
17
|
+
/**
|
|
18
|
+
* Google Cloud Text-to-Speech Engine
|
|
19
|
+
*
|
|
20
|
+
* Cloud-based speech synthesis using Google Cloud Text-to-Speech API.
|
|
21
|
+
* Requires Google Cloud credentials JSON file to be configured.
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
export declare class GoogleCloudTTSEngine extends TTSEngine {
|
|
25
|
+
private client?;
|
|
26
|
+
initialize(): Promise<void>;
|
|
27
|
+
synthesize(text: string): Promise<Buffer>;
|
|
28
|
+
/**
|
|
29
|
+
* Add WAV header to raw PCM audio data
|
|
30
|
+
* @param pcmData - Raw PCM audio data
|
|
31
|
+
* @param sampleRate - Sample rate in Hz
|
|
32
|
+
* @param numChannels - Number of audio channels
|
|
33
|
+
* @param bitsPerSample - Bits per sample (usually 16)
|
|
34
|
+
* @returns Buffer with WAV header prepended
|
|
35
|
+
*/
|
|
36
|
+
private addWavHeader;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=google-cloud-tts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-cloud-tts.d.ts","sourceRoot":"","sources":["../../../src/tts/backends/google-cloud-tts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,SAAS;IAC/C,OAAO,CAAC,MAAM,CAAC,CAAqB;IAE9B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4C/C;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;CA8BvB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026-present TJBot Contributors. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { TextToSpeechClient, protos as ttsProtos } from '@google-cloud/text-to-speech';
|
|
17
|
+
import { loadGoogleCloudCredentials } from '../../utils/credentials.js';
|
|
18
|
+
import { TJBotError } from '../../utils/index.js';
|
|
19
|
+
import { getLogger } from '../../utils/logging.js';
|
|
20
|
+
import { TTSEngine } from '../tts-engine.js';
|
|
21
|
+
const logger = getLogger(import.meta.url);
|
|
22
|
+
/**
|
|
23
|
+
* Google Cloud Text-to-Speech Engine
|
|
24
|
+
*
|
|
25
|
+
* Cloud-based speech synthesis using Google Cloud Text-to-Speech API.
|
|
26
|
+
* Requires Google Cloud credentials JSON file to be configured.
|
|
27
|
+
* @public
|
|
28
|
+
*/
|
|
29
|
+
export class GoogleCloudTTSEngine extends TTSEngine {
|
|
30
|
+
client;
|
|
31
|
+
async initialize() {
|
|
32
|
+
const config = this.config;
|
|
33
|
+
const credentials = loadGoogleCloudCredentials(config?.credentialsPath);
|
|
34
|
+
if (!config?.voice) {
|
|
35
|
+
throw new TJBotError('Google Cloud TTS voice not specified. Provide voice in speak.backend.google-cloud-tts config.');
|
|
36
|
+
}
|
|
37
|
+
if (!config?.languageCode) {
|
|
38
|
+
throw new TJBotError('Google Cloud TTS languageCode not specified. Provide languageCode in speak.backend.google-cloud-tts config.');
|
|
39
|
+
}
|
|
40
|
+
this.client = new TextToSpeechClient();
|
|
41
|
+
logger.info('Google Cloud TTS engine initialized');
|
|
42
|
+
logger.debug(`Initialized GoogleCloudTTSEngine with config:
|
|
43
|
+
voice: ${config?.voice},
|
|
44
|
+
languageCode: ${config?.languageCode},
|
|
45
|
+
credentialsPath: ${credentials.credentialsPath}`);
|
|
46
|
+
}
|
|
47
|
+
async synthesize(text) {
|
|
48
|
+
if (!this.client) {
|
|
49
|
+
throw new TJBotError('Google Cloud TTS client not initialized. Call initialize() first.');
|
|
50
|
+
}
|
|
51
|
+
this.validateText(text);
|
|
52
|
+
try {
|
|
53
|
+
const voice = this.config?.voice;
|
|
54
|
+
const languageCode = this.config?.languageCode;
|
|
55
|
+
logger.verbose(`Synthesizing speech with Google Cloud TTS (voice=${voice}, language=${languageCode})`);
|
|
56
|
+
const request = {
|
|
57
|
+
input: { text },
|
|
58
|
+
voice: {
|
|
59
|
+
name: voice,
|
|
60
|
+
languageCode,
|
|
61
|
+
},
|
|
62
|
+
audioConfig: {
|
|
63
|
+
audioEncoding: ttsProtos.google.cloud.texttospeech.v1.AudioEncoding.LINEAR16,
|
|
64
|
+
sampleRateHertz: 24000,
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
const [response] = await this.client.synthesizeSpeech(request);
|
|
68
|
+
if (!response.audioContent) {
|
|
69
|
+
throw new TJBotError('No audio data returned from Google Cloud TTS');
|
|
70
|
+
}
|
|
71
|
+
// Convert audio content to Buffer
|
|
72
|
+
const audioBuffer = Buffer.from(response.audioContent);
|
|
73
|
+
// Google returns raw LINEAR16 PCM, we need to add WAV header
|
|
74
|
+
const wavBuffer = this.addWavHeader(audioBuffer, 24000, 1, 16);
|
|
75
|
+
logger.debug(`Google Cloud TTS synthesis complete: ${wavBuffer.length} bytes`);
|
|
76
|
+
return wavBuffer;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
throw new TJBotError('Google Cloud TTS synthesis failed', { cause: error });
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Add WAV header to raw PCM audio data
|
|
84
|
+
* @param pcmData - Raw PCM audio data
|
|
85
|
+
* @param sampleRate - Sample rate in Hz
|
|
86
|
+
* @param numChannels - Number of audio channels
|
|
87
|
+
* @param bitsPerSample - Bits per sample (usually 16)
|
|
88
|
+
* @returns Buffer with WAV header prepended
|
|
89
|
+
*/
|
|
90
|
+
addWavHeader(pcmData, sampleRate, numChannels, bitsPerSample) {
|
|
91
|
+
const blockAlign = (numChannels * bitsPerSample) / 8;
|
|
92
|
+
const byteRate = sampleRate * blockAlign;
|
|
93
|
+
const dataSize = pcmData.length;
|
|
94
|
+
const headerSize = 44;
|
|
95
|
+
const fileSize = headerSize + dataSize - 8;
|
|
96
|
+
const header = Buffer.alloc(headerSize);
|
|
97
|
+
// RIFF chunk descriptor
|
|
98
|
+
header.write('RIFF', 0);
|
|
99
|
+
header.writeUInt32LE(fileSize, 4);
|
|
100
|
+
header.write('WAVE', 8);
|
|
101
|
+
// fmt sub-chunk
|
|
102
|
+
header.write('fmt ', 12);
|
|
103
|
+
header.writeUInt32LE(16, 16); // Subchunk1Size (16 for PCM)
|
|
104
|
+
header.writeUInt16LE(1, 20); // AudioFormat (1 for PCM)
|
|
105
|
+
header.writeUInt16LE(numChannels, 22);
|
|
106
|
+
header.writeUInt32LE(sampleRate, 24);
|
|
107
|
+
header.writeUInt32LE(byteRate, 28);
|
|
108
|
+
header.writeUInt16LE(blockAlign, 32);
|
|
109
|
+
header.writeUInt16LE(bitsPerSample, 34);
|
|
110
|
+
// data sub-chunk
|
|
111
|
+
header.write('data', 36);
|
|
112
|
+
header.writeUInt32LE(dataSize, 40);
|
|
113
|
+
return Buffer.concat([header, pcmData]);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=google-cloud-tts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-cloud-tts.js","sourceRoot":"","sources":["../../../src/tts/backends/google-cloud-tts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2025 IBM Corp. All Rights Reserved.
|
|
3
|
+
* Copyright 2026-present TJBot Contributors. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { TTSEngine } from '../tts-engine.js';
|
|
18
|
+
/**
|
|
19
|
+
* IBM Watson Text-to-Speech Engine
|
|
20
|
+
*
|
|
21
|
+
* Cloud-based speech synthesis using IBM Watson Text to Speech service.
|
|
22
|
+
* Requires IBM Cloud credentials to be configured in ibm-credentials.env file.
|
|
23
|
+
* @public
|
|
24
|
+
*/
|
|
25
|
+
export declare class IBMTTSEngine extends TTSEngine {
|
|
26
|
+
private ttsService?;
|
|
27
|
+
/**
|
|
28
|
+
* Initialize the IBM Watson TTS service.
|
|
29
|
+
* Creates a new TextToSpeechV1 instance.
|
|
30
|
+
*/
|
|
31
|
+
initialize(): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Synthesize text to WAV audio using IBM Watson TTS.
|
|
34
|
+
* Voice is configured at engine initialization time via config.
|
|
35
|
+
*
|
|
36
|
+
* @param text - Text to synthesize
|
|
37
|
+
* @returns WAV audio buffer
|
|
38
|
+
* @throws Error if service is not initialized or synthesis fails
|
|
39
|
+
*/
|
|
40
|
+
synthesize(text: string): Promise<Buffer>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=ibm-watson-tts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ibm-watson-tts.d.ts","sourceRoot":"","sources":["../../../src/tts/backends/ibm-watson-tts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACvC,OAAO,CAAC,UAAU,CAAC,CAAiB;IAEpC;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBjC;;;;;;;OAOG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAmDlD"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2025 IBM Corp. All Rights Reserved.
|
|
3
|
+
* Copyright 2026-present TJBot Contributors. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import TextToSpeechV1 from 'ibm-watson/text-to-speech/v1.js';
|
|
18
|
+
import { loadIBMWatsonCloudCredentials } from '../../utils/credentials.js';
|
|
19
|
+
import { TJBotError } from '../../utils/index.js';
|
|
20
|
+
import { getLogger } from '../../utils/logging.js';
|
|
21
|
+
import { TTSEngine } from '../tts-engine.js';
|
|
22
|
+
const logger = getLogger(import.meta.url);
|
|
23
|
+
/**
|
|
24
|
+
* IBM Watson Text-to-Speech Engine
|
|
25
|
+
*
|
|
26
|
+
* Cloud-based speech synthesis using IBM Watson Text to Speech service.
|
|
27
|
+
* Requires IBM Cloud credentials to be configured in ibm-credentials.env file.
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export class IBMTTSEngine extends TTSEngine {
|
|
31
|
+
ttsService;
|
|
32
|
+
/**
|
|
33
|
+
* Initialize the IBM Watson TTS service.
|
|
34
|
+
* Creates a new TextToSpeechV1 instance.
|
|
35
|
+
*/
|
|
36
|
+
async initialize() {
|
|
37
|
+
const config = this.config;
|
|
38
|
+
loadIBMWatsonCloudCredentials(config?.credentialsPath);
|
|
39
|
+
if (!config?.voice) {
|
|
40
|
+
throw new TJBotError('IBM Watson TTS voice not specified. Provide voice in speak.backend.ibm-watson-tts config.');
|
|
41
|
+
}
|
|
42
|
+
this.ttsService = new TextToSpeechV1({});
|
|
43
|
+
logger.info('IBM Watson TTS engine initialized');
|
|
44
|
+
logger.debug(`Initialized IBMWatsonTTSEngine with config:
|
|
45
|
+
voice: ${config?.voice},
|
|
46
|
+
credentialsPath: ${config?.credentialsPath}`);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Synthesize text to WAV audio using IBM Watson TTS.
|
|
50
|
+
* Voice is configured at engine initialization time via config.
|
|
51
|
+
*
|
|
52
|
+
* @param text - Text to synthesize
|
|
53
|
+
* @returns WAV audio buffer
|
|
54
|
+
* @throws Error if service is not initialized or synthesis fails
|
|
55
|
+
*/
|
|
56
|
+
async synthesize(text) {
|
|
57
|
+
if (!this.ttsService) {
|
|
58
|
+
throw new TJBotError('IBM Watson TTS service not initialized. Call initialize() first.');
|
|
59
|
+
}
|
|
60
|
+
this.validateText(text);
|
|
61
|
+
try {
|
|
62
|
+
// Use voice from configuration
|
|
63
|
+
const voiceName = this.config?.voice;
|
|
64
|
+
if (!voiceName) {
|
|
65
|
+
throw new TJBotError('IBM Watson TTS voice not specified. Provide voice in speak config.');
|
|
66
|
+
}
|
|
67
|
+
const params = {
|
|
68
|
+
text,
|
|
69
|
+
voice: voiceName,
|
|
70
|
+
accept: 'audio/wav',
|
|
71
|
+
};
|
|
72
|
+
logger.verbose(`Synthesizing speech with IBM Watson TTS (voice=${voiceName})`);
|
|
73
|
+
const response = await this.ttsService.synthesize(params);
|
|
74
|
+
if (!response.result) {
|
|
75
|
+
throw new TJBotError('No audio data returned from IBM Watson TTS');
|
|
76
|
+
}
|
|
77
|
+
// Convert the readable stream to a buffer
|
|
78
|
+
const chunks = [];
|
|
79
|
+
return new Promise((resolve, reject) => {
|
|
80
|
+
response.result.on('data', (chunk) => {
|
|
81
|
+
chunks.push(Buffer.from(chunk));
|
|
82
|
+
});
|
|
83
|
+
response.result.on('end', () => {
|
|
84
|
+
const buffer = Buffer.concat(chunks);
|
|
85
|
+
logger.debug(`IBM Watson TTS synthesis complete: ${buffer.length} bytes`);
|
|
86
|
+
resolve(buffer);
|
|
87
|
+
});
|
|
88
|
+
response.result.on('error', (err) => {
|
|
89
|
+
logger.error('Error during IBM Watson TTS synthesis:', err);
|
|
90
|
+
reject(err);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
throw new TJBotError('IBM Watson TTS synthesis failed', { cause: error });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=ibm-watson-tts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ibm-watson-tts.js","sourceRoot":"","sources":["../../../src/tts/backends/ibm-watson-tts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026-present TJBot Contributors. All Rights Reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { TTSEngine } from '../tts-engine.js';
|
|
17
|
+
/**
|
|
18
|
+
* Sherpa-ONNX Local Text-to-Speech Engine
|
|
19
|
+
*
|
|
20
|
+
* Offline speech synthesis using Sherpa-ONNX library with Piper voices.
|
|
21
|
+
* Models are automatically downloaded and cached in ~/.tjbot/models/sherpa-tts/
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
export declare class SherpaONNXTTSEngine extends TTSEngine {
|
|
25
|
+
private registry;
|
|
26
|
+
private modelInfo?;
|
|
27
|
+
private modelPath?;
|
|
28
|
+
private ttsEngine?;
|
|
29
|
+
/**
|
|
30
|
+
* Initialize the sherpa-onnx TTS engine.
|
|
31
|
+
* Pre-downloads the configured model.
|
|
32
|
+
*/
|
|
33
|
+
initialize(): Promise<void>;
|
|
34
|
+
private pathForModel;
|
|
35
|
+
/**
|
|
36
|
+
* Setup synthesizer based on model configuration
|
|
37
|
+
*/
|
|
38
|
+
private setupSynthesizer;
|
|
39
|
+
/**
|
|
40
|
+
* Synthesize text to WAV audio using sherpa-onnx.
|
|
41
|
+
* Voice is configured at engine initialization time via config.
|
|
42
|
+
*
|
|
43
|
+
* @param text - Text to synthesize
|
|
44
|
+
* @returns WAV audio buffer
|
|
45
|
+
* @throws Error if not initialized or synthesis fails
|
|
46
|
+
*/
|
|
47
|
+
synthesize(text: string): Promise<Buffer>;
|
|
48
|
+
/**
|
|
49
|
+
* Resolve the data directory for VITS models. Some models include
|
|
50
|
+
* a separate "espeak-ng-data" folder with necessary data files.
|
|
51
|
+
* If that folder exists, return its path. Otherwise, return
|
|
52
|
+
* the base model directory.
|
|
53
|
+
* @returns Path to the data directory to be used for VITS synthesis
|
|
54
|
+
*/
|
|
55
|
+
private resolveVitsDataDir;
|
|
56
|
+
/**
|
|
57
|
+
* Setup synthesizer based on model configuration. Creates the OfflineTts instance with the appropriate config.
|
|
58
|
+
* @param modelFile The full path to the model file
|
|
59
|
+
* @param vitsDataDir The directory containing VITS data files (may be the same as modelDir or a subdirectory)
|
|
60
|
+
* @returns An instance of OfflineTts configured with the specified model
|
|
61
|
+
*/
|
|
62
|
+
private createOfflineTTS;
|
|
63
|
+
/**
|
|
64
|
+
* Convert PCM samples to WAV format.
|
|
65
|
+
* Creates a proper WAV file with header and audio data.
|
|
66
|
+
*
|
|
67
|
+
* @param samples - PCM audio samples (typically as Float32Array)
|
|
68
|
+
* @param sampleRate - Sample rate in Hz (e.g., 22050)
|
|
69
|
+
* @returns WAV file as Buffer
|
|
70
|
+
*/
|
|
71
|
+
private audioToWav;
|
|
72
|
+
/**
|
|
73
|
+
* Convert Float32 PCM samples to 16-bit PCM.
|
|
74
|
+
*
|
|
75
|
+
* @param float32Samples - Float32 audio samples (range -1.0 to 1.0)
|
|
76
|
+
* @returns 16-bit PCM samples as Buffer
|
|
77
|
+
*/
|
|
78
|
+
private float32ToPcm16;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=sherpa-onnx-tts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sherpa-onnx-tts.d.ts","sourceRoot":"","sources":["../../../src/tts/backends/sherpa-onnx-tts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAe7C;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,SAAS;IAC9C,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,SAAS,CAAC,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAa;IAE/B;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkCjC,OAAO,CAAC,YAAY;IAqBpB;;OAEG;YACW,gBAAgB;IAsB9B;;;;;;;OAOG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2B/C;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IA8CxB;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IAmClB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;CAUzB"}
|