@dofe/infra-shared-services 0.1.17 → 0.1.19
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/agentx/agentx-client.module.d.ts.map +1 -1
- package/dist/agentx/agentx-client.module.js.map +1 -1
- package/dist/agentx/agentx-client.service.d.ts.map +1 -1
- package/dist/agentx/agentx-client.service.js.map +1 -1
- package/dist/agentx/agentx-file-client.service.d.ts.map +1 -1
- package/dist/agentx/agentx-file-client.service.js.map +1 -1
- package/dist/agentx/index.d.ts.map +1 -1
- package/dist/agentx/index.js.map +1 -1
- package/dist/agentx/interfaces/file.interface.d.ts.map +1 -1
- package/dist/agentx/interfaces/file.interface.js.map +1 -1
- package/dist/agentx/interfaces/task.interface.d.ts.map +1 -1
- package/dist/agentx/interfaces/task.interface.js.map +1 -1
- package/dist/email/dto/email.dto.d.ts +70 -0
- package/dist/email/dto/email.dto.d.ts.map +1 -0
- package/dist/email/dto/email.dto.js +58 -0
- package/dist/email/dto/email.dto.js.map +1 -0
- package/dist/email/email.module.d.ts.map +1 -1
- package/dist/email/email.module.js.map +1 -1
- package/dist/email/email.service.d.ts.map +1 -1
- package/dist/email/email.service.js +1 -1
- package/dist/email/email.service.js.map +1 -1
- package/dist/email/index.d.ts +5 -0
- package/dist/email/index.d.ts.map +1 -0
- package/dist/email/index.js +26 -0
- package/dist/email/index.js.map +1 -0
- package/dist/file-cdn/dto/file-cdn.dto.d.ts.map +1 -1
- package/dist/file-cdn/dto/file-cdn.dto.js.map +1 -1
- package/dist/file-cdn/file-cdn.client.d.ts +1 -1
- package/dist/file-cdn/file-cdn.client.d.ts.map +1 -1
- package/dist/file-cdn/file-cdn.client.js +2 -2
- package/dist/file-cdn/file-cdn.client.js.map +1 -1
- package/dist/file-cdn/file-cdn.module.d.ts.map +1 -1
- package/dist/file-cdn/file-cdn.module.js +2 -2
- package/dist/file-cdn/file-cdn.module.js.map +1 -1
- package/dist/file-cdn/index.d.ts.map +1 -1
- package/dist/file-cdn/index.js.map +1 -1
- package/dist/file-storage/bucket-resolver.d.ts +9 -9
- package/dist/file-storage/bucket-resolver.d.ts.map +1 -1
- package/dist/file-storage/bucket-resolver.js +4 -4
- package/dist/file-storage/bucket-resolver.js.map +1 -1
- package/dist/file-storage/file-storage.factory.d.ts +6 -6
- package/dist/file-storage/file-storage.factory.d.ts.map +1 -1
- package/dist/file-storage/file-storage.factory.js +10 -10
- package/dist/file-storage/file-storage.factory.js.map +1 -1
- package/dist/file-storage/file-storage.module.d.ts.map +1 -1
- package/dist/file-storage/file-storage.module.js.map +1 -1
- package/dist/file-storage/file-storage.service.d.ts +3 -3
- package/dist/file-storage/file-storage.service.d.ts.map +1 -1
- package/dist/file-storage/file-storage.service.js +1 -1
- package/dist/file-storage/file-storage.service.js.map +1 -1
- package/dist/file-storage/index.d.ts +1 -1
- package/dist/file-storage/index.d.ts.map +1 -1
- package/dist/file-storage/index.js.map +1 -1
- package/dist/file-storage/types.d.ts +7 -7
- package/dist/file-storage/types.d.ts.map +1 -1
- package/dist/file-storage/types.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/ip-geo/continent-mapping.d.ts.map +1 -1
- package/dist/ip-geo/continent-mapping.js.map +1 -1
- package/dist/ip-geo/index.d.ts +33 -0
- package/dist/ip-geo/index.d.ts.map +1 -0
- package/dist/ip-geo/index.js +41 -0
- package/dist/ip-geo/index.js.map +1 -0
- package/dist/ip-geo/ip-geo.module.d.ts.map +1 -1
- package/dist/ip-geo/ip-geo.module.js.map +1 -1
- package/dist/ip-geo/ip-geo.service.d.ts.map +1 -1
- package/dist/ip-geo/ip-geo.service.js.map +1 -1
- package/dist/ip-info/index.d.ts +7 -0
- package/dist/ip-info/index.d.ts.map +1 -0
- package/dist/ip-info/index.js +13 -0
- package/dist/ip-info/index.js.map +1 -0
- package/dist/ip-info/ip-info.client.d.ts.map +1 -1
- package/dist/ip-info/ip-info.client.js +2 -2
- package/dist/ip-info/ip-info.client.js.map +1 -1
- package/dist/ip-info/ip-info.module.d.ts.map +1 -1
- package/dist/ip-info/ip-info.module.js.map +1 -1
- package/dist/ip-info/ip-info.service.d.ts.map +1 -1
- package/dist/ip-info/ip-info.service.js +3 -3
- package/dist/ip-info/ip-info.service.js.map +1 -1
- package/dist/ip-info-client/dto/ip-info.dto.d.ts.map +1 -1
- package/dist/ip-info-client/dto/ip-info.dto.js.map +1 -1
- package/dist/ip-info-client/index.d.ts.map +1 -1
- package/dist/ip-info-client/index.js.map +1 -1
- package/dist/ip-info-client/ip-info.client.d.ts.map +1 -1
- package/dist/ip-info-client/ip-info.client.js.map +1 -1
- package/dist/ip-info-client/ip-info.module.d.ts.map +1 -1
- package/dist/ip-info-client/ip-info.module.js.map +1 -1
- package/dist/notification/index.d.ts.map +1 -1
- package/dist/notification/index.js.map +1 -1
- package/dist/notification/notification.module.d.ts.map +1 -1
- package/dist/notification/notification.module.js.map +1 -1
- package/dist/notification/notification.service.d.ts.map +1 -1
- package/dist/notification/notification.service.js.map +1 -1
- package/dist/notification/notification.types.d.ts.map +1 -1
- package/dist/notification/notification.types.js.map +1 -1
- package/dist/ocr/index.d.ts +33 -0
- package/dist/ocr/index.d.ts.map +1 -0
- package/dist/ocr/index.js +53 -0
- package/dist/ocr/index.js.map +1 -0
- package/dist/ocr/ocr.module.d.ts.map +1 -1
- package/dist/ocr/ocr.module.js.map +1 -1
- package/dist/ocr/ocr.service.d.ts.map +1 -1
- package/dist/ocr/ocr.service.js.map +1 -1
- package/dist/openspeech/index.d.ts +35 -0
- package/dist/openspeech/index.d.ts.map +1 -0
- package/dist/openspeech/index.js +56 -0
- package/dist/openspeech/index.js.map +1 -0
- package/dist/openspeech/openspeech.client.d.ts +304 -0
- package/dist/openspeech/openspeech.client.d.ts.map +1 -0
- package/dist/openspeech/openspeech.client.js +405 -0
- package/dist/openspeech/openspeech.client.js.map +1 -0
- package/dist/openspeech/openspeech.factory.d.ts +247 -0
- package/dist/openspeech/openspeech.factory.d.ts.map +1 -0
- package/dist/openspeech/openspeech.factory.js +406 -0
- package/dist/openspeech/openspeech.factory.js.map +1 -0
- package/dist/openspeech/openspeech.module.d.ts +45 -0
- package/dist/openspeech/openspeech.module.d.ts.map +1 -0
- package/dist/openspeech/openspeech.module.js +68 -0
- package/dist/openspeech/openspeech.module.js.map +1 -0
- package/dist/openspeech/providers/aliyun.provider.d.ts +125 -0
- package/dist/openspeech/providers/aliyun.provider.d.ts.map +1 -0
- package/dist/openspeech/providers/aliyun.provider.js +274 -0
- package/dist/openspeech/providers/aliyun.provider.js.map +1 -0
- package/dist/openspeech/providers/base.provider.d.ts +98 -0
- package/dist/openspeech/providers/base.provider.d.ts.map +1 -0
- package/dist/openspeech/providers/base.provider.js +87 -0
- package/dist/openspeech/providers/base.provider.js.map +1 -0
- package/dist/openspeech/providers/index.d.ts +10 -0
- package/dist/openspeech/providers/index.d.ts.map +1 -0
- package/dist/openspeech/providers/index.js +26 -0
- package/dist/openspeech/providers/index.js.map +1 -0
- package/dist/openspeech/providers/volcengine-streaming.provider.d.ts +291 -0
- package/dist/openspeech/providers/volcengine-streaming.provider.d.ts.map +1 -0
- package/dist/openspeech/providers/volcengine-streaming.provider.js +1358 -0
- package/dist/openspeech/providers/volcengine-streaming.provider.js.map +1 -0
- package/dist/openspeech/providers/volcengine.provider.d.ts +144 -0
- package/dist/openspeech/providers/volcengine.provider.d.ts.map +1 -0
- package/dist/openspeech/providers/volcengine.provider.js +337 -0
- package/dist/openspeech/providers/volcengine.provider.js.map +1 -0
- package/dist/openspeech/types.d.ts +408 -0
- package/dist/openspeech/types.d.ts.map +1 -0
- package/dist/openspeech/types.js +11 -0
- package/dist/openspeech/types.js.map +1 -0
- package/dist/sms/index.d.ts +5 -0
- package/dist/sms/index.d.ts.map +1 -0
- package/dist/sms/index.js +29 -0
- package/dist/sms/index.js.map +1 -0
- package/dist/sms/sms.factory.d.ts.map +1 -1
- package/dist/sms/sms.factory.js +6 -6
- package/dist/sms/sms.factory.js.map +1 -1
- package/dist/sms/sms.module.d.ts.map +1 -1
- package/dist/sms/sms.module.js.map +1 -1
- package/dist/sms/sms.service.d.ts.map +1 -1
- package/dist/sms/sms.service.js.map +1 -1
- package/dist/sms/types.d.ts.map +1 -1
- package/dist/sms/types.js.map +1 -1
- package/dist/streaming-asr/index.d.ts +45 -0
- package/dist/streaming-asr/index.d.ts.map +1 -0
- package/dist/streaming-asr/index.js +66 -0
- package/dist/streaming-asr/index.js.map +1 -0
- package/dist/streaming-asr/streaming-asr.module.d.ts.map +1 -1
- package/dist/streaming-asr/streaming-asr.module.js.map +1 -1
- package/dist/streaming-asr/streaming-asr.service.d.ts.map +1 -1
- package/dist/streaming-asr/streaming-asr.service.js +2 -2
- package/dist/streaming-asr/streaming-asr.service.js.map +1 -1
- package/dist/streaming-asr/types.d.ts +1 -1
- package/dist/streaming-asr/types.d.ts.map +1 -1
- package/dist/streaming-asr/types.js.map +1 -1
- package/dist/system-health/index.d.ts +7 -0
- package/dist/system-health/index.d.ts.map +1 -0
- package/dist/system-health/index.js +25 -0
- package/dist/system-health/index.js.map +1 -0
- package/dist/system-health/system-health.controller.d.ts.map +1 -1
- package/dist/system-health/system-health.controller.js.map +1 -1
- package/dist/system-health/system-health.module.d.ts.map +1 -1
- package/dist/system-health/system-health.module.js.map +1 -1
- package/dist/system-health/system-health.service.d.ts.map +1 -1
- package/dist/system-health/system-health.service.js.map +1 -1
- package/dist/transcode/config/aliyun-oss.config.d.ts +14 -0
- package/dist/transcode/config/aliyun-oss.config.d.ts.map +1 -0
- package/dist/transcode/config/aliyun-oss.config.js +3 -0
- package/dist/transcode/config/aliyun-oss.config.js.map +1 -0
- package/dist/transcode/config/transcode.config.d.ts +55 -0
- package/dist/transcode/config/transcode.config.d.ts.map +1 -0
- package/dist/transcode/config/transcode.config.js +98 -0
- package/dist/transcode/config/transcode.config.js.map +1 -0
- package/dist/transcode/index.d.ts +27 -0
- package/dist/transcode/index.d.ts.map +1 -0
- package/dist/transcode/index.js +55 -0
- package/dist/transcode/index.js.map +1 -0
- package/dist/transcode/modules/aliyun-imm/aliyun-imm.client.d.ts +157 -0
- package/dist/transcode/modules/aliyun-imm/aliyun-imm.client.d.ts.map +1 -0
- package/dist/transcode/modules/aliyun-imm/aliyun-imm.client.js +880 -0
- package/dist/transcode/modules/aliyun-imm/aliyun-imm.client.js.map +1 -0
- package/dist/transcode/modules/aliyun-imm/aliyun-imm.module.d.ts +3 -0
- package/dist/transcode/modules/aliyun-imm/aliyun-imm.module.d.ts.map +1 -0
- package/dist/transcode/modules/aliyun-imm/aliyun-imm.module.js +23 -0
- package/dist/transcode/modules/aliyun-imm/aliyun-imm.module.js.map +1 -0
- package/dist/transcode/modules/aliyun-oss/aliyun-oss-transcode.client.d.ts +252 -0
- package/dist/transcode/modules/aliyun-oss/aliyun-oss-transcode.client.d.ts.map +1 -0
- package/dist/transcode/modules/aliyun-oss/aliyun-oss-transcode.client.js +1372 -0
- package/dist/transcode/modules/aliyun-oss/aliyun-oss-transcode.client.js.map +1 -0
- package/dist/transcode/modules/aliyun-oss/aliyun-oss-transcode.module.d.ts +3 -0
- package/dist/transcode/modules/aliyun-oss/aliyun-oss-transcode.module.d.ts.map +1 -0
- package/dist/transcode/modules/aliyun-oss/aliyun-oss-transcode.module.js +25 -0
- package/dist/transcode/modules/aliyun-oss/aliyun-oss-transcode.module.js.map +1 -0
- package/dist/transcode/modules/transcode-strategy/transcode-strategy.client.d.ts +118 -0
- package/dist/transcode/modules/transcode-strategy/transcode-strategy.client.d.ts.map +1 -0
- package/dist/transcode/modules/transcode-strategy/transcode-strategy.client.js +566 -0
- package/dist/transcode/modules/transcode-strategy/transcode-strategy.client.js.map +1 -0
- package/dist/transcode/modules/transcode-strategy/transcode-strategy.module.d.ts +3 -0
- package/dist/transcode/modules/transcode-strategy/transcode-strategy.module.d.ts.map +1 -0
- package/dist/transcode/modules/transcode-strategy/transcode-strategy.module.js +33 -0
- package/dist/transcode/modules/transcode-strategy/transcode-strategy.module.js.map +1 -0
- package/dist/transcode/modules/volcengine-tos/volcengine-tos-transcode.client.d.ts +93 -0
- package/dist/transcode/modules/volcengine-tos/volcengine-tos-transcode.client.d.ts.map +1 -0
- package/dist/transcode/modules/volcengine-tos/volcengine-tos-transcode.client.js +487 -0
- package/dist/transcode/modules/volcengine-tos/volcengine-tos-transcode.client.js.map +1 -0
- package/dist/transcode/modules/volcengine-tos/volcengine-tos-transcode.dto.d.ts +505 -0
- package/dist/transcode/modules/volcengine-tos/volcengine-tos-transcode.dto.d.ts.map +1 -0
- package/dist/transcode/modules/volcengine-tos/volcengine-tos-transcode.dto.js +10 -0
- package/dist/transcode/modules/volcengine-tos/volcengine-tos-transcode.dto.js.map +1 -0
- package/dist/transcode/modules/volcengine-tos/volcengine-tos-transcode.module.d.ts +3 -0
- package/dist/transcode/modules/volcengine-tos/volcengine-tos-transcode.module.d.ts.map +1 -0
- package/dist/transcode/modules/volcengine-tos/volcengine-tos-transcode.module.js +31 -0
- package/dist/transcode/modules/volcengine-tos/volcengine-tos-transcode.module.js.map +1 -0
- package/dist/transcode/types/transcode.types.d.ts +93 -0
- package/dist/transcode/types/transcode.types.d.ts.map +1 -0
- package/dist/transcode/types/transcode.types.js +3 -0
- package/dist/transcode/types/transcode.types.js.map +1 -0
- package/dist/transcode/utils/file.validator.d.ts +43 -0
- package/dist/transcode/utils/file.validator.d.ts.map +1 -0
- package/dist/transcode/utils/file.validator.js +126 -0
- package/dist/transcode/utils/file.validator.js.map +1 -0
- package/dist/transcode/utils/transcode.helper.d.ts +42 -0
- package/dist/transcode/utils/transcode.helper.d.ts.map +1 -0
- package/dist/transcode/utils/transcode.helper.js +221 -0
- package/dist/transcode/utils/transcode.helper.js.map +1 -0
- package/dist/uploader/index.d.ts +3 -0
- package/dist/uploader/index.d.ts.map +1 -0
- package/dist/uploader/index.js +8 -0
- package/dist/uploader/index.js.map +1 -0
- package/dist/uploader/uploader.module.d.ts.map +1 -1
- package/dist/uploader/uploader.module.js.map +1 -1
- package/dist/uploader/uploader.service.d.ts +1 -1
- package/dist/uploader/uploader.service.d.ts.map +1 -1
- package/dist/uploader/uploader.service.js +1 -1
- package/dist/uploader/uploader.service.js.map +1 -1
- package/dist/verify/index.d.ts.map +1 -1
- package/dist/verify/index.js.map +1 -1
- package/dist/verify/verify.client.d.ts.map +1 -1
- package/dist/verify/verify.client.js.map +1 -1
- package/dist/verify/verify.module.d.ts.map +1 -1
- package/dist/verify/verify.module.js.map +1 -1
- package/dist/volcengine-tts/dto/tts.dto.d.ts +52 -0
- package/dist/volcengine-tts/dto/tts.dto.d.ts.map +1 -0
- package/dist/volcengine-tts/dto/tts.dto.js +59 -0
- package/dist/volcengine-tts/dto/tts.dto.js.map +1 -0
- package/dist/volcengine-tts/index.d.ts +4 -0
- package/dist/volcengine-tts/index.d.ts.map +1 -0
- package/dist/volcengine-tts/index.js +20 -0
- package/dist/volcengine-tts/index.js.map +1 -0
- package/dist/volcengine-tts/volcengine-tts.client.d.ts +104 -0
- package/dist/volcengine-tts/volcengine-tts.client.d.ts.map +1 -0
- package/dist/volcengine-tts/volcengine-tts.client.js +690 -0
- package/dist/volcengine-tts/volcengine-tts.client.js.map +1 -0
- package/dist/volcengine-tts/volcengine-tts.module.d.ts +3 -0
- package/dist/volcengine-tts/volcengine-tts.module.d.ts.map +1 -0
- package/dist/volcengine-tts/volcengine-tts.module.js +34 -0
- package/dist/volcengine-tts/volcengine-tts.module.js.map +1 -0
- package/package.json +30 -9
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview 阿里云 OpenSpeech 语音识别服务提供商
|
|
4
|
+
*
|
|
5
|
+
* 本文件实现了阿里云 NLS(自然语言服务)的录音文件识别功能。
|
|
6
|
+
* 阿里云语音识别服务文档:https://help.aliyun.com/document_detail/90727.html
|
|
7
|
+
*
|
|
8
|
+
* @module openspeech/providers/aliyun
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.AliyunOpenspeechProvider = void 0;
|
|
12
|
+
const base_provider_1 = require("./base.provider");
|
|
13
|
+
const infra_utils_1 = require("@dofe/infra-utils");
|
|
14
|
+
/**
|
|
15
|
+
* 阿里云语音识别服务提供商
|
|
16
|
+
*
|
|
17
|
+
* @description 封装了阿里云 NLS 录音文件识别的核心功能:
|
|
18
|
+
* - 任务提交:将音频文件提交到阿里云进行语音识别
|
|
19
|
+
* - 状态查询:查询识别任务的处理状态和结果
|
|
20
|
+
*
|
|
21
|
+
* 主要特性:
|
|
22
|
+
* - 支持智能分轨(双声道对话场景)
|
|
23
|
+
* - 支持语义句子检测
|
|
24
|
+
* - 支持时间戳对齐
|
|
25
|
+
* - 支持回调通知
|
|
26
|
+
*
|
|
27
|
+
* @class AliyunOpenspeechProvider
|
|
28
|
+
* @extends {BaseOpenspeechProvider}
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const provider = new AliyunOpenspeechProvider(logger, {
|
|
33
|
+
* accessKeyId: 'your-access-key-id',
|
|
34
|
+
* accessKeySecret: 'your-access-key-secret',
|
|
35
|
+
* endpoint: 'https://nls-meta.cn-shanghai.aliyuncs.com',
|
|
36
|
+
* nslAppKey: 'your-app-key',
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* // 提交任务
|
|
40
|
+
* const taskId = await provider.submitTask({
|
|
41
|
+
* audioUrl: 'https://example.com/audio.mp3',
|
|
42
|
+
* });
|
|
43
|
+
*
|
|
44
|
+
* // 查询状态
|
|
45
|
+
* const result = await provider.queryTaskStatus(taskId);
|
|
46
|
+
* if (result.status === 'success') {
|
|
47
|
+
* console.log('识别结果:', result.text);
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
class AliyunOpenspeechProvider extends base_provider_1.BaseOpenspeechProvider {
|
|
52
|
+
config;
|
|
53
|
+
/**
|
|
54
|
+
* 云服务商标识:阿里云 OSS
|
|
55
|
+
* @readonly
|
|
56
|
+
*/
|
|
57
|
+
vendor = 'oss';
|
|
58
|
+
/**
|
|
59
|
+
* 构造函数
|
|
60
|
+
*
|
|
61
|
+
* @param {Logger} logger - Winston 日志记录器
|
|
62
|
+
* @param {AliyunOpenspeechConfig} config - 阿里云配置
|
|
63
|
+
* @throws {Error} 配置缺失时抛出异常
|
|
64
|
+
*/
|
|
65
|
+
constructor(logger, config) {
|
|
66
|
+
super(logger);
|
|
67
|
+
this.config = config;
|
|
68
|
+
if (!config) {
|
|
69
|
+
throw new Error('Aliyun OpenSpeech config is required');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 提交语音识别任务到阿里云
|
|
74
|
+
*
|
|
75
|
+
* @description 调用阿里云 NLS API 提交录音文件识别任务。
|
|
76
|
+
* 任务提交后,阿里云会异步处理,可通过回调或轮询获取结果。
|
|
77
|
+
*
|
|
78
|
+
* 任务配置说明:
|
|
79
|
+
* - auto_split: 开启智能分轨,适用于双方对话场景
|
|
80
|
+
* - enable_semantic_sentence_detection: 开启语义句子检测
|
|
81
|
+
* - enable_timestamp_alignment: 开启时间戳对齐
|
|
82
|
+
* - enable_callback: 开启回调通知
|
|
83
|
+
*
|
|
84
|
+
* @param {SubmitTaskParams} params - 任务提交参数
|
|
85
|
+
* @param {string} params.audioUrl - 音频文件 URL
|
|
86
|
+
* @param {string} [params.callbackUrl] - 回调 URL(可选,默认使用系统配置)
|
|
87
|
+
* @returns {Promise<string>} 阿里云返回的任务 ID (TaskId)
|
|
88
|
+
* @throws {Error} 配置缺失或 API 调用失败时抛出异常
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* const taskId = await provider.submitTask({
|
|
93
|
+
* audioUrl: 'https://bucket.oss-cn-hangzhou.aliyuncs.com/audio.mp3',
|
|
94
|
+
* });
|
|
95
|
+
* console.log('Task ID:', taskId);
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
async submitTask(params) {
|
|
99
|
+
const { audioUrl, callbackUrl } = params;
|
|
100
|
+
if (!this.config) {
|
|
101
|
+
throw new Error('Aliyun OpenSpeech config (oss) not found');
|
|
102
|
+
}
|
|
103
|
+
// 校验必要的配置项
|
|
104
|
+
if (!this.config.accessKeyId || !this.config.accessKeySecret) {
|
|
105
|
+
throw new Error('Aliyun OpenSpeech config missing accessKeyId or accessKeySecret');
|
|
106
|
+
}
|
|
107
|
+
if (!this.config.nslAppKey) {
|
|
108
|
+
throw new Error('Aliyun OpenSpeech config missing nslAppKey');
|
|
109
|
+
}
|
|
110
|
+
// 动态引入阿里云 NLS SDK
|
|
111
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
112
|
+
const NlsClient = require('@alicloud/nls-filetrans-2018-08-17');
|
|
113
|
+
try {
|
|
114
|
+
// 创建 NLS 客户端实例
|
|
115
|
+
const nlsClient = new NlsClient({
|
|
116
|
+
accessKeyId: this.config.accessKeyId,
|
|
117
|
+
accessKeySecret: this.config.accessKeySecret,
|
|
118
|
+
endpoint: this.config.endpoint,
|
|
119
|
+
apiVersion: this.config.apiVersion || '2018-08-17',
|
|
120
|
+
});
|
|
121
|
+
// 构建回调 URL
|
|
122
|
+
const webhookUrl = callbackUrl ||
|
|
123
|
+
`${infra_utils_1.environmentUtil.generateEnvironmentUrls().api}/webhook/audio-transcribe/oss`;
|
|
124
|
+
// 构建任务参数
|
|
125
|
+
// 详细参数说明参考:https://help.aliyun.com/document_detail/90727.html
|
|
126
|
+
const task = {
|
|
127
|
+
// 应用 AppKey
|
|
128
|
+
app_key: this.config.nslAppKey,
|
|
129
|
+
// 音频文件链接
|
|
130
|
+
file_link: audioUrl,
|
|
131
|
+
// API 版本,4.0 支持更多功能
|
|
132
|
+
version: '4.0',
|
|
133
|
+
// 是否返回词级别时间戳
|
|
134
|
+
enable_words: false,
|
|
135
|
+
// 是否开启回调
|
|
136
|
+
enable_callback: true,
|
|
137
|
+
// 是否开启采样率自适应
|
|
138
|
+
enable_sample_rate_adaptive: true,
|
|
139
|
+
// 回调地址
|
|
140
|
+
callback_url: webhookUrl,
|
|
141
|
+
// 智能分轨:双声道对话场景下,根据 ChannelId 判断发言人
|
|
142
|
+
auto_split: true,
|
|
143
|
+
// 语气词过滤(声音顺滑)
|
|
144
|
+
enable_disfluency: false,
|
|
145
|
+
// 语义句子检测:识别句子中的语义信息
|
|
146
|
+
enable_semantic_sentence_detection: true,
|
|
147
|
+
// 时间戳对齐:识别句子中的时间戳信息
|
|
148
|
+
enable_timestamp_alignment: true,
|
|
149
|
+
};
|
|
150
|
+
const taskParams = {
|
|
151
|
+
Task: JSON.stringify(task),
|
|
152
|
+
};
|
|
153
|
+
const options = {
|
|
154
|
+
method: 'POST',
|
|
155
|
+
};
|
|
156
|
+
this.logInfo('Submitting transcription task', {
|
|
157
|
+
audioUrl,
|
|
158
|
+
callbackUrl: webhookUrl,
|
|
159
|
+
});
|
|
160
|
+
// 提交任务
|
|
161
|
+
const submitResp = await nlsClient.submitTask(taskParams, options);
|
|
162
|
+
const taskId = submitResp?.TaskId;
|
|
163
|
+
if (!taskId) {
|
|
164
|
+
this.logError('Submit task failed: TaskId missing', {
|
|
165
|
+
response: submitResp,
|
|
166
|
+
});
|
|
167
|
+
throw new Error('Aliyun submitTask failed: TaskId missing');
|
|
168
|
+
}
|
|
169
|
+
this.logInfo('Task submitted successfully', { taskId });
|
|
170
|
+
return taskId;
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
this.logError('Submit task error', {
|
|
174
|
+
audioUrl,
|
|
175
|
+
error: error.message,
|
|
176
|
+
});
|
|
177
|
+
throw error;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* 查询阿里云语音识别任务状态
|
|
182
|
+
*
|
|
183
|
+
* @description 调用阿里云 NLS API 查询任务状态。
|
|
184
|
+
* 任务状态包括:
|
|
185
|
+
* - SUCCESS: 识别成功,返回识别文本
|
|
186
|
+
* - RUNNING: 正在处理中
|
|
187
|
+
* - QUEUEING: 排队等待中
|
|
188
|
+
* - FAIL: 识别失败
|
|
189
|
+
* - EXPIRED: 任务过期
|
|
190
|
+
*
|
|
191
|
+
* @param {string} vendorTaskId - 阿里云任务 ID
|
|
192
|
+
* @returns {Promise<TaskStatusResult>} 任务状态和结果
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```typescript
|
|
196
|
+
* const result = await provider.queryTaskStatus('task-123456');
|
|
197
|
+
*
|
|
198
|
+
* switch (result.status) {
|
|
199
|
+
* case 'success':
|
|
200
|
+
* console.log('识别文本:', result.text);
|
|
201
|
+
* break;
|
|
202
|
+
* case 'processing':
|
|
203
|
+
* console.log('处理中,请稍后重试');
|
|
204
|
+
* break;
|
|
205
|
+
* case 'error':
|
|
206
|
+
* console.error('识别失败:', result.error);
|
|
207
|
+
* break;
|
|
208
|
+
* }
|
|
209
|
+
* ```
|
|
210
|
+
*/
|
|
211
|
+
async queryTaskStatus(vendorTaskId) {
|
|
212
|
+
if (!this.config) {
|
|
213
|
+
throw new Error('Aliyun OpenSpeech config (oss) not found');
|
|
214
|
+
}
|
|
215
|
+
// 校验必要的配置项
|
|
216
|
+
if (!this.config.accessKeyId || !this.config.accessKeySecret) {
|
|
217
|
+
throw new Error('Aliyun OpenSpeech config missing accessKeyId or accessKeySecret');
|
|
218
|
+
}
|
|
219
|
+
// 动态引入阿里云 NLS SDK
|
|
220
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
221
|
+
const NlsClient = require('@alicloud/nls-filetrans-2018-08-17');
|
|
222
|
+
try {
|
|
223
|
+
const nlsClient = new NlsClient({
|
|
224
|
+
accessKeyId: this.config.accessKeyId,
|
|
225
|
+
accessKeySecret: this.config.accessKeySecret,
|
|
226
|
+
endpoint: this.config.endpoint,
|
|
227
|
+
apiVersion: this.config.apiVersion || '2018-08-17',
|
|
228
|
+
});
|
|
229
|
+
// 查询任务结果
|
|
230
|
+
const resultResp = await nlsClient.getTaskResult({
|
|
231
|
+
TaskId: vendorTaskId,
|
|
232
|
+
});
|
|
233
|
+
const status = resultResp?.StatusText;
|
|
234
|
+
// 处理成功状态
|
|
235
|
+
if (status === 'SUCCESS') {
|
|
236
|
+
const text = resultResp?.Result;
|
|
237
|
+
const textStr = typeof text === 'string' ? text : JSON.stringify(text || '');
|
|
238
|
+
this.logInfo('Transcription succeeded', { vendorTaskId });
|
|
239
|
+
return {
|
|
240
|
+
status: 'success',
|
|
241
|
+
text: textStr,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
// 处理失败状态
|
|
245
|
+
if (status === 'FAIL' || status === 'EXPIRED') {
|
|
246
|
+
this.logError('Transcription failed', {
|
|
247
|
+
vendorTaskId,
|
|
248
|
+
status,
|
|
249
|
+
response: resultResp,
|
|
250
|
+
});
|
|
251
|
+
return {
|
|
252
|
+
status: 'error',
|
|
253
|
+
error: `Aliyun transcription failed, status=${status}`,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
// 其他状态(RUNNING, QUEUEING 等)视为处理中
|
|
257
|
+
return {
|
|
258
|
+
status: 'processing',
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
this.logError('Query task status error', {
|
|
263
|
+
vendorTaskId,
|
|
264
|
+
error: error.message,
|
|
265
|
+
});
|
|
266
|
+
return {
|
|
267
|
+
status: 'error',
|
|
268
|
+
error: error.message,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
exports.AliyunOpenspeechProvider = AliyunOpenspeechProvider;
|
|
274
|
+
//# sourceMappingURL=aliyun.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aliyun.provider.js","sourceRoot":"","sources":["../../../src/openspeech/providers/aliyun.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview OpenSpeech 服务提供商基类
|
|
3
|
+
*
|
|
4
|
+
* 本文件定义了语音识别服务提供商的抽象基类,提供了通用的日志记录功能,
|
|
5
|
+
* 并定义了子类必须实现的抽象方法。
|
|
6
|
+
*
|
|
7
|
+
* @module openspeech/providers/base
|
|
8
|
+
*/
|
|
9
|
+
import { Logger } from 'winston';
|
|
10
|
+
import { FileBucketVendor } from '@prisma/client';
|
|
11
|
+
import { IOpenspeechProvider, SubmitTaskParams, TaskStatusResult } from '../types';
|
|
12
|
+
/**
|
|
13
|
+
* 语音识别服务提供商抽象基类
|
|
14
|
+
*
|
|
15
|
+
* @description 提供了所有云服务商实现类的公共基础设施:
|
|
16
|
+
* - 统一的日志记录器注入
|
|
17
|
+
* - 定义子类必须实现的抽象方法
|
|
18
|
+
* - 提供便捷的日志记录方法
|
|
19
|
+
*
|
|
20
|
+
* @abstract
|
|
21
|
+
* @class BaseOpenspeechProvider
|
|
22
|
+
* @implements {IOpenspeechProvider}
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* class MyProvider extends BaseOpenspeechProvider {
|
|
27
|
+
* readonly vendor = 'oss';
|
|
28
|
+
*
|
|
29
|
+
* constructor(logger: Logger) {
|
|
30
|
+
* super(logger);
|
|
31
|
+
* }
|
|
32
|
+
*
|
|
33
|
+
* async submitTask(params: SubmitTaskParams): Promise<string> {
|
|
34
|
+
* this.logInfo('Submitting task', { audioUrl: params.audioUrl });
|
|
35
|
+
* // 实现提交逻辑
|
|
36
|
+
* }
|
|
37
|
+
*
|
|
38
|
+
* async queryTaskStatus(vendorTaskId: string): Promise<TaskStatusResult> {
|
|
39
|
+
* // 实现查询逻辑
|
|
40
|
+
* }
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare abstract class BaseOpenspeechProvider implements IOpenspeechProvider {
|
|
45
|
+
protected readonly logger: Logger;
|
|
46
|
+
/**
|
|
47
|
+
* 云服务商标识,子类必须定义
|
|
48
|
+
*/
|
|
49
|
+
abstract readonly vendor: FileBucketVendor;
|
|
50
|
+
/**
|
|
51
|
+
* 构造函数
|
|
52
|
+
*
|
|
53
|
+
* @param {Logger} logger - Winston 日志记录器实例
|
|
54
|
+
* @protected
|
|
55
|
+
*/
|
|
56
|
+
constructor(logger: Logger);
|
|
57
|
+
/**
|
|
58
|
+
* 提交语音识别任务
|
|
59
|
+
*
|
|
60
|
+
* @abstract
|
|
61
|
+
* @param {SubmitTaskParams} params - 任务提交参数
|
|
62
|
+
* @returns {Promise<string>} 云服务商返回的任务 ID
|
|
63
|
+
*/
|
|
64
|
+
abstract submitTask(params: SubmitTaskParams): Promise<string>;
|
|
65
|
+
/**
|
|
66
|
+
* 查询语音识别任务状态
|
|
67
|
+
*
|
|
68
|
+
* @abstract
|
|
69
|
+
* @param {string} vendorTaskId - 云服务商的任务 ID
|
|
70
|
+
* @returns {Promise<TaskStatusResult>} 任务状态和结果
|
|
71
|
+
*/
|
|
72
|
+
abstract queryTaskStatus(vendorTaskId: string): Promise<TaskStatusResult>;
|
|
73
|
+
/**
|
|
74
|
+
* 记录信息日志
|
|
75
|
+
*
|
|
76
|
+
* @protected
|
|
77
|
+
* @param {string} message - 日志消息
|
|
78
|
+
* @param {Record<string, unknown>} [meta] - 附加元数据
|
|
79
|
+
*/
|
|
80
|
+
protected logInfo(message: string, meta?: Record<string, unknown>): void;
|
|
81
|
+
/**
|
|
82
|
+
* 记录错误日志
|
|
83
|
+
*
|
|
84
|
+
* @protected
|
|
85
|
+
* @param {string} message - 日志消息
|
|
86
|
+
* @param {Record<string, unknown>} [meta] - 附加元数据
|
|
87
|
+
*/
|
|
88
|
+
protected logError(message: string, meta?: Record<string, unknown>): void;
|
|
89
|
+
/**
|
|
90
|
+
* 记录警告日志
|
|
91
|
+
*
|
|
92
|
+
* @protected
|
|
93
|
+
* @param {string} message - 日志消息
|
|
94
|
+
* @param {Record<string, unknown>} [meta] - 附加元数据
|
|
95
|
+
*/
|
|
96
|
+
protected logWarn(message: string, meta?: Record<string, unknown>): void;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=base.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.provider.d.ts","sourceRoot":"","sources":["../../../src/openspeech/providers/base.provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAElB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,8BAAsB,sBAAuB,YAAW,mBAAmB;IAY7D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAX7C;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAE3C;;;;;OAKG;gBAC4B,MAAM,EAAE,MAAM;IAE7C;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAE9D;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAEzE;;;;;;OAMG;IACH,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIxE;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIzE;;;;;;OAMG;IACH,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAGzE"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview OpenSpeech 服务提供商基类
|
|
4
|
+
*
|
|
5
|
+
* 本文件定义了语音识别服务提供商的抽象基类,提供了通用的日志记录功能,
|
|
6
|
+
* 并定义了子类必须实现的抽象方法。
|
|
7
|
+
*
|
|
8
|
+
* @module openspeech/providers/base
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.BaseOpenspeechProvider = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* 语音识别服务提供商抽象基类
|
|
14
|
+
*
|
|
15
|
+
* @description 提供了所有云服务商实现类的公共基础设施:
|
|
16
|
+
* - 统一的日志记录器注入
|
|
17
|
+
* - 定义子类必须实现的抽象方法
|
|
18
|
+
* - 提供便捷的日志记录方法
|
|
19
|
+
*
|
|
20
|
+
* @abstract
|
|
21
|
+
* @class BaseOpenspeechProvider
|
|
22
|
+
* @implements {IOpenspeechProvider}
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* class MyProvider extends BaseOpenspeechProvider {
|
|
27
|
+
* readonly vendor = 'oss';
|
|
28
|
+
*
|
|
29
|
+
* constructor(logger: Logger) {
|
|
30
|
+
* super(logger);
|
|
31
|
+
* }
|
|
32
|
+
*
|
|
33
|
+
* async submitTask(params: SubmitTaskParams): Promise<string> {
|
|
34
|
+
* this.logInfo('Submitting task', { audioUrl: params.audioUrl });
|
|
35
|
+
* // 实现提交逻辑
|
|
36
|
+
* }
|
|
37
|
+
*
|
|
38
|
+
* async queryTaskStatus(vendorTaskId: string): Promise<TaskStatusResult> {
|
|
39
|
+
* // 实现查询逻辑
|
|
40
|
+
* }
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
class BaseOpenspeechProvider {
|
|
45
|
+
logger;
|
|
46
|
+
/**
|
|
47
|
+
* 构造函数
|
|
48
|
+
*
|
|
49
|
+
* @param {Logger} logger - Winston 日志记录器实例
|
|
50
|
+
* @protected
|
|
51
|
+
*/
|
|
52
|
+
constructor(logger) {
|
|
53
|
+
this.logger = logger;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 记录信息日志
|
|
57
|
+
*
|
|
58
|
+
* @protected
|
|
59
|
+
* @param {string} message - 日志消息
|
|
60
|
+
* @param {Record<string, unknown>} [meta] - 附加元数据
|
|
61
|
+
*/
|
|
62
|
+
logInfo(message, meta) {
|
|
63
|
+
this.logger.info(`[${this.vendor}] ${message}`, meta);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 记录错误日志
|
|
67
|
+
*
|
|
68
|
+
* @protected
|
|
69
|
+
* @param {string} message - 日志消息
|
|
70
|
+
* @param {Record<string, unknown>} [meta] - 附加元数据
|
|
71
|
+
*/
|
|
72
|
+
logError(message, meta) {
|
|
73
|
+
this.logger.error(`[${this.vendor}] ${message}`, meta);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 记录警告日志
|
|
77
|
+
*
|
|
78
|
+
* @protected
|
|
79
|
+
* @param {string} message - 日志消息
|
|
80
|
+
* @param {Record<string, unknown>} [meta] - 附加元数据
|
|
81
|
+
*/
|
|
82
|
+
logWarn(message, meta) {
|
|
83
|
+
this.logger.warn(`[${this.vendor}] ${message}`, meta);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.BaseOpenspeechProvider = BaseOpenspeechProvider;
|
|
87
|
+
//# sourceMappingURL=base.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.provider.js","sourceRoot":"","sources":["../../../src/openspeech/providers/base.provider.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAUH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAsB,sBAAsB;IAYX;IAN/B;;;;;OAKG;IACH,YAA+B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAoBjD;;;;;;OAMG;IACO,OAAO,CAAC,OAAe,EAAE,IAA8B;QAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;OAMG;IACO,QAAQ,CAAC,OAAe,EAAE,IAA8B;QAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;OAMG;IACO,OAAO,CAAC,OAAe,EAAE,IAA8B;QAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;CACF;AAhED,wDAgEC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview OpenSpeech 服务提供商导出
|
|
3
|
+
*
|
|
4
|
+
* @module openspeech/providers
|
|
5
|
+
*/
|
|
6
|
+
export * from './base.provider';
|
|
7
|
+
export * from './aliyun.provider';
|
|
8
|
+
export * from './volcengine.provider';
|
|
9
|
+
export * from './volcengine-streaming.provider';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/openspeech/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview OpenSpeech 服务提供商导出
|
|
4
|
+
*
|
|
5
|
+
* @module openspeech/providers
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
__exportStar(require("./base.provider"), exports);
|
|
23
|
+
__exportStar(require("./aliyun.provider"), exports);
|
|
24
|
+
__exportStar(require("./volcengine.provider"), exports);
|
|
25
|
+
__exportStar(require("./volcengine-streaming.provider"), exports);
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/openspeech/providers/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,kDAAgC;AAChC,oDAAkC;AAClC,wDAAsC;AACtC,kEAAgD"}
|