diff --git a/frontend/src/App.css b/frontend/src/App.css
index 6f12e3a..cc89700 100644
--- a/frontend/src/App.css
+++ b/frontend/src/App.css
@@ -103,6 +103,15 @@ body {
animation: pulse 1.5s ease-in-out infinite;
}
+.vad-indicator--loading {
+ color: var(--color-warning);
+}
+
+.vad-indicator--error {
+ color: var(--color-error);
+ animation: none;
+}
+
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.6; }
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 6e8e52d..13174ec 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -13,6 +13,8 @@ function App() {
currentReply,
isProcessing,
isSpeaking,
+ isVADReady,
+ vadError,
connectionStatus,
videoRef,
stream,
@@ -21,12 +23,18 @@ function App() {
interrupt,
} = useVisionSession();
+ const isConnected = connectionStatus === "connected";
+
return (
CamTalk
- {connectionStatus === "connected" ? "已连接" : connectionStatus === "connecting" ? "连接中..." : "未连接"}
+ {isConnected
+ ? "已连接"
+ : connectionStatus === "connecting"
+ ? "连接中..."
+ : "未连接"}
@@ -34,6 +42,16 @@ function App() {
{isSpeaking &&
🎤 正在聆听...
}
+ {isConnected && !isVADReady && !vadError && (
+
+ 正在初始化语音检测...
+
+ )}
+ {vadError && (
+
+ ⚠️ {vadError}
+
+ )}
@@ -48,7 +66,7 @@ function App() {