@spatialwalk/avatarkit 1.0.0-beta.16 → 1.0.0-beta.17
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/CHANGELOG.md +25 -1
- package/README.md +119 -70
- package/dist/{StreamingAudioPlayer-COgQTrz3.js → StreamingAudioPlayer-a8MwHQ3Q.js} +2 -2
- package/dist/{StreamingAudioPlayer-COgQTrz3.js.map → StreamingAudioPlayer-a8MwHQ3Q.js.map} +1 -1
- package/dist/avatar_core_wasm.wasm +0 -0
- package/dist/core/AvatarController.d.ts +64 -9
- package/dist/core/AvatarController.d.ts.map +1 -1
- package/dist/core/AvatarView.d.ts +9 -2
- package/dist/core/AvatarView.d.ts.map +1 -1
- package/dist/{index-Dsokgngg.js → index-suaZGA5u.js} +1198 -1019
- package/dist/index-suaZGA5u.js.map +1 -0
- package/dist/index.js +9 -8
- package/dist/types/index.d.ts +8 -9
- package/dist/types/index.d.ts.map +1 -1
- package/dist/vanilla/vite.config.d.ts.map +1 -1
- package/package.json +13 -12
- package/dist/index-Dsokgngg.js.map +0 -1
|
@@ -15,6 +15,8 @@ export declare class AvatarController {
|
|
|
15
15
|
protected isPlaying: boolean;
|
|
16
16
|
protected isConnected: boolean;
|
|
17
17
|
protected currentState: AvatarState;
|
|
18
|
+
private currentReqId;
|
|
19
|
+
private reqEnd;
|
|
18
20
|
onConnectionState: ((state: ConnectionState) => void) | null;
|
|
19
21
|
onAvatarState: ((state: AvatarState) => void) | null;
|
|
20
22
|
onError: ((error: Error) => void) | null;
|
|
@@ -28,9 +30,16 @@ export declare class AvatarController {
|
|
|
28
30
|
private readonly MAX_KEYFRAMES;
|
|
29
31
|
private readonly KEYFRAMES_CLEANUP_THRESHOLD;
|
|
30
32
|
private readonly MAX_PENDING_AUDIO_CHUNKS;
|
|
33
|
+
private isAudioOnlyMode;
|
|
31
34
|
constructor(avatar: Avatar, options?: {
|
|
32
35
|
playbackMode?: AvatarPlaybackMode;
|
|
33
36
|
});
|
|
37
|
+
/**
|
|
38
|
+
* Get current request ID
|
|
39
|
+
* Returns the current reqId for the active audio session
|
|
40
|
+
* @returns Current reqId, or null if no active session
|
|
41
|
+
*/
|
|
42
|
+
getCurrentReqId(): string | null;
|
|
34
43
|
/**
|
|
35
44
|
* Start service (network mode only)
|
|
36
45
|
*/
|
|
@@ -38,30 +47,38 @@ export declare class AvatarController {
|
|
|
38
47
|
/**
|
|
39
48
|
* Send audio to server (network mode only)
|
|
40
49
|
* Also cache to data layer for playback
|
|
50
|
+
* @returns reqId - Request ID for this audio session
|
|
41
51
|
*/
|
|
42
|
-
send(audioData: ArrayBuffer, end?: boolean):
|
|
52
|
+
send(audioData: ArrayBuffer, end?: boolean): string | null;
|
|
43
53
|
/**
|
|
44
54
|
* Close service (network mode only)
|
|
45
55
|
*/
|
|
46
56
|
close(): void;
|
|
47
57
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
58
|
+
* Playback existing audio and animation data (external data mode)
|
|
59
|
+
* Starts a new conversation by generating a new reqId and interrupting any existing conversation
|
|
60
|
+
* @param initialAudioChunks - Existing audio chunks to playback
|
|
61
|
+
* @param initialKeyframes - Existing animation keyframes to playback
|
|
62
|
+
* @returns reqId - New request ID for this conversation session
|
|
50
63
|
*/
|
|
51
|
-
|
|
64
|
+
playback(initialAudioChunks?: Array<{
|
|
52
65
|
data: Uint8Array;
|
|
53
66
|
isLast: boolean;
|
|
54
|
-
}>, initialKeyframes?: Flame[]): Promise<
|
|
67
|
+
}>, initialKeyframes?: Flame[]): Promise<string>;
|
|
55
68
|
/**
|
|
56
69
|
* Send audio data (external data mode)
|
|
57
|
-
* Stream additional audio data after
|
|
70
|
+
* Stream additional audio data after playback()
|
|
71
|
+
* @returns reqId - Request ID for this audio session
|
|
58
72
|
*/
|
|
59
|
-
|
|
73
|
+
yieldAudioData(data: Uint8Array, isLast?: boolean): string | null;
|
|
60
74
|
/**
|
|
61
75
|
* Send animation keyframes (external data mode or network mode)
|
|
62
|
-
* Stream additional animation data after
|
|
76
|
+
* Stream additional animation data after playback()
|
|
77
|
+
* @param keyframes - Animation keyframes to send
|
|
78
|
+
* @param reqId - Request ID (required). If reqId doesn't match current reqId, keyframes will be discarded.
|
|
79
|
+
* Use getCurrentReqId() to get the current reqId.
|
|
63
80
|
*/
|
|
64
|
-
|
|
81
|
+
yieldFramesData(keyframes: Flame[], reqId: string): void;
|
|
65
82
|
/**
|
|
66
83
|
* Pause playback (can be resumed later)
|
|
67
84
|
* Pause audio playback and stop render loop, but preserve all state (keyframes, audio buffers, etc.)
|
|
@@ -81,6 +98,26 @@ export declare class AvatarController {
|
|
|
81
98
|
* Clear all data and resources
|
|
82
99
|
*/
|
|
83
100
|
clear(): void;
|
|
101
|
+
/**
|
|
102
|
+
* Generate new reqId and log conversation started event
|
|
103
|
+
* @private
|
|
104
|
+
*/
|
|
105
|
+
private generateAndLogNewReqId;
|
|
106
|
+
/**
|
|
107
|
+
* Clear playback data (keyframes, audio chunks, and playback state)
|
|
108
|
+
* @private
|
|
109
|
+
*/
|
|
110
|
+
private clearPlaybackData;
|
|
111
|
+
/**
|
|
112
|
+
* Reset reqId state (for both network and external modes)
|
|
113
|
+
* @private
|
|
114
|
+
*/
|
|
115
|
+
private resetReqIdState;
|
|
116
|
+
/**
|
|
117
|
+
* Get effective reqId (handles both network and external modes)
|
|
118
|
+
* @private
|
|
119
|
+
*/
|
|
120
|
+
private getEffectiveReqId;
|
|
84
121
|
/**
|
|
85
122
|
* Start streaming playback (internal implementation)
|
|
86
123
|
*/
|
|
@@ -93,6 +130,24 @@ export declare class AvatarController {
|
|
|
93
130
|
* Stop playback loop
|
|
94
131
|
*/
|
|
95
132
|
private stopPlaybackLoop;
|
|
133
|
+
/**
|
|
134
|
+
* 启用音频独立播放模式(当服务器错误或超时时调用)
|
|
135
|
+
* 此模式下,音频会独立播放,不依赖动画数据
|
|
136
|
+
* 一旦启用,本次会话后续的动画数据将被忽略
|
|
137
|
+
* @private
|
|
138
|
+
*/
|
|
139
|
+
private enableAudioOnlyMode;
|
|
140
|
+
/**
|
|
141
|
+
* 音频独立播放(完全独立的逻辑,不影响正常播放流程)
|
|
142
|
+
* @private
|
|
143
|
+
*/
|
|
144
|
+
private startAudioOnlyPlayback;
|
|
145
|
+
/**
|
|
146
|
+
* 音频监控循环(仅用于音频独立模式)
|
|
147
|
+
* 只检测音频是否结束,不进行动画渲染
|
|
148
|
+
* @private
|
|
149
|
+
*/
|
|
150
|
+
private startAudioMonitoringLoop;
|
|
96
151
|
/**
|
|
97
152
|
* Stop playback
|
|
98
153
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarController.d.ts","sourceRoot":"","sources":["../../core/AvatarController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6CAA6C,CAAA;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAItC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAiB,kBAAkB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"AvatarController.d.ts","sourceRoot":"","sources":["../../core/AvatarController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AvatarPlaybackMode } from '../types';
|
|
2
2
|
import { Avatar } from './Avatar';
|
|
3
3
|
import { AvatarController } from './AvatarController';
|
|
4
4
|
export declare class AvatarView {
|
|
5
5
|
private readonly avatarController;
|
|
6
6
|
readonly playbackMode: AvatarPlaybackMode;
|
|
7
7
|
private readonly avatar;
|
|
8
|
+
readonly ready: Promise<void>;
|
|
8
9
|
private canvas;
|
|
9
10
|
private renderSystem;
|
|
10
11
|
private isInitialized;
|
|
@@ -43,7 +44,13 @@ export declare class AvatarView {
|
|
|
43
44
|
* 构造函数
|
|
44
45
|
* 创建统一的 AvatarController,内部根据配置自动组合网络层
|
|
45
46
|
*/
|
|
46
|
-
|
|
47
|
+
/**
|
|
48
|
+
* 构造函数
|
|
49
|
+
* 创建统一的 AvatarController,内部根据配置自动组合网络层
|
|
50
|
+
* @param avatar - Avatar 实例
|
|
51
|
+
* @param container - Canvas 容器元素(必选)
|
|
52
|
+
*/
|
|
53
|
+
constructor(avatar: Avatar, container: HTMLElement);
|
|
47
54
|
/**
|
|
48
55
|
* 获取控制器(公共接口)
|
|
49
56
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarView.d.ts","sourceRoot":"","sources":["../../core/AvatarView.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"AvatarView.d.ts","sourceRoot":"","sources":["../../core/AvatarView.ts"],"names":[],"mappings":"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"}
|