@dofe/infra-clients 0.1.17 → 0.1.18
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/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/sms/sms-aliyun.client.d.ts +2 -1
- package/dist/internal/sms/sms-aliyun.client.d.ts.map +1 -1
- package/dist/internal/sms/sms-volcengine.client.d.ts +2 -2
- package/package.json +72 -7
- package/dist/internal/file-cdn/dto/file-cdn.dto.d.ts +0 -78
- package/dist/internal/file-cdn/dto/file-cdn.dto.d.ts.map +0 -1
- package/dist/internal/file-cdn/dto/file-cdn.dto.js +0 -70
- package/dist/internal/file-cdn/dto/file-cdn.dto.js.map +0 -1
- package/dist/internal/file-cdn/file-cdn.client.d.ts +0 -283
- package/dist/internal/file-cdn/file-cdn.client.d.ts.map +0 -1
- package/dist/internal/file-cdn/file-cdn.client.js +0 -526
- package/dist/internal/file-cdn/file-cdn.client.js.map +0 -1
- package/dist/internal/file-cdn/file-cdn.module.d.ts +0 -3
- package/dist/internal/file-cdn/file-cdn.module.d.ts.map +0 -1
- package/dist/internal/file-cdn/file-cdn.module.js +0 -32
- package/dist/internal/file-cdn/file-cdn.module.js.map +0 -1
- package/dist/internal/file-cdn/index.d.ts +0 -35
- package/dist/internal/file-cdn/index.d.ts.map +0 -1
- package/dist/internal/file-cdn/index.js +0 -54
- package/dist/internal/file-cdn/index.js.map +0 -1
- package/dist/internal/openspeech/index.d.ts +0 -35
- package/dist/internal/openspeech/index.d.ts.map +0 -1
- package/dist/internal/openspeech/index.js +0 -56
- package/dist/internal/openspeech/index.js.map +0 -1
- package/dist/internal/openspeech/openspeech.client.d.ts +0 -304
- package/dist/internal/openspeech/openspeech.client.d.ts.map +0 -1
- package/dist/internal/openspeech/openspeech.client.js +0 -405
- package/dist/internal/openspeech/openspeech.client.js.map +0 -1
- package/dist/internal/openspeech/openspeech.factory.d.ts +0 -247
- package/dist/internal/openspeech/openspeech.factory.d.ts.map +0 -1
- package/dist/internal/openspeech/openspeech.factory.js +0 -406
- package/dist/internal/openspeech/openspeech.factory.js.map +0 -1
- package/dist/internal/openspeech/openspeech.module.d.ts +0 -45
- package/dist/internal/openspeech/openspeech.module.d.ts.map +0 -1
- package/dist/internal/openspeech/openspeech.module.js +0 -68
- package/dist/internal/openspeech/openspeech.module.js.map +0 -1
- package/dist/internal/openspeech/providers/aliyun.provider.d.ts +0 -125
- package/dist/internal/openspeech/providers/aliyun.provider.d.ts.map +0 -1
- package/dist/internal/openspeech/providers/aliyun.provider.js +0 -274
- package/dist/internal/openspeech/providers/aliyun.provider.js.map +0 -1
- package/dist/internal/openspeech/providers/base.provider.d.ts +0 -98
- package/dist/internal/openspeech/providers/base.provider.d.ts.map +0 -1
- package/dist/internal/openspeech/providers/base.provider.js +0 -87
- package/dist/internal/openspeech/providers/base.provider.js.map +0 -1
- package/dist/internal/openspeech/providers/index.d.ts +0 -10
- package/dist/internal/openspeech/providers/index.d.ts.map +0 -1
- package/dist/internal/openspeech/providers/index.js +0 -26
- package/dist/internal/openspeech/providers/index.js.map +0 -1
- package/dist/internal/openspeech/providers/volcengine-streaming.provider.d.ts +0 -291
- package/dist/internal/openspeech/providers/volcengine-streaming.provider.d.ts.map +0 -1
- package/dist/internal/openspeech/providers/volcengine-streaming.provider.js +0 -1358
- package/dist/internal/openspeech/providers/volcengine-streaming.provider.js.map +0 -1
- package/dist/internal/openspeech/providers/volcengine.provider.d.ts +0 -144
- package/dist/internal/openspeech/providers/volcengine.provider.d.ts.map +0 -1
- package/dist/internal/openspeech/providers/volcengine.provider.js +0 -337
- package/dist/internal/openspeech/providers/volcengine.provider.js.map +0 -1
- package/dist/internal/openspeech/types.d.ts +0 -408
- package/dist/internal/openspeech/types.d.ts.map +0 -1
- package/dist/internal/openspeech/types.js +0 -11
- package/dist/internal/openspeech/types.js.map +0 -1
- package/dist/internal/volcengine-tts/dto/tts.dto.d.ts +0 -52
- package/dist/internal/volcengine-tts/dto/tts.dto.d.ts.map +0 -1
- package/dist/internal/volcengine-tts/dto/tts.dto.js +0 -59
- package/dist/internal/volcengine-tts/dto/tts.dto.js.map +0 -1
- package/dist/internal/volcengine-tts/index.d.ts +0 -4
- package/dist/internal/volcengine-tts/index.d.ts.map +0 -1
- package/dist/internal/volcengine-tts/index.js +0 -20
- package/dist/internal/volcengine-tts/index.js.map +0 -1
- package/dist/internal/volcengine-tts/volcengine-tts.client.d.ts +0 -104
- package/dist/internal/volcengine-tts/volcengine-tts.client.d.ts.map +0 -1
- package/dist/internal/volcengine-tts/volcengine-tts.client.js +0 -690
- package/dist/internal/volcengine-tts/volcengine-tts.client.js.map +0 -1
- package/dist/internal/volcengine-tts/volcengine-tts.module.d.ts +0 -3
- package/dist/internal/volcengine-tts/volcengine-tts.module.d.ts.map +0 -1
- package/dist/internal/volcengine-tts/volcengine-tts.module.js +0 -34
- package/dist/internal/volcengine-tts/volcengine-tts.module.js.map +0 -1
|
@@ -1,406 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @fileoverview OpenSpeech 服务提供商工厂
|
|
4
|
-
*
|
|
5
|
-
* 本文件实现了语音识别服务提供商的工厂模式,负责:
|
|
6
|
-
* - 根据云服务商类型创建对应的提供商实例
|
|
7
|
-
* - 管理提供商实例的生命周期(单例模式)
|
|
8
|
-
* - 提供统一的提供商获取接口
|
|
9
|
-
* - 支持录音文件识别(AUC)和流式识别(SAUC)两种模式
|
|
10
|
-
*
|
|
11
|
-
* @module openspeech/factory
|
|
12
|
-
*/
|
|
13
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
14
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
15
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
16
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
17
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
18
|
-
};
|
|
19
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
20
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
21
|
-
};
|
|
22
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
23
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.OpenspeechProviderFactory = void 0;
|
|
27
|
-
const common_1 = require("@nestjs/common");
|
|
28
|
-
const axios_1 = require("@nestjs/axios");
|
|
29
|
-
const nest_winston_1 = require("nest-winston");
|
|
30
|
-
const winston_1 = require("winston");
|
|
31
|
-
const infra_common_1 = require("@dofe/infra-common");
|
|
32
|
-
const aliyun_provider_1 = require("./providers/aliyun.provider");
|
|
33
|
-
const volcengine_provider_1 = require("./providers/volcengine.provider");
|
|
34
|
-
const volcengine_streaming_provider_1 = require("./providers/volcengine-streaming.provider");
|
|
35
|
-
/**
|
|
36
|
-
* OpenSpeech 服务提供商工厂
|
|
37
|
-
*
|
|
38
|
-
* @description 使用工厂模式管理不同云服务商的语音识别服务提供商。
|
|
39
|
-
* 主要职责:
|
|
40
|
-
* - 根据 vendor 类型创建对应的提供商实例
|
|
41
|
-
* - 使用单例模式缓存提供商实例,避免重复创建
|
|
42
|
-
* - 提供统一的提供商获取接口
|
|
43
|
-
* - 支持录音文件识别和流式识别两种模式
|
|
44
|
-
*
|
|
45
|
-
* 支持的云服务商:
|
|
46
|
-
* - 'oss': 阿里云 NLS 语音识别
|
|
47
|
-
* - 'tos': 火山引擎大模型语音识别(支持 AUC 录音识别和 SAUC 流式识别)
|
|
48
|
-
*
|
|
49
|
-
* @class OpenspeechProviderFactory
|
|
50
|
-
*
|
|
51
|
-
* @example
|
|
52
|
-
* ```typescript
|
|
53
|
-
* @Injectable()
|
|
54
|
-
* class MyService {
|
|
55
|
-
* constructor(private readonly factory: OpenspeechProviderFactory) {}
|
|
56
|
-
*
|
|
57
|
-
* // 录音文件识别
|
|
58
|
-
* async transcribe(vendor: FileBucketVendor, audioUrl: string) {
|
|
59
|
-
* const provider = this.factory.getProvider(vendor);
|
|
60
|
-
* const taskId = await provider.submitTask({ audioUrl });
|
|
61
|
-
* // ...
|
|
62
|
-
* }
|
|
63
|
-
*
|
|
64
|
-
* // 流式语音识别
|
|
65
|
-
* async streamingTranscribe(sessionId: string) {
|
|
66
|
-
* const provider = this.factory.getStreamingProvider('tos');
|
|
67
|
-
* const connectionId = await provider.connect(
|
|
68
|
-
* { sessionId, audioFormat: 'pcm' },
|
|
69
|
-
* { onResult: (result) => console.log(result.text) }
|
|
70
|
-
* );
|
|
71
|
-
* // ...
|
|
72
|
-
* }
|
|
73
|
-
* }
|
|
74
|
-
* ```
|
|
75
|
-
*/
|
|
76
|
-
let OpenspeechProviderFactory = class OpenspeechProviderFactory {
|
|
77
|
-
httpService;
|
|
78
|
-
logger;
|
|
79
|
-
/**
|
|
80
|
-
* 录音文件识别提供商实例缓存
|
|
81
|
-
* @private
|
|
82
|
-
*/
|
|
83
|
-
providers = new Map();
|
|
84
|
-
/**
|
|
85
|
-
* 流式识别提供商实例缓存
|
|
86
|
-
* @private
|
|
87
|
-
*/
|
|
88
|
-
streamingProviders = new Map();
|
|
89
|
-
/**
|
|
90
|
-
* OpenSpeech 配置
|
|
91
|
-
* @private
|
|
92
|
-
*/
|
|
93
|
-
openspeechConfig;
|
|
94
|
-
/**
|
|
95
|
-
* 构造函数
|
|
96
|
-
*
|
|
97
|
-
* @param {HttpService} httpService - NestJS HTTP 服务(用于火山引擎)
|
|
98
|
-
* @param {Logger} logger - Winston 日志记录器
|
|
99
|
-
*/
|
|
100
|
-
constructor(httpService, logger) {
|
|
101
|
-
this.httpService = httpService;
|
|
102
|
-
this.logger = logger;
|
|
103
|
-
this.openspeechConfig = (0, infra_common_1.getKeysConfig)()?.openspeech;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* 获取指定云服务商的录音文件识别提供商实例
|
|
107
|
-
*
|
|
108
|
-
* @description 根据 vendor 类型返回对应的提供商实例。
|
|
109
|
-
* 使用单例模式,同一 vendor 只会创建一个实例。
|
|
110
|
-
*
|
|
111
|
-
* @param {FileBucketVendor} vendor - 云服务商类型
|
|
112
|
-
* @returns {IOpenspeechProvider} 提供商实例
|
|
113
|
-
* @throws {Error} 不支持的 vendor 类型或配置缺失时抛出异常
|
|
114
|
-
*
|
|
115
|
-
* @example
|
|
116
|
-
* ```typescript
|
|
117
|
-
* // 获取阿里云提供商
|
|
118
|
-
* const aliyunProvider = factory.getProvider('oss');
|
|
119
|
-
*
|
|
120
|
-
* // 获取火山引擎提供商
|
|
121
|
-
* const volcengineProvider = factory.getProvider('tos');
|
|
122
|
-
* ```
|
|
123
|
-
*/
|
|
124
|
-
getProvider(vendor) {
|
|
125
|
-
// 检查缓存
|
|
126
|
-
if (this.providers.has(vendor)) {
|
|
127
|
-
return this.providers.get(vendor);
|
|
128
|
-
}
|
|
129
|
-
// 创建新实例
|
|
130
|
-
const provider = this.createProvider(vendor);
|
|
131
|
-
this.providers.set(vendor, provider);
|
|
132
|
-
return provider;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* 获取指定云服务商的流式识别提供商实例
|
|
136
|
-
*
|
|
137
|
-
* @description 根据 vendor 类型返回对应的流式识别提供商实例。
|
|
138
|
-
* 目前仅支持火山引擎 (tos)。
|
|
139
|
-
*
|
|
140
|
-
* @param {FileBucketVendor} vendor - 云服务商类型(目前仅支持 'tos')
|
|
141
|
-
* @returns {IStreamingAsrProvider} 流式识别提供商实例
|
|
142
|
-
* @throws {Error} 不支持的 vendor 类型或配置缺失时抛出异常
|
|
143
|
-
*
|
|
144
|
-
* @example
|
|
145
|
-
* ```typescript
|
|
146
|
-
* const streamingProvider = factory.getStreamingProvider('tos');
|
|
147
|
-
* const connectionId = await streamingProvider.connect(
|
|
148
|
-
* { sessionId: 'session-123', audioFormat: 'pcm' },
|
|
149
|
-
* { onResult: (result) => console.log(result.text) }
|
|
150
|
-
* );
|
|
151
|
-
* ```
|
|
152
|
-
*/
|
|
153
|
-
getStreamingProvider(vendor) {
|
|
154
|
-
// 检查缓存
|
|
155
|
-
if (this.streamingProviders.has(vendor)) {
|
|
156
|
-
return this.streamingProviders.get(vendor);
|
|
157
|
-
}
|
|
158
|
-
// 创建新实例
|
|
159
|
-
const provider = this.createStreamingProvider(vendor);
|
|
160
|
-
this.streamingProviders.set(vendor, provider);
|
|
161
|
-
return provider;
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* 创建录音文件识别提供商实例
|
|
165
|
-
*
|
|
166
|
-
* @private
|
|
167
|
-
* @param {FileBucketVendor} vendor - 云服务商类型
|
|
168
|
-
* @returns {IOpenspeechProvider} 新创建的提供商实例
|
|
169
|
-
* @throws {Error} 不支持的 vendor 类型或配置缺失时抛出异常
|
|
170
|
-
*/
|
|
171
|
-
createProvider(vendor) {
|
|
172
|
-
switch (vendor) {
|
|
173
|
-
case 'oss':
|
|
174
|
-
return this.createAliyunProvider();
|
|
175
|
-
case 'tos':
|
|
176
|
-
return this.createVolcengineAucProvider();
|
|
177
|
-
default:
|
|
178
|
-
throw new Error(`Unsupported vendor for openspeech: ${vendor}`);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* 创建流式识别提供商实例
|
|
183
|
-
*
|
|
184
|
-
* @private
|
|
185
|
-
* @param {FileBucketVendor} vendor - 云服务商类型
|
|
186
|
-
* @returns {IStreamingAsrProvider} 新创建的流式识别提供商实例
|
|
187
|
-
* @throws {Error} 不支持的 vendor 类型或配置缺失时抛出异常
|
|
188
|
-
*/
|
|
189
|
-
createStreamingProvider(vendor) {
|
|
190
|
-
switch (vendor) {
|
|
191
|
-
case 'tos':
|
|
192
|
-
return this.createVolcengineSaucProvider();
|
|
193
|
-
default:
|
|
194
|
-
throw new Error(`Unsupported vendor for streaming ASR: ${vendor}`);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* 将阿里云配置转换为 Provider 配置
|
|
199
|
-
*
|
|
200
|
-
* @private
|
|
201
|
-
* @param {NonNullable<OpenSpeechConfig['oss']>} config - 阿里云原始配置
|
|
202
|
-
* @returns {AliyunOpenspeechConfig} 阿里云 Provider 配置
|
|
203
|
-
*/
|
|
204
|
-
toAliyunConfig(config) {
|
|
205
|
-
return {
|
|
206
|
-
endpoint: config.endpoint,
|
|
207
|
-
accessKeyId: config.accessKeyId,
|
|
208
|
-
accessKeySecret: config.accessKeySecret,
|
|
209
|
-
nslAppKey: config.nslAppKey,
|
|
210
|
-
nslAppId: config.nslAppId,
|
|
211
|
-
apiVersion: config.apiVersion,
|
|
212
|
-
tokenEndpoint: config.tokenEndpoint,
|
|
213
|
-
accessKey: config.accessKey,
|
|
214
|
-
secretKey: config.secretKey,
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* 将火山引擎配置转换为录音文件识别(AUC)Provider 配置
|
|
219
|
-
*
|
|
220
|
-
* @private
|
|
221
|
-
* @param {NonNullable<OpenSpeechConfig['tos']>} config - 火山引擎原始配置
|
|
222
|
-
* @returns {VolcengineAucConfig} 火山引擎 AUC Provider 配置
|
|
223
|
-
* @throws {Error} AUC 配置缺失时抛出异常
|
|
224
|
-
*/
|
|
225
|
-
toVolcengineAucConfig(config) {
|
|
226
|
-
if (!config.auc) {
|
|
227
|
-
throw new Error('Volcengine OpenSpeech AUC config not found in configuration');
|
|
228
|
-
}
|
|
229
|
-
return {
|
|
230
|
-
appId: config.appId,
|
|
231
|
-
appAccessToken: config.appAccessToken,
|
|
232
|
-
uid: config.uid,
|
|
233
|
-
endpoint: config.auc.endpoint,
|
|
234
|
-
resourceId: config.auc.resourceId,
|
|
235
|
-
appAccessSecret: config.appAccessSecret,
|
|
236
|
-
accessKey: config.accessKey,
|
|
237
|
-
secretKey: config.secretKey,
|
|
238
|
-
};
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* 将火山引擎配置转换为流式识别(SAUC)Provider 配置
|
|
242
|
-
*
|
|
243
|
-
* @private
|
|
244
|
-
* @param {NonNullable<OpenSpeechConfig['tos']>} config - 火山引擎原始配置
|
|
245
|
-
* @returns {VolcengineSaucConfig} 火山引擎 SAUC Provider 配置
|
|
246
|
-
* @throws {Error} SAUC 配置缺失时抛出异常
|
|
247
|
-
*/
|
|
248
|
-
toVolcengineSaucConfig(config) {
|
|
249
|
-
if (!config.sauc) {
|
|
250
|
-
throw new Error('Volcengine OpenSpeech SAUC config not found in configuration');
|
|
251
|
-
}
|
|
252
|
-
return {
|
|
253
|
-
appId: config.appId,
|
|
254
|
-
appAccessToken: config.appAccessToken,
|
|
255
|
-
uid: config.uid,
|
|
256
|
-
endpoint: config.sauc.endpoint,
|
|
257
|
-
resourceId: config.sauc.resourceId,
|
|
258
|
-
appAccessSecret: config.appAccessSecret,
|
|
259
|
-
accessKey: config.accessKey,
|
|
260
|
-
secretKey: config.secretKey,
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* 创建阿里云提供商实例
|
|
265
|
-
*
|
|
266
|
-
* @private
|
|
267
|
-
* @returns {AliyunOpenspeechProvider} 阿里云提供商实例
|
|
268
|
-
* @throws {Error} 配置缺失时抛出异常
|
|
269
|
-
*/
|
|
270
|
-
createAliyunProvider() {
|
|
271
|
-
const rawConfig = this.openspeechConfig?.oss;
|
|
272
|
-
if (!rawConfig) {
|
|
273
|
-
throw new Error('Aliyun OpenSpeech config (oss) not found in configuration');
|
|
274
|
-
}
|
|
275
|
-
const config = this.toAliyunConfig(rawConfig);
|
|
276
|
-
this.logger.info('Creating Aliyun OpenSpeech provider');
|
|
277
|
-
return new aliyun_provider_1.AliyunOpenspeechProvider(this.logger, config);
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* 创建火山引擎录音文件识别提供商实例
|
|
281
|
-
*
|
|
282
|
-
* @private
|
|
283
|
-
* @returns {VolcengineOpenspeechProvider} 火山引擎 AUC 提供商实例
|
|
284
|
-
* @throws {Error} 配置缺失时抛出异常
|
|
285
|
-
*/
|
|
286
|
-
createVolcengineAucProvider() {
|
|
287
|
-
const rawConfig = this.openspeechConfig?.tos;
|
|
288
|
-
if (!rawConfig) {
|
|
289
|
-
throw new Error('Volcengine OpenSpeech config (tos) not found in configuration');
|
|
290
|
-
}
|
|
291
|
-
const config = this.toVolcengineAucConfig(rawConfig);
|
|
292
|
-
this.logger.info('Creating Volcengine OpenSpeech AUC provider');
|
|
293
|
-
return new volcengine_provider_1.VolcengineOpenspeechProvider(this.logger, this.httpService, config);
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* 创建火山引擎流式识别提供商实例
|
|
297
|
-
*
|
|
298
|
-
* @private
|
|
299
|
-
* @returns {VolcengineStreamingAsrProvider} 火山引擎 SAUC 提供商实例
|
|
300
|
-
* @throws {Error} 配置缺失时抛出异常
|
|
301
|
-
*/
|
|
302
|
-
createVolcengineSaucProvider() {
|
|
303
|
-
const rawConfig = this.openspeechConfig?.tos;
|
|
304
|
-
if (!rawConfig) {
|
|
305
|
-
throw new Error('Volcengine OpenSpeech config (tos) not found in configuration');
|
|
306
|
-
}
|
|
307
|
-
const config = this.toVolcengineSaucConfig(rawConfig);
|
|
308
|
-
this.logger.info('Creating Volcengine OpenSpeech SAUC provider');
|
|
309
|
-
return new volcengine_streaming_provider_1.VolcengineStreamingAsrProvider(this.logger, config);
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* 检查指定云服务商的录音文件识别是否可用
|
|
313
|
-
*
|
|
314
|
-
* @param {FileBucketVendor} vendor - 云服务商类型
|
|
315
|
-
* @returns {boolean} 是否可用(配置存在)
|
|
316
|
-
*
|
|
317
|
-
* @example
|
|
318
|
-
* ```typescript
|
|
319
|
-
* if (factory.isVendorAvailable('oss')) {
|
|
320
|
-
* const provider = factory.getProvider('oss');
|
|
321
|
-
* // ...
|
|
322
|
-
* }
|
|
323
|
-
* ```
|
|
324
|
-
*/
|
|
325
|
-
isVendorAvailable(vendor) {
|
|
326
|
-
switch (vendor) {
|
|
327
|
-
case 'oss':
|
|
328
|
-
return !!this.openspeechConfig?.oss;
|
|
329
|
-
case 'tos':
|
|
330
|
-
return !!this.openspeechConfig?.tos?.auc;
|
|
331
|
-
default:
|
|
332
|
-
return false;
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* 检查指定云服务商的流式识别是否可用
|
|
337
|
-
*
|
|
338
|
-
* @param {FileBucketVendor} vendor - 云服务商类型
|
|
339
|
-
* @returns {boolean} 是否可用(配置存在)
|
|
340
|
-
*
|
|
341
|
-
* @example
|
|
342
|
-
* ```typescript
|
|
343
|
-
* if (factory.isStreamingAvailable('tos')) {
|
|
344
|
-
* const provider = factory.getStreamingProvider('tos');
|
|
345
|
-
* // ...
|
|
346
|
-
* }
|
|
347
|
-
* ```
|
|
348
|
-
*/
|
|
349
|
-
isStreamingAvailable(vendor) {
|
|
350
|
-
switch (vendor) {
|
|
351
|
-
case 'tos':
|
|
352
|
-
return !!this.openspeechConfig?.tos?.sauc;
|
|
353
|
-
default:
|
|
354
|
-
return false;
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
/**
|
|
358
|
-
* 获取所有可用的云服务商列表(录音文件识别)
|
|
359
|
-
*
|
|
360
|
-
* @returns {FileBucketVendor[]} 可用的云服务商列表
|
|
361
|
-
*
|
|
362
|
-
* @example
|
|
363
|
-
* ```typescript
|
|
364
|
-
* const vendors = factory.getAvailableVendors();
|
|
365
|
-
* console.log('Available vendors:', vendors);
|
|
366
|
-
* // 输出: ['oss', 'tos']
|
|
367
|
-
* ```
|
|
368
|
-
*/
|
|
369
|
-
getAvailableVendors() {
|
|
370
|
-
const vendors = [];
|
|
371
|
-
if (this.openspeechConfig?.oss) {
|
|
372
|
-
vendors.push('oss');
|
|
373
|
-
}
|
|
374
|
-
if (this.openspeechConfig?.tos?.auc) {
|
|
375
|
-
vendors.push('tos');
|
|
376
|
-
}
|
|
377
|
-
return vendors;
|
|
378
|
-
}
|
|
379
|
-
/**
|
|
380
|
-
* 获取所有支持流式识别的云服务商列表
|
|
381
|
-
*
|
|
382
|
-
* @returns {FileBucketVendor[]} 支持流式识别的云服务商列表
|
|
383
|
-
*
|
|
384
|
-
* @example
|
|
385
|
-
* ```typescript
|
|
386
|
-
* const vendors = factory.getStreamingAvailableVendors();
|
|
387
|
-
* console.log('Streaming available vendors:', vendors);
|
|
388
|
-
* // 输出: ['tos']
|
|
389
|
-
* ```
|
|
390
|
-
*/
|
|
391
|
-
getStreamingAvailableVendors() {
|
|
392
|
-
const vendors = [];
|
|
393
|
-
if (this.openspeechConfig?.tos?.sauc) {
|
|
394
|
-
vendors.push('tos');
|
|
395
|
-
}
|
|
396
|
-
return vendors;
|
|
397
|
-
}
|
|
398
|
-
};
|
|
399
|
-
exports.OpenspeechProviderFactory = OpenspeechProviderFactory;
|
|
400
|
-
exports.OpenspeechProviderFactory = OpenspeechProviderFactory = __decorate([
|
|
401
|
-
(0, common_1.Injectable)(),
|
|
402
|
-
__param(1, (0, common_1.Inject)(nest_winston_1.WINSTON_MODULE_PROVIDER)),
|
|
403
|
-
__metadata("design:paramtypes", [axios_1.HttpService,
|
|
404
|
-
winston_1.Logger])
|
|
405
|
-
], OpenspeechProviderFactory);
|
|
406
|
-
//# sourceMappingURL=openspeech.factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openspeech.factory.js","sourceRoot":"","sources":["../../../../../packages/clients/src/internal/openspeech/openspeech.factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview OpenSpeech 语音识别服务模块
|
|
3
|
-
*
|
|
4
|
-
* 本模块提供语音识别服务的 NestJS 模块配置,整合了:
|
|
5
|
-
* - OpenspeechClient: 语音识别服务门面
|
|
6
|
-
* - OpenspeechProviderFactory: 云服务商工厂
|
|
7
|
-
*
|
|
8
|
-
* @module openspeech/module
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* OpenSpeech 语音识别服务模块
|
|
12
|
-
*
|
|
13
|
-
* @description 提供语音识别服务的依赖注入配置。
|
|
14
|
-
*
|
|
15
|
-
* 导出服务:
|
|
16
|
-
* - `OpenspeechClient`: 语音识别服务统一入口
|
|
17
|
-
* - `OpenspeechProviderFactory`: 云服务商工厂(可选,用于高级场景)
|
|
18
|
-
*
|
|
19
|
-
* 依赖模块:
|
|
20
|
-
* - `ConfigModule`: 配置服务
|
|
21
|
-
* - `HttpModule`: HTTP 客户端(用于火山引擎 API)
|
|
22
|
-
* - `FileStorageServiceModule`: 文件存储服务
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```typescript
|
|
26
|
-
* // 在其他模块中导入
|
|
27
|
-
* @Module({
|
|
28
|
-
* imports: [OpenspeechModule],
|
|
29
|
-
* })
|
|
30
|
-
* export class VideoModule {}
|
|
31
|
-
*
|
|
32
|
-
* // 在服务中使用
|
|
33
|
-
* @Injectable()
|
|
34
|
-
* class VideoService {
|
|
35
|
-
* constructor(private readonly openspeech: OpenspeechClient) {}
|
|
36
|
-
*
|
|
37
|
-
* async transcribe(fileKey: FileKey) {
|
|
38
|
-
* return await this.openspeech.submitTranscribeTask(fileKey);
|
|
39
|
-
* }
|
|
40
|
-
* }
|
|
41
|
-
* ```
|
|
42
|
-
*/
|
|
43
|
-
export declare class OpenspeechModule {
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=openspeech.module.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openspeech.module.d.ts","sourceRoot":"","sources":["../../../../../packages/clients/src/internal/openspeech/openspeech.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAKa,gBAAgB;CAAG"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @fileoverview OpenSpeech 语音识别服务模块
|
|
4
|
-
*
|
|
5
|
-
* 本模块提供语音识别服务的 NestJS 模块配置,整合了:
|
|
6
|
-
* - OpenspeechClient: 语音识别服务门面
|
|
7
|
-
* - OpenspeechProviderFactory: 云服务商工厂
|
|
8
|
-
*
|
|
9
|
-
* @module openspeech/module
|
|
10
|
-
*/
|
|
11
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
12
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
14
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
15
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
16
|
-
};
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.OpenspeechModule = void 0;
|
|
19
|
-
const common_1 = require("@nestjs/common");
|
|
20
|
-
const config_1 = require("@nestjs/config");
|
|
21
|
-
const axios_1 = require("@nestjs/axios");
|
|
22
|
-
const infra_shared_services_1 = require("@dofe/infra-shared-services");
|
|
23
|
-
const openspeech_client_1 = require("./openspeech.client");
|
|
24
|
-
const openspeech_factory_1 = require("./openspeech.factory");
|
|
25
|
-
/**
|
|
26
|
-
* OpenSpeech 语音识别服务模块
|
|
27
|
-
*
|
|
28
|
-
* @description 提供语音识别服务的依赖注入配置。
|
|
29
|
-
*
|
|
30
|
-
* 导出服务:
|
|
31
|
-
* - `OpenspeechClient`: 语音识别服务统一入口
|
|
32
|
-
* - `OpenspeechProviderFactory`: 云服务商工厂(可选,用于高级场景)
|
|
33
|
-
*
|
|
34
|
-
* 依赖模块:
|
|
35
|
-
* - `ConfigModule`: 配置服务
|
|
36
|
-
* - `HttpModule`: HTTP 客户端(用于火山引擎 API)
|
|
37
|
-
* - `FileStorageServiceModule`: 文件存储服务
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```typescript
|
|
41
|
-
* // 在其他模块中导入
|
|
42
|
-
* @Module({
|
|
43
|
-
* imports: [OpenspeechModule],
|
|
44
|
-
* })
|
|
45
|
-
* export class VideoModule {}
|
|
46
|
-
*
|
|
47
|
-
* // 在服务中使用
|
|
48
|
-
* @Injectable()
|
|
49
|
-
* class VideoService {
|
|
50
|
-
* constructor(private readonly openspeech: OpenspeechClient) {}
|
|
51
|
-
*
|
|
52
|
-
* async transcribe(fileKey: FileKey) {
|
|
53
|
-
* return await this.openspeech.submitTranscribeTask(fileKey);
|
|
54
|
-
* }
|
|
55
|
-
* }
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
let OpenspeechModule = class OpenspeechModule {
|
|
59
|
-
};
|
|
60
|
-
exports.OpenspeechModule = OpenspeechModule;
|
|
61
|
-
exports.OpenspeechModule = OpenspeechModule = __decorate([
|
|
62
|
-
(0, common_1.Module)({
|
|
63
|
-
imports: [config_1.ConfigModule, axios_1.HttpModule, infra_shared_services_1.FileStorageServiceModule],
|
|
64
|
-
providers: [openspeech_factory_1.OpenspeechProviderFactory, openspeech_client_1.OpenspeechClient],
|
|
65
|
-
exports: [openspeech_client_1.OpenspeechClient, openspeech_factory_1.OpenspeechProviderFactory],
|
|
66
|
-
})
|
|
67
|
-
], OpenspeechModule);
|
|
68
|
-
//# sourceMappingURL=openspeech.module.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openspeech.module.js","sourceRoot":"","sources":["../../../../../packages/clients/src/internal/openspeech/openspeech.module.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;AAEH,2CAAwC;AACxC,2CAA8C;AAC9C,yCAA2C;AAC3C,uEAAuE;AACvE,2DAAuD;AACvD,6DAAiE;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAMI,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,4CAAgB;2BAAhB,gBAAgB;IAL5B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,qBAAY,EAAE,kBAAU,EAAE,gDAAwB,CAAC;QAC7D,SAAS,EAAE,CAAC,8CAAyB,EAAE,oCAAgB,CAAC;QACxD,OAAO,EAAE,CAAC,oCAAgB,EAAE,8CAAyB,CAAC;KACvD,CAAC;GACW,gBAAgB,CAAG"}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview 阿里云 OpenSpeech 语音识别服务提供商
|
|
3
|
-
*
|
|
4
|
-
* 本文件实现了阿里云 NLS(自然语言服务)的录音文件识别功能。
|
|
5
|
-
* 阿里云语音识别服务文档:https://help.aliyun.com/document_detail/90727.html
|
|
6
|
-
*
|
|
7
|
-
* @module openspeech/providers/aliyun
|
|
8
|
-
*/
|
|
9
|
-
import { Logger } from 'winston';
|
|
10
|
-
import { FileBucketVendor } from '@prisma/client';
|
|
11
|
-
import { BaseOpenspeechProvider } from './base.provider';
|
|
12
|
-
import { SubmitTaskParams, TaskStatusResult, AliyunOpenspeechConfig } from '../types';
|
|
13
|
-
/**
|
|
14
|
-
* 阿里云语音识别服务提供商
|
|
15
|
-
*
|
|
16
|
-
* @description 封装了阿里云 NLS 录音文件识别的核心功能:
|
|
17
|
-
* - 任务提交:将音频文件提交到阿里云进行语音识别
|
|
18
|
-
* - 状态查询:查询识别任务的处理状态和结果
|
|
19
|
-
*
|
|
20
|
-
* 主要特性:
|
|
21
|
-
* - 支持智能分轨(双声道对话场景)
|
|
22
|
-
* - 支持语义句子检测
|
|
23
|
-
* - 支持时间戳对齐
|
|
24
|
-
* - 支持回调通知
|
|
25
|
-
*
|
|
26
|
-
* @class AliyunOpenspeechProvider
|
|
27
|
-
* @extends {BaseOpenspeechProvider}
|
|
28
|
-
*
|
|
29
|
-
* @example
|
|
30
|
-
* ```typescript
|
|
31
|
-
* const provider = new AliyunOpenspeechProvider(logger, {
|
|
32
|
-
* accessKeyId: 'your-access-key-id',
|
|
33
|
-
* accessKeySecret: 'your-access-key-secret',
|
|
34
|
-
* endpoint: 'https://nls-meta.cn-shanghai.aliyuncs.com',
|
|
35
|
-
* nslAppKey: 'your-app-key',
|
|
36
|
-
* });
|
|
37
|
-
*
|
|
38
|
-
* // 提交任务
|
|
39
|
-
* const taskId = await provider.submitTask({
|
|
40
|
-
* audioUrl: 'https://example.com/audio.mp3',
|
|
41
|
-
* });
|
|
42
|
-
*
|
|
43
|
-
* // 查询状态
|
|
44
|
-
* const result = await provider.queryTaskStatus(taskId);
|
|
45
|
-
* if (result.status === 'success') {
|
|
46
|
-
* console.log('识别结果:', result.text);
|
|
47
|
-
* }
|
|
48
|
-
* ```
|
|
49
|
-
*/
|
|
50
|
-
export declare class AliyunOpenspeechProvider extends BaseOpenspeechProvider {
|
|
51
|
-
private readonly config;
|
|
52
|
-
/**
|
|
53
|
-
* 云服务商标识:阿里云 OSS
|
|
54
|
-
* @readonly
|
|
55
|
-
*/
|
|
56
|
-
readonly vendor: FileBucketVendor;
|
|
57
|
-
/**
|
|
58
|
-
* 构造函数
|
|
59
|
-
*
|
|
60
|
-
* @param {Logger} logger - Winston 日志记录器
|
|
61
|
-
* @param {AliyunOpenspeechConfig} config - 阿里云配置
|
|
62
|
-
* @throws {Error} 配置缺失时抛出异常
|
|
63
|
-
*/
|
|
64
|
-
constructor(logger: Logger, config: AliyunOpenspeechConfig);
|
|
65
|
-
/**
|
|
66
|
-
* 提交语音识别任务到阿里云
|
|
67
|
-
*
|
|
68
|
-
* @description 调用阿里云 NLS API 提交录音文件识别任务。
|
|
69
|
-
* 任务提交后,阿里云会异步处理,可通过回调或轮询获取结果。
|
|
70
|
-
*
|
|
71
|
-
* 任务配置说明:
|
|
72
|
-
* - auto_split: 开启智能分轨,适用于双方对话场景
|
|
73
|
-
* - enable_semantic_sentence_detection: 开启语义句子检测
|
|
74
|
-
* - enable_timestamp_alignment: 开启时间戳对齐
|
|
75
|
-
* - enable_callback: 开启回调通知
|
|
76
|
-
*
|
|
77
|
-
* @param {SubmitTaskParams} params - 任务提交参数
|
|
78
|
-
* @param {string} params.audioUrl - 音频文件 URL
|
|
79
|
-
* @param {string} [params.callbackUrl] - 回调 URL(可选,默认使用系统配置)
|
|
80
|
-
* @returns {Promise<string>} 阿里云返回的任务 ID (TaskId)
|
|
81
|
-
* @throws {Error} 配置缺失或 API 调用失败时抛出异常
|
|
82
|
-
*
|
|
83
|
-
* @example
|
|
84
|
-
* ```typescript
|
|
85
|
-
* const taskId = await provider.submitTask({
|
|
86
|
-
* audioUrl: 'https://bucket.oss-cn-hangzhou.aliyuncs.com/audio.mp3',
|
|
87
|
-
* });
|
|
88
|
-
* console.log('Task ID:', taskId);
|
|
89
|
-
* ```
|
|
90
|
-
*/
|
|
91
|
-
submitTask(params: SubmitTaskParams): Promise<string>;
|
|
92
|
-
/**
|
|
93
|
-
* 查询阿里云语音识别任务状态
|
|
94
|
-
*
|
|
95
|
-
* @description 调用阿里云 NLS API 查询任务状态。
|
|
96
|
-
* 任务状态包括:
|
|
97
|
-
* - SUCCESS: 识别成功,返回识别文本
|
|
98
|
-
* - RUNNING: 正在处理中
|
|
99
|
-
* - QUEUEING: 排队等待中
|
|
100
|
-
* - FAIL: 识别失败
|
|
101
|
-
* - EXPIRED: 任务过期
|
|
102
|
-
*
|
|
103
|
-
* @param {string} vendorTaskId - 阿里云任务 ID
|
|
104
|
-
* @returns {Promise<TaskStatusResult>} 任务状态和结果
|
|
105
|
-
*
|
|
106
|
-
* @example
|
|
107
|
-
* ```typescript
|
|
108
|
-
* const result = await provider.queryTaskStatus('task-123456');
|
|
109
|
-
*
|
|
110
|
-
* switch (result.status) {
|
|
111
|
-
* case 'success':
|
|
112
|
-
* console.log('识别文本:', result.text);
|
|
113
|
-
* break;
|
|
114
|
-
* case 'processing':
|
|
115
|
-
* console.log('处理中,请稍后重试');
|
|
116
|
-
* break;
|
|
117
|
-
* case 'error':
|
|
118
|
-
* console.error('识别失败:', result.error);
|
|
119
|
-
* break;
|
|
120
|
-
* }
|
|
121
|
-
* ```
|
|
122
|
-
*/
|
|
123
|
-
queryTaskStatus(vendorTaskId: string): Promise<TaskStatusResult>;
|
|
124
|
-
}
|
|
125
|
-
//# sourceMappingURL=aliyun.provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aliyun.provider.d.ts","sourceRoot":"","sources":["../../../../../../packages/clients/src/internal/openspeech/providers/aliyun.provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAGlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,wBAAyB,SAAQ,sBAAsB;IAgBhE,OAAO,CAAC,QAAQ,CAAC,MAAM;IAfzB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAS;IAE1C;;;;;;OAMG;gBAED,MAAM,EAAE,MAAM,EACG,MAAM,EAAE,sBAAsB;IASjD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAkG3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAuEvE"}
|