@huyooo/ai-chat-bridge-electron 0.2.11 → 0.2.13
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/main/index.d.ts +153 -1
- package/dist/main/index.js +524 -35
- package/dist/preload/index.d.ts +71 -0
- package/dist/preload/index.js +39 -0
- package/dist/renderer/index.d.ts +141 -1
- package/dist/renderer/index.js +75 -0
- package/package.json +8 -4
- package/src/main/asr/client.ts +270 -0
- package/src/main/asr/index.ts +270 -0
- package/src/main/asr/protocol.ts +344 -0
- package/src/main/index.ts +5 -0
- package/src/preload/index.ts +109 -0
- package/src/renderer/index.ts +135 -0
package/dist/main/index.d.ts
CHANGED
|
@@ -3,6 +3,158 @@ export { AgentConfig, ChatEvent, ChatMode, ChatOptions, MODELS, ProviderType } f
|
|
|
3
3
|
import { StorageContext, StorageAdapter } from '@huyooo/ai-chat-storage';
|
|
4
4
|
export { MessageRecord, SessionRecord, StorageAdapter, StorageContext } from '@huyooo/ai-chat-storage';
|
|
5
5
|
|
|
6
|
+
/** ASR 请求配置 */
|
|
7
|
+
interface AsrRequestConfig {
|
|
8
|
+
/** 用户相关配置 */
|
|
9
|
+
user?: {
|
|
10
|
+
uid?: string;
|
|
11
|
+
did?: string;
|
|
12
|
+
platform?: string;
|
|
13
|
+
sdk_version?: string;
|
|
14
|
+
app_version?: string;
|
|
15
|
+
};
|
|
16
|
+
/** 音频配置 */
|
|
17
|
+
audio: {
|
|
18
|
+
format: 'pcm' | 'wav' | 'ogg' | 'mp3';
|
|
19
|
+
codec?: 'raw' | 'opus';
|
|
20
|
+
rate?: number;
|
|
21
|
+
bits?: number;
|
|
22
|
+
channel?: number;
|
|
23
|
+
/** 语种(仅流式输入模式支持) */
|
|
24
|
+
language?: string;
|
|
25
|
+
};
|
|
26
|
+
/** 请求配置 */
|
|
27
|
+
request: {
|
|
28
|
+
model_name: 'bigmodel';
|
|
29
|
+
/** 启用 ITN(数字规整) */
|
|
30
|
+
enable_itn?: boolean;
|
|
31
|
+
/** 启用标点 */
|
|
32
|
+
enable_punc?: boolean;
|
|
33
|
+
/** 启用语义顺滑 */
|
|
34
|
+
enable_ddc?: boolean;
|
|
35
|
+
/** 输出语音停顿、分句、分词信息 */
|
|
36
|
+
show_utterances?: boolean;
|
|
37
|
+
/** 结果返回方式:full(全量)/single(增量) */
|
|
38
|
+
result_type?: 'full' | 'single';
|
|
39
|
+
/** 启用首字返回加速 */
|
|
40
|
+
enable_accelerate_text?: boolean;
|
|
41
|
+
/** 首字返回加速率 (0-20) */
|
|
42
|
+
accelerate_score?: number;
|
|
43
|
+
/** 语义切句最大静音阈值 (ms) */
|
|
44
|
+
vad_segment_duration?: number;
|
|
45
|
+
/** 强制判停时间 (ms) */
|
|
46
|
+
end_window_size?: number;
|
|
47
|
+
/** 热词等语料配置 */
|
|
48
|
+
corpus?: {
|
|
49
|
+
boosting_table_name?: string;
|
|
50
|
+
boosting_table_id?: string;
|
|
51
|
+
correct_table_name?: string;
|
|
52
|
+
correct_table_id?: string;
|
|
53
|
+
context?: string;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/** ASR 识别结果 */
|
|
58
|
+
interface AsrResult {
|
|
59
|
+
result?: {
|
|
60
|
+
text: string;
|
|
61
|
+
utterances?: Array<{
|
|
62
|
+
text: string;
|
|
63
|
+
start_time: number;
|
|
64
|
+
end_time: number;
|
|
65
|
+
definite: boolean;
|
|
66
|
+
words?: Array<{
|
|
67
|
+
text: string;
|
|
68
|
+
start_time: number;
|
|
69
|
+
end_time: number;
|
|
70
|
+
blank_duration: number;
|
|
71
|
+
}>;
|
|
72
|
+
}>;
|
|
73
|
+
};
|
|
74
|
+
audio_info?: {
|
|
75
|
+
duration: number;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* 火山引擎大模型流式语音识别 - WebSocket 客户端
|
|
81
|
+
*
|
|
82
|
+
* 在 Electron 主进程中运行,处理与火山引擎 ASR 服务的通信
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
/** ASR 客户端配置 */
|
|
86
|
+
interface AsrClientConfig {
|
|
87
|
+
/** 火山引擎 App ID */
|
|
88
|
+
appId: string;
|
|
89
|
+
/** 火山引擎 Access Key */
|
|
90
|
+
accessKey: string;
|
|
91
|
+
/** 资源 ID */
|
|
92
|
+
resourceId?: string;
|
|
93
|
+
/** 使用双向流式优化版 */
|
|
94
|
+
useAsyncMode?: boolean;
|
|
95
|
+
}
|
|
96
|
+
/** ASR 事件回调 */
|
|
97
|
+
interface AsrCallbacks {
|
|
98
|
+
/** 连接成功 */
|
|
99
|
+
onConnected?: () => void;
|
|
100
|
+
/** 收到识别结果 */
|
|
101
|
+
onResult?: (result: AsrResult, isLast: boolean) => void;
|
|
102
|
+
/** 发生错误 */
|
|
103
|
+
onError?: (error: Error) => void;
|
|
104
|
+
/** 连接关闭 */
|
|
105
|
+
onClose?: () => void;
|
|
106
|
+
}
|
|
107
|
+
/** ASR 会话配置 */
|
|
108
|
+
interface AsrSessionConfig {
|
|
109
|
+
/** 音频格式 */
|
|
110
|
+
format?: 'pcm' | 'wav';
|
|
111
|
+
/** 采样率 */
|
|
112
|
+
sampleRate?: number;
|
|
113
|
+
/** 启用标点 */
|
|
114
|
+
enablePunc?: boolean;
|
|
115
|
+
/** 启用 ITN(数字规整) */
|
|
116
|
+
enableItn?: boolean;
|
|
117
|
+
/** 启用语义顺滑 */
|
|
118
|
+
enableDdc?: boolean;
|
|
119
|
+
/** 输出分句信息 */
|
|
120
|
+
showUtterances?: boolean;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* ASR 模块导出
|
|
125
|
+
*/
|
|
126
|
+
|
|
127
|
+
/** ASR 桥接配置 */
|
|
128
|
+
interface AsrBridgeConfig {
|
|
129
|
+
/** IPC channel 前缀 */
|
|
130
|
+
channelPrefix?: string;
|
|
131
|
+
/** 火山引擎 App ID */
|
|
132
|
+
appId: string;
|
|
133
|
+
/** 火山引擎 Access Key */
|
|
134
|
+
accessKey: string;
|
|
135
|
+
/** 资源 ID */
|
|
136
|
+
resourceId?: string;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* 创建 ASR Electron 桥接
|
|
140
|
+
*
|
|
141
|
+
* 在主进程中调用,注册 ASR 相关的 IPC handlers
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```ts
|
|
145
|
+
* import { createAsrBridge } from '@huyooo/ai-chat-bridge-electron/main';
|
|
146
|
+
*
|
|
147
|
+
* createAsrBridge({
|
|
148
|
+
* appId: process.env.VOLC_APP_ID!,
|
|
149
|
+
* accessKey: process.env.VOLC_ACCESS_KEY!,
|
|
150
|
+
* });
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
declare function createAsrBridge(config: AsrBridgeConfig): {
|
|
154
|
+
/** 清理所有会话 */
|
|
155
|
+
cleanup: () => void;
|
|
156
|
+
};
|
|
157
|
+
|
|
6
158
|
/**
|
|
7
159
|
* Electron 主进程桥接
|
|
8
160
|
*
|
|
@@ -58,4 +210,4 @@ declare function createElectronBridge(options: ElectronBridgeOptions): Promise<{
|
|
|
58
210
|
storage: StorageAdapter;
|
|
59
211
|
}>;
|
|
60
212
|
|
|
61
|
-
export { type ElectronBridgeOptions, type FileInfo, createElectronBridge };
|
|
213
|
+
export { type AsrBridgeConfig, type AsrCallbacks, type AsrClientConfig, type AsrRequestConfig, type AsrResult, type AsrSessionConfig, type ElectronBridgeOptions, type FileInfo, createAsrBridge, createElectronBridge };
|