@bdky/aaas-pilot-kit 1.0.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +255 -23
- package/dist/index.cjs.js.LICENSE.txt +9 -0
- package/dist/index.esm.js +254 -22
- package/dist/index.esm.js.LICENSE.txt +9 -0
- package/dist/index.umd.js +254 -22
- package/dist/index.umd.js.LICENSE.txt +9 -0
- package/dist/ky-aaas-pilot-kit.umd.js +254 -22
- package/dist/ky-aaas-pilot-kit.umd.js.LICENSE.txt +9 -0
- package/dist/libs/aaas-pilot-kit/src/index.d.ts +2 -0
- package/dist/libs/aaas-pilot-kit/src/lib/DI/types.d.ts +1 -0
- package/dist/libs/aaas-pilot-kit/src/lib/constants/azure.d.ts +423 -0
- package/dist/libs/aaas-pilot-kit/src/lib/service/rtc-asr/asr/azureAsrService.d.ts +108 -0
- package/dist/libs/aaas-pilot-kit/src/lib/service/rtc-asr/asr/baseAsrService.d.ts +28 -3
- package/dist/libs/aaas-pilot-kit/src/lib/service/rtc-asr/signal/noop.d.ts +54 -0
- package/dist/libs/aaas-pilot-kit/src/lib/utils/EnergyBasedGate.d.ts +240 -0
- package/dist/libs/aaas-pilot-kit/src/lib/utils/MediaStreamManager.d.ts +209 -0
- package/dist/libs/aaas-pilot-kit/src/lib/utils/audio-processing/AudioContextLifecycle.d.ts +110 -0
- package/dist/libs/aaas-pilot-kit/src/lib/utils/audio-processing/AudioWorkletCapability.d.ts +95 -0
- package/dist/libs/aaas-pilot-kit/src/lib/utils/audio-processing/FloatAPICompat.d.ts +103 -0
- package/dist/libs/aaas-pilot-kit/src/types/config.d.ts +290 -3
- package/package.json +2 -1
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* The buffer module from node.js, for the browser.
|
|
3
|
+
*
|
|
4
|
+
* @author Feross Aboukhadijeh <https://feross.org>
|
|
5
|
+
* @license MIT
|
|
6
|
+
*/
|
|
7
|
+
|
|
1
8
|
/*! *****************************************************************************
|
|
2
9
|
Copyright (C) Microsoft. All rights reserved.
|
|
3
10
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
|
@@ -30,6 +37,8 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
30
37
|
|
|
31
38
|
/*! MIT License © Sindre Sorhus */
|
|
32
39
|
|
|
40
|
+
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
|
41
|
+
|
|
33
42
|
/**
|
|
34
43
|
* TraceKit - Cross brower stack traces
|
|
35
44
|
*
|
|
@@ -4,4 +4,6 @@ export * from './lib/service/conversation';
|
|
|
4
4
|
export * from './lib/aaas-pilot-kit';
|
|
5
5
|
export * from './lib/controller';
|
|
6
6
|
export { AudioDeviceDetector, AudioDeviceError, getErrorMessage, checkAudioDevice, type AudioDeviceCheckResult, type AudioDetectorOptions } from './lib/utils/AudioDeviceDetector';
|
|
7
|
+
export { MediaStreamManager, type IAudioFeatureConfig, type IFeatureSupportResult, type IMediaStreamResult, type IMediaStreamManagerOptions } from './lib/utils/MediaStreamManager';
|
|
7
8
|
export { subscribeAgentResponse, type ISubscribeAgentResponseOptions } from './lib/utils/agentResponseHelper';
|
|
9
|
+
export { AzureSpeechRegion, AzureSpeechLanguage, type AzureSpeechRegionValue, type AzureSpeechLanguageValue, isValidAzureRegion, isValidAzureLanguage, getRegionDisplayName, getLanguageDisplayName } from './lib/constants/azure';
|
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Azure Speech Service 常量定义
|
|
3
|
+
* @description 提供类型安全的 Azure 区域和语言配置
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Azure Speech Service 支持的区域
|
|
7
|
+
*
|
|
8
|
+
* 🌏 聚焦亚太地区,同时提供全球主要区域支持
|
|
9
|
+
*
|
|
10
|
+
* 文档:https://learn.microsoft.com/azure/ai-services/speech-service/regions
|
|
11
|
+
*/
|
|
12
|
+
export declare const AzureSpeechRegion: {
|
|
13
|
+
/**
|
|
14
|
+
* 东亚(香港)
|
|
15
|
+
* - 特点:靠近中国大陆,低延迟
|
|
16
|
+
* - 适用:中国香港、华南地区
|
|
17
|
+
*/
|
|
18
|
+
readonly EAST_ASIA: "eastasia";
|
|
19
|
+
/**
|
|
20
|
+
* 东南亚(新加坡)
|
|
21
|
+
* - 特点:亚太区域中心,稳定性高
|
|
22
|
+
* - 适用:东南亚、印度、澳大利亚
|
|
23
|
+
*/
|
|
24
|
+
readonly SOUTHEAST_ASIA: "southeastasia";
|
|
25
|
+
/**
|
|
26
|
+
* 日本东部(东京)
|
|
27
|
+
* - 特点:日本本地化服务
|
|
28
|
+
* - 适用:日本及周边地区
|
|
29
|
+
*/
|
|
30
|
+
readonly JAPAN_EAST: "japaneast";
|
|
31
|
+
/**
|
|
32
|
+
* 日本西部(大阪)
|
|
33
|
+
* - 特点:日本备用区域
|
|
34
|
+
* - 适用:日本及周边地区
|
|
35
|
+
*/
|
|
36
|
+
readonly JAPAN_WEST: "japanwest";
|
|
37
|
+
/**
|
|
38
|
+
* 韩国中部(首尔)
|
|
39
|
+
* - 特点:韩国本地化服务
|
|
40
|
+
* - 适用:韩国及周边地区
|
|
41
|
+
*/
|
|
42
|
+
readonly KOREA_CENTRAL: "koreacentral";
|
|
43
|
+
/**
|
|
44
|
+
* 澳大利亚东部(悉尼)
|
|
45
|
+
* - 特点:澳洲本地化服务
|
|
46
|
+
* - 适用:澳大利亚、新西兰
|
|
47
|
+
*/
|
|
48
|
+
readonly AUSTRALIA_EAST: "australiaeast";
|
|
49
|
+
/**
|
|
50
|
+
* 印度中部(浦那)
|
|
51
|
+
* - 特点:印度本地化服务
|
|
52
|
+
* - 适用:印度及南亚地区
|
|
53
|
+
*/
|
|
54
|
+
readonly CENTRAL_INDIA: "centralindia";
|
|
55
|
+
/**
|
|
56
|
+
* 美国东部(弗吉尼亚)
|
|
57
|
+
* - 特点:全球最大数据中心之一
|
|
58
|
+
* - 适用:美国东海岸、南美洲
|
|
59
|
+
*/
|
|
60
|
+
readonly EAST_US: "eastus";
|
|
61
|
+
/**
|
|
62
|
+
* 美国东部 2(弗吉尼亚)
|
|
63
|
+
* - 特点:东部备用区域
|
|
64
|
+
* - 适用:美国东海岸
|
|
65
|
+
*/
|
|
66
|
+
readonly EAST_US_2: "eastus2";
|
|
67
|
+
/**
|
|
68
|
+
* 美国西部(加利福尼亚)
|
|
69
|
+
* - 特点:西海岸主力区域
|
|
70
|
+
* - 适用:美国西海岸、拉美
|
|
71
|
+
*/
|
|
72
|
+
readonly WEST_US: "westus";
|
|
73
|
+
/**
|
|
74
|
+
* 美国西部 2(华盛顿)
|
|
75
|
+
* - 特点:西部备用区域
|
|
76
|
+
* - 适用:美国西海岸
|
|
77
|
+
*/
|
|
78
|
+
readonly WEST_US_2: "westus2";
|
|
79
|
+
/**
|
|
80
|
+
* 美国西部 3(亚利桑那)
|
|
81
|
+
* - 特点:新增区域
|
|
82
|
+
* - 适用:美国西部内陆
|
|
83
|
+
*/
|
|
84
|
+
readonly WEST_US_3: "westus3";
|
|
85
|
+
/**
|
|
86
|
+
* 美国中部(爱荷华)
|
|
87
|
+
* - 特点:美国地理中心
|
|
88
|
+
* - 适用:美国中部地区
|
|
89
|
+
*/
|
|
90
|
+
readonly CENTRAL_US: "centralus";
|
|
91
|
+
/**
|
|
92
|
+
* 加拿大中部(多伦多)
|
|
93
|
+
* - 特点:加拿大本地化服务
|
|
94
|
+
* - 适用:加拿大
|
|
95
|
+
*/
|
|
96
|
+
readonly CANADA_CENTRAL: "canadacentral";
|
|
97
|
+
/**
|
|
98
|
+
* 北欧(爱尔兰)
|
|
99
|
+
* - 特点:欧洲主力区域之一
|
|
100
|
+
* - 适用:北欧、英国、爱尔兰
|
|
101
|
+
*/
|
|
102
|
+
readonly NORTH_EUROPE: "northeurope";
|
|
103
|
+
/**
|
|
104
|
+
* 西欧(荷兰)
|
|
105
|
+
* - 特点:欧洲主力区域之一
|
|
106
|
+
* - 适用:西欧、中欧
|
|
107
|
+
*/
|
|
108
|
+
readonly WEST_EUROPE: "westeurope";
|
|
109
|
+
/**
|
|
110
|
+
* 英国南部(伦敦)
|
|
111
|
+
* - 特点:英国本地化服务
|
|
112
|
+
* - 适用:英国
|
|
113
|
+
*/
|
|
114
|
+
readonly UK_SOUTH: "uksouth";
|
|
115
|
+
/**
|
|
116
|
+
* 法国中部(巴黎)
|
|
117
|
+
* - 特点:法国本地化服务
|
|
118
|
+
* - 适用:法国
|
|
119
|
+
*/
|
|
120
|
+
readonly FRANCE_CENTRAL: "francecentral";
|
|
121
|
+
/**
|
|
122
|
+
* 德国西中部(法兰克福)
|
|
123
|
+
* - 特点:德国本地化服务
|
|
124
|
+
* - 适用:德国、中欧
|
|
125
|
+
*/
|
|
126
|
+
readonly GERMANY_WEST_CENTRAL: "germanywestcentral";
|
|
127
|
+
/**
|
|
128
|
+
* 瑞士北部(苏黎世)
|
|
129
|
+
* - 特点:瑞士本地化服务
|
|
130
|
+
* - 适用:瑞士
|
|
131
|
+
*/
|
|
132
|
+
readonly SWITZERLAND_NORTH: "switzerlandnorth";
|
|
133
|
+
/**
|
|
134
|
+
* 挪威东部(奥斯陆)
|
|
135
|
+
* - 特点:挪威本地化服务
|
|
136
|
+
* - 适用:挪威、北欧
|
|
137
|
+
*/
|
|
138
|
+
readonly NORWAY_EAST: "norwayeast";
|
|
139
|
+
/**
|
|
140
|
+
* 巴西南部(圣保罗)
|
|
141
|
+
* - 特点:南美本地化服务
|
|
142
|
+
* - 适用:巴西、南美洲
|
|
143
|
+
*/
|
|
144
|
+
readonly BRAZIL_SOUTH: "brazilsouth";
|
|
145
|
+
/**
|
|
146
|
+
* 南非北部(约翰内斯堡)
|
|
147
|
+
* - 特点:非洲本地化服务
|
|
148
|
+
* - 适用:南非、非洲
|
|
149
|
+
*/
|
|
150
|
+
readonly SOUTH_AFRICA_NORTH: "southafricanorth";
|
|
151
|
+
/**
|
|
152
|
+
* 阿联酋北部(迪拜)
|
|
153
|
+
* - 特点:中东本地化服务
|
|
154
|
+
* - 适用:中东地区
|
|
155
|
+
*/
|
|
156
|
+
readonly UAE_NORTH: "uaenorth";
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* Azure Speech Service 区域类型
|
|
160
|
+
* 自动从 AzureSpeechRegion 常量推断
|
|
161
|
+
*/
|
|
162
|
+
export type AzureSpeechRegionValue = typeof AzureSpeechRegion[keyof typeof AzureSpeechRegion];
|
|
163
|
+
/**
|
|
164
|
+
* Azure Speech SDK 支持的语言(BCP-47 格式)
|
|
165
|
+
*
|
|
166
|
+
* 🌐 聚焦常用语言,提供完整的全球语言支持
|
|
167
|
+
*
|
|
168
|
+
* 文档:https://learn.microsoft.com/azure/ai-services/speech-service/language-support
|
|
169
|
+
*/
|
|
170
|
+
export declare const AzureSpeechLanguage: {
|
|
171
|
+
/**
|
|
172
|
+
* 中文(简体,中国大陆)
|
|
173
|
+
* - 适用:中国大陆普通话
|
|
174
|
+
*/
|
|
175
|
+
readonly CHINESE_SIMPLIFIED_CN: "zh-CN";
|
|
176
|
+
/**
|
|
177
|
+
* 中文(繁体,台湾)
|
|
178
|
+
* - 适用:台湾国语
|
|
179
|
+
*/
|
|
180
|
+
readonly CHINESE_TRADITIONAL_TW: "zh-TW";
|
|
181
|
+
/**
|
|
182
|
+
* 中文(繁体,香港)
|
|
183
|
+
* - 适用:香港粤语
|
|
184
|
+
*/
|
|
185
|
+
readonly CHINESE_TRADITIONAL_HK: "zh-HK";
|
|
186
|
+
/**
|
|
187
|
+
* 英语(美国)
|
|
188
|
+
* - 适用:美式英语
|
|
189
|
+
*/
|
|
190
|
+
readonly ENGLISH_US: "en-US";
|
|
191
|
+
/**
|
|
192
|
+
* 英语(英国)
|
|
193
|
+
* - 适用:英式英语
|
|
194
|
+
*/
|
|
195
|
+
readonly ENGLISH_UK: "en-GB";
|
|
196
|
+
/**
|
|
197
|
+
* 英语(澳大利亚)
|
|
198
|
+
* - 适用:澳式英语
|
|
199
|
+
*/
|
|
200
|
+
readonly ENGLISH_AU: "en-AU";
|
|
201
|
+
/**
|
|
202
|
+
* 英语(加拿大)
|
|
203
|
+
* - 适用:加拿大英语
|
|
204
|
+
*/
|
|
205
|
+
readonly ENGLISH_CA: "en-CA";
|
|
206
|
+
/**
|
|
207
|
+
* 英语(印度)
|
|
208
|
+
* - 适用:印度英语
|
|
209
|
+
*/
|
|
210
|
+
readonly ENGLISH_IN: "en-IN";
|
|
211
|
+
/**
|
|
212
|
+
* 英语(新西兰)
|
|
213
|
+
* - 适用:新西兰英语
|
|
214
|
+
*/
|
|
215
|
+
readonly ENGLISH_NZ: "en-NZ";
|
|
216
|
+
/**
|
|
217
|
+
* 日语(日本)
|
|
218
|
+
* - 适用:标准日本语
|
|
219
|
+
*/
|
|
220
|
+
readonly JAPANESE_JP: "ja-JP";
|
|
221
|
+
/**
|
|
222
|
+
* 韩语(韩国)
|
|
223
|
+
* - 适用:标准韩国语
|
|
224
|
+
*/
|
|
225
|
+
readonly KOREAN_KR: "ko-KR";
|
|
226
|
+
/**
|
|
227
|
+
* 越南语(越南)
|
|
228
|
+
* - 适用:越南语
|
|
229
|
+
*/
|
|
230
|
+
readonly VIETNAMESE_VN: "vi-VN";
|
|
231
|
+
/**
|
|
232
|
+
* 泰语(泰国)
|
|
233
|
+
* - 适用:泰语
|
|
234
|
+
*/
|
|
235
|
+
readonly THAI_TH: "th-TH";
|
|
236
|
+
/**
|
|
237
|
+
* 印尼语(印度尼西亚)
|
|
238
|
+
* - 适用:印尼语
|
|
239
|
+
*/
|
|
240
|
+
readonly INDONESIAN_ID: "id-ID";
|
|
241
|
+
/**
|
|
242
|
+
* 马来语(马来西亚)
|
|
243
|
+
* - 适用:马来语
|
|
244
|
+
*/
|
|
245
|
+
readonly MALAY_MY: "ms-MY";
|
|
246
|
+
/**
|
|
247
|
+
* 菲律宾语(菲律宾)
|
|
248
|
+
* - 适用:菲律宾语(他加禄语)
|
|
249
|
+
*/
|
|
250
|
+
readonly FILIPINO_PH: "fil-PH";
|
|
251
|
+
/**
|
|
252
|
+
* 印地语(印度)
|
|
253
|
+
* - 适用:印地语
|
|
254
|
+
*/
|
|
255
|
+
readonly HINDI_IN: "hi-IN";
|
|
256
|
+
/**
|
|
257
|
+
* 泰米尔语(印度)
|
|
258
|
+
* - 适用:泰米尔语
|
|
259
|
+
*/
|
|
260
|
+
readonly TAMIL_IN: "ta-IN";
|
|
261
|
+
/**
|
|
262
|
+
* 泰卢固语(印度)
|
|
263
|
+
* - 适用:泰卢固语
|
|
264
|
+
*/
|
|
265
|
+
readonly TELUGU_IN: "te-IN";
|
|
266
|
+
/**
|
|
267
|
+
* 德语(德国)
|
|
268
|
+
* - 适用:标准德语
|
|
269
|
+
*/
|
|
270
|
+
readonly GERMAN_DE: "de-DE";
|
|
271
|
+
/**
|
|
272
|
+
* 法语(法国)
|
|
273
|
+
* - 适用:法国法语
|
|
274
|
+
*/
|
|
275
|
+
readonly FRENCH_FR: "fr-FR";
|
|
276
|
+
/**
|
|
277
|
+
* 西班牙语(西班牙)
|
|
278
|
+
* - 适用:西班牙语
|
|
279
|
+
*/
|
|
280
|
+
readonly SPANISH_ES: "es-ES";
|
|
281
|
+
/**
|
|
282
|
+
* 西班牙语(墨西哥)
|
|
283
|
+
* - 适用:拉丁美洲西班牙语
|
|
284
|
+
*/
|
|
285
|
+
readonly SPANISH_MX: "es-MX";
|
|
286
|
+
/**
|
|
287
|
+
* 意大利语(意大利)
|
|
288
|
+
* - 适用:意大利语
|
|
289
|
+
*/
|
|
290
|
+
readonly ITALIAN_IT: "it-IT";
|
|
291
|
+
/**
|
|
292
|
+
* 葡萄牙语(巴西)
|
|
293
|
+
* - 适用:巴西葡萄牙语
|
|
294
|
+
*/
|
|
295
|
+
readonly PORTUGUESE_BR: "pt-BR";
|
|
296
|
+
/**
|
|
297
|
+
* 葡萄牙语(葡萄牙)
|
|
298
|
+
* - 适用:欧洲葡萄牙语
|
|
299
|
+
*/
|
|
300
|
+
readonly PORTUGUESE_PT: "pt-PT";
|
|
301
|
+
/**
|
|
302
|
+
* 俄语(俄罗斯)
|
|
303
|
+
* - 适用:俄语
|
|
304
|
+
*/
|
|
305
|
+
readonly RUSSIAN_RU: "ru-RU";
|
|
306
|
+
/**
|
|
307
|
+
* 荷兰语(荷兰)
|
|
308
|
+
* - 适用:荷兰语
|
|
309
|
+
*/
|
|
310
|
+
readonly DUTCH_NL: "nl-NL";
|
|
311
|
+
/**
|
|
312
|
+
* 波兰语(波兰)
|
|
313
|
+
* - 适用:波兰语
|
|
314
|
+
*/
|
|
315
|
+
readonly POLISH_PL: "pl-PL";
|
|
316
|
+
/**
|
|
317
|
+
* 瑞典语(瑞典)
|
|
318
|
+
* - 适用:瑞典语
|
|
319
|
+
*/
|
|
320
|
+
readonly SWEDISH_SE: "sv-SE";
|
|
321
|
+
/**
|
|
322
|
+
* 挪威语(挪威)
|
|
323
|
+
* - 适用:挪威语
|
|
324
|
+
*/
|
|
325
|
+
readonly NORWEGIAN_NO: "nb-NO";
|
|
326
|
+
/**
|
|
327
|
+
* 丹麦语(丹麦)
|
|
328
|
+
* - 适用:丹麦语
|
|
329
|
+
*/
|
|
330
|
+
readonly DANISH_DK: "da-DK";
|
|
331
|
+
/**
|
|
332
|
+
* 芬兰语(芬兰)
|
|
333
|
+
* - 适用:芬兰语
|
|
334
|
+
*/
|
|
335
|
+
readonly FINNISH_FI: "fi-FI";
|
|
336
|
+
/**
|
|
337
|
+
* 阿拉伯语(沙特阿拉伯)
|
|
338
|
+
* - 适用:标准阿拉伯语
|
|
339
|
+
*/
|
|
340
|
+
readonly ARABIC_SA: "ar-SA";
|
|
341
|
+
/**
|
|
342
|
+
* 阿拉伯语(阿联酋)
|
|
343
|
+
* - 适用:阿联酋阿拉伯语
|
|
344
|
+
*/
|
|
345
|
+
readonly ARABIC_AE: "ar-AE";
|
|
346
|
+
/**
|
|
347
|
+
* 土耳其语(土耳其)
|
|
348
|
+
* - 适用:土耳其语
|
|
349
|
+
*/
|
|
350
|
+
readonly TURKISH_TR: "tr-TR";
|
|
351
|
+
/**
|
|
352
|
+
* 希伯来语(以色列)
|
|
353
|
+
* - 适用:希伯来语
|
|
354
|
+
*/
|
|
355
|
+
readonly HEBREW_IL: "he-IL";
|
|
356
|
+
};
|
|
357
|
+
/**
|
|
358
|
+
* Azure Speech SDK 语言类型
|
|
359
|
+
* 自动从 AzureSpeechLanguage 常量推断
|
|
360
|
+
*/
|
|
361
|
+
export type AzureSpeechLanguageValue = typeof AzureSpeechLanguage[keyof typeof AzureSpeechLanguage];
|
|
362
|
+
/**
|
|
363
|
+
* 区域元数据(可选,用于 UI 展示)
|
|
364
|
+
*/
|
|
365
|
+
export interface RegionMetadata {
|
|
366
|
+
/**
|
|
367
|
+
* 显示名称(中文)
|
|
368
|
+
*/
|
|
369
|
+
displayName: string;
|
|
370
|
+
/**
|
|
371
|
+
* 显示名称(英文)
|
|
372
|
+
*/
|
|
373
|
+
displayNameEn: string;
|
|
374
|
+
/**
|
|
375
|
+
* 地理位置
|
|
376
|
+
*/
|
|
377
|
+
location: string;
|
|
378
|
+
/**
|
|
379
|
+
* 推荐使用场景
|
|
380
|
+
*/
|
|
381
|
+
recommendedFor: string[];
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* 区域元数据映射(仅核心区域)
|
|
385
|
+
*/
|
|
386
|
+
export declare const REGION_METADATA: Record<string, RegionMetadata>;
|
|
387
|
+
/**
|
|
388
|
+
* 语言元数据(可选,用于 UI 展示)
|
|
389
|
+
*/
|
|
390
|
+
export interface LanguageMetadata {
|
|
391
|
+
/**
|
|
392
|
+
* 显示名称(中文)
|
|
393
|
+
*/
|
|
394
|
+
displayName: string;
|
|
395
|
+
/**
|
|
396
|
+
* 显示名称(英文)
|
|
397
|
+
*/
|
|
398
|
+
displayNameEn: string;
|
|
399
|
+
/**
|
|
400
|
+
* 原生名称
|
|
401
|
+
*/
|
|
402
|
+
nativeName: string;
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* 语言元数据映射(仅核心语言)
|
|
406
|
+
*/
|
|
407
|
+
export declare const LANGUAGE_METADATA: Record<string, LanguageMetadata>;
|
|
408
|
+
/**
|
|
409
|
+
* 辅助函数:检查是否为有效的 Azure 区域
|
|
410
|
+
*/
|
|
411
|
+
export declare const isValidAzureRegion: (region: string) => region is AzureSpeechRegionValue;
|
|
412
|
+
/**
|
|
413
|
+
* 辅助函数:检查是否为有效的 Azure 语言代码
|
|
414
|
+
*/
|
|
415
|
+
export declare const isValidAzureLanguage: (language: string) => language is AzureSpeechLanguageValue;
|
|
416
|
+
/**
|
|
417
|
+
* 辅助函数:获取区域显示名称
|
|
418
|
+
*/
|
|
419
|
+
export declare const getRegionDisplayName: (region: string, locale?: "zh" | "en") => string;
|
|
420
|
+
/**
|
|
421
|
+
* 辅助函数:获取语言显示名称
|
|
422
|
+
*/
|
|
423
|
+
export declare const getLanguageDisplayName: (language: string, format?: "zh" | "en" | "native") => string;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Azure Speech SDK ASR 服务实现
|
|
3
|
+
* @description 基于 Microsoft Cognitive Services Speech SDK 的语音识别服务
|
|
4
|
+
*/
|
|
5
|
+
import { BaseAsrService } from './baseAsrService';
|
|
6
|
+
/**
|
|
7
|
+
* Azure Speech SDK ASR 服务
|
|
8
|
+
*
|
|
9
|
+
* 特点:
|
|
10
|
+
* - 支持单语言和多语言自动检测(最多 4 种语言)
|
|
11
|
+
* - 支持短语列表(Phrase List)优化识别准确率
|
|
12
|
+
* - 支持自定义超时参数配置
|
|
13
|
+
* - 支持 Custom Speech 端点
|
|
14
|
+
* - 内置连接管理,无需独立信令服务
|
|
15
|
+
*
|
|
16
|
+
* 使用要求:
|
|
17
|
+
* - opts.asrProvider 必须为 'azure'
|
|
18
|
+
* - opts.azure 必须配置(包含 subscriptionKey 和 region)
|
|
19
|
+
*/
|
|
20
|
+
export declare class AzureAsrService extends BaseAsrService {
|
|
21
|
+
/**
|
|
22
|
+
* Azure Speech 识别器实例
|
|
23
|
+
*/
|
|
24
|
+
private recognizer;
|
|
25
|
+
/**
|
|
26
|
+
* 媒体流实例(用于 Mute 控制)
|
|
27
|
+
*/
|
|
28
|
+
private mediaStream;
|
|
29
|
+
/**
|
|
30
|
+
* 能量门控实例(用于 TTS 回声抑制)
|
|
31
|
+
*/
|
|
32
|
+
private energyGate;
|
|
33
|
+
/**
|
|
34
|
+
* Web Audio API 上下文
|
|
35
|
+
*/
|
|
36
|
+
private audioContext;
|
|
37
|
+
/**
|
|
38
|
+
* AudioContext 生命周期管理器(移动端)
|
|
39
|
+
*/
|
|
40
|
+
private audioContextLifecycle;
|
|
41
|
+
/**
|
|
42
|
+
* 预加载依赖
|
|
43
|
+
*
|
|
44
|
+
* Azure Speech SDK 通过 npm 包加载,无需额外预加载
|
|
45
|
+
* 主要用于验证配置完整性
|
|
46
|
+
*/
|
|
47
|
+
preloadDeps: () => Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* 启动 ASR 服务
|
|
50
|
+
*
|
|
51
|
+
* 流程:
|
|
52
|
+
* 1. 音频设备检测(如果配置了 checkAudioDeviceBeforeStart)
|
|
53
|
+
* 2. 创建 SpeechConfig 并配置参数
|
|
54
|
+
* 3. 创建 AudioConfig
|
|
55
|
+
* 4. 创建 Recognizer(单语言或多语言模式)
|
|
56
|
+
* 5. 配置短语列表(如果有)
|
|
57
|
+
* 6. 绑定事件处理器
|
|
58
|
+
* 7. 启动连续识别
|
|
59
|
+
*/
|
|
60
|
+
start: () => Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* 停止 ASR 服务
|
|
63
|
+
*
|
|
64
|
+
* 停止连续识别并释放资源
|
|
65
|
+
*/
|
|
66
|
+
stop: () => Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* 静音控制
|
|
69
|
+
*
|
|
70
|
+
* Azure Speech SDK 通过 MediaStreamTrack.enabled 控制静音
|
|
71
|
+
* enabled = false 时,track 生成空帧(软静音)
|
|
72
|
+
*
|
|
73
|
+
* @param muted - 是否静音
|
|
74
|
+
*/
|
|
75
|
+
mute: (muted: boolean) => void;
|
|
76
|
+
/**
|
|
77
|
+
* 设置外部播放抑制启用状态
|
|
78
|
+
*
|
|
79
|
+
* 该方法用于控制能量门控的阈值调整,以抑制外部音频干扰(如 TTS 播放)
|
|
80
|
+
*
|
|
81
|
+
* @param enabled - 是否启用抑制
|
|
82
|
+
*
|
|
83
|
+
* @remarks
|
|
84
|
+
* - 当 enabled 为 true 时,会提高能量门控阈值,抑制外部音频
|
|
85
|
+
* - 当 enabled 为 false 时,恢复正常阈值
|
|
86
|
+
*/
|
|
87
|
+
setPlaybackSuppressionEnabled: (enabled: boolean) => void;
|
|
88
|
+
/**
|
|
89
|
+
* 销毁 ASR 服务
|
|
90
|
+
*
|
|
91
|
+
* 释放所有资源
|
|
92
|
+
*/
|
|
93
|
+
dispose: () => void;
|
|
94
|
+
/**
|
|
95
|
+
* 设置识别器事件处理
|
|
96
|
+
*
|
|
97
|
+
* 绑定 Azure Speech SDK 事件到 BaseAsrService 事件系统
|
|
98
|
+
*
|
|
99
|
+
* 事件映射:
|
|
100
|
+
* - recognizing → message (completed: false) - 临时识别结果
|
|
101
|
+
* - recognized → message (completed: true) - 最终识别结果
|
|
102
|
+
* - recognized (NoMatch) → silence - 未识别到语音
|
|
103
|
+
* - sessionStarted → 设置 customSessionId
|
|
104
|
+
* - sessionStopped → stop
|
|
105
|
+
* - canceled → error
|
|
106
|
+
*/
|
|
107
|
+
private readonly setupRecognizerEvents;
|
|
108
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Emittery from 'emittery';
|
|
2
2
|
import type { IResolvedOptions } from '../../../../types/config';
|
|
3
3
|
import type { BaseSignalingService } from '../signal/base';
|
|
4
|
+
import type { MediaStreamManager } from '../../../utils/MediaStreamManager';
|
|
4
5
|
import { ErrorManager } from '../../../error';
|
|
5
6
|
import { type AudioDeviceCheckResult, type AudioDetectorOptions } from '../../../utils/AudioDeviceDetector';
|
|
6
7
|
export declare namespace NBaseAsrService {
|
|
@@ -59,11 +60,25 @@ export declare abstract class BaseAsrService<E extends NBaseAsrService.IEmitter
|
|
|
59
60
|
muted: boolean;
|
|
60
61
|
readonly emitter: Emittery<E, E & import("emittery").OmnipresentEventData, import("emittery").DatalessEventNames<E>>;
|
|
61
62
|
protected started: boolean;
|
|
63
|
+
protected customSessionId: string | null;
|
|
64
|
+
/**
|
|
65
|
+
* MediaStream 管理器(通过 DI 注入)
|
|
66
|
+
*/
|
|
67
|
+
protected readonly streamManager: MediaStreamManager;
|
|
62
68
|
private lastCheckResult;
|
|
63
69
|
private lastCheckTime;
|
|
64
70
|
private readonly CHECK_CACHE_TTL;
|
|
65
|
-
constructor(opts: IResolvedOptions, signalingService: BaseSignalingService, errorManager: ErrorManager);
|
|
71
|
+
constructor(opts: IResolvedOptions, signalingService: BaseSignalingService, errorManager: ErrorManager, streamManager: MediaStreamManager);
|
|
66
72
|
get sessionId(): string | null;
|
|
73
|
+
/**
|
|
74
|
+
* 静音控制
|
|
75
|
+
*
|
|
76
|
+
* 实现说明:
|
|
77
|
+
* - BRTC: 调用 signalingService.Mute(),由 BRTC SDK 控制
|
|
78
|
+
* - Azure: 设置 MediaStreamTrack.enabled = false,生成空帧(软静音)
|
|
79
|
+
*
|
|
80
|
+
* @param muted - 是否静音
|
|
81
|
+
*/
|
|
67
82
|
mute: (muted: boolean) => void;
|
|
68
83
|
setMutedByUser: (muted: boolean) => void;
|
|
69
84
|
/**
|
|
@@ -76,6 +91,18 @@ export declare abstract class BaseAsrService<E extends NBaseAsrService.IEmitter
|
|
|
76
91
|
tryUnmuteAsr: () => boolean;
|
|
77
92
|
disable: () => void;
|
|
78
93
|
enable: () => void;
|
|
94
|
+
/**
|
|
95
|
+
* 设置外部播放抑制启用状态
|
|
96
|
+
*
|
|
97
|
+
* 该方法用于控制 ASR 输入的外部播放抑制策略(例如 TTS 外放期间抬阈门控)。
|
|
98
|
+
*
|
|
99
|
+
* @param enabled - 是否启用抑制
|
|
100
|
+
*
|
|
101
|
+
* @remarks
|
|
102
|
+
* - 默认实现为空操作,需要子类根据具体实现来重写
|
|
103
|
+
* - 例如 Azure ASR 使用能量门控(EnergyBasedGate)进行抬阈抑制
|
|
104
|
+
*/
|
|
105
|
+
setPlaybackSuppressionEnabled: (enabled: boolean) => void;
|
|
79
106
|
/**
|
|
80
107
|
* 检查音频设备可用性
|
|
81
108
|
*
|
|
@@ -122,6 +149,4 @@ export declare abstract class BaseAsrService<E extends NBaseAsrService.IEmitter
|
|
|
122
149
|
abstract start(): Promise<void>;
|
|
123
150
|
abstract stop(): Promise<void>;
|
|
124
151
|
abstract dispose(): void;
|
|
125
|
-
protected abstract makeStartOptions(extra: any): unknown;
|
|
126
|
-
protected abstract parseMessage(raw: string): NBaseAsrService.IMessageProtocol;
|
|
127
152
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file 空信令服务实现(用于不需要 Signaling 的 ASR,如 Azure)
|
|
3
|
+
* @description 用于满足 DI 容器的依赖注入要求,但实际不执行任何信令操作
|
|
4
|
+
*/
|
|
5
|
+
import { BaseSignalingService } from './base';
|
|
6
|
+
/**
|
|
7
|
+
* 空信令服务(No-op Signaling Service)
|
|
8
|
+
*
|
|
9
|
+
* 用于不需要独立信令层的 ASR 实现(如 Azure Speech SDK)
|
|
10
|
+
* 提供最小化的方法实现以满足 BaseSignalingService 接口要求
|
|
11
|
+
*
|
|
12
|
+
* 特点:
|
|
13
|
+
* - 不执行任何实际的信令操作
|
|
14
|
+
* - 自动生成简单的 sessionId
|
|
15
|
+
* - 所有方法都是空操作(no-op)
|
|
16
|
+
*
|
|
17
|
+
* 使用场景:
|
|
18
|
+
* - Azure ASR 不需要独立的信令服务
|
|
19
|
+
* - 其他自管理连接的 ASR 实现
|
|
20
|
+
*/
|
|
21
|
+
export declare class NoopSignalingService extends BaseSignalingService {
|
|
22
|
+
/**
|
|
23
|
+
* 启动信令服务(空操作)
|
|
24
|
+
*
|
|
25
|
+
* 仅生成一个简单的 sessionId 以满足接口要求
|
|
26
|
+
*
|
|
27
|
+
* @param _opts - 启动选项(未使用)
|
|
28
|
+
*/
|
|
29
|
+
Start<P extends Record<string, any>>(_opts: P): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* 停止信令服务(空操作)
|
|
32
|
+
*
|
|
33
|
+
* 清空 sessionId
|
|
34
|
+
*/
|
|
35
|
+
Stop(): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* 销毁信令服务(空操作)
|
|
38
|
+
*
|
|
39
|
+
* 调用基类的 _dispose 方法进行清理
|
|
40
|
+
*/
|
|
41
|
+
Dispose(): void;
|
|
42
|
+
/**
|
|
43
|
+
* 静音控制(空操作)
|
|
44
|
+
*
|
|
45
|
+
* @param _muted - 是否静音(未使用)
|
|
46
|
+
*/
|
|
47
|
+
Mute(_muted: boolean): void;
|
|
48
|
+
/**
|
|
49
|
+
* 获取会话 ID
|
|
50
|
+
*
|
|
51
|
+
* @returns 自动生成的会话 ID
|
|
52
|
+
*/
|
|
53
|
+
GetSessionID(): string;
|
|
54
|
+
}
|