AI 應用元件

AI 語音球

Siri 式語音球:待機呼吸、聆聽波動、思考旋轉、說話脈動四態。

這是 WebberUI Pro 元件

下方的安裝指令需要授權才能執行,未授權時會回 401。

怎麼安裝 Pro 元件 →查看方案 →

以 canvas 2d 繪製的有機 blob 語音球:多層正弦擾動輪廓疊加漸層與光暈,由 state 驅動四種型態——待機時緩慢呼吸、聆聽時隨模擬音量劇烈波動、思考時環繞粒子雙向旋轉、說話時依類音節節奏脈動,狀態切換以指數趨近平滑過渡,適合語音助理與 AI 對話介面。

把這個效果裝進你的專案

在專案資料夾執行指令,CLI 會加入原始碼與依賴套件,再依下方使用範例引用元件。

npx webberui@latest add "https://webberui.com/r/ai-voice-orb.json?t=<安裝 token>"

還沒有專案,或安裝遇到問題?看快速開始 →

Playground

即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。

220
編輯中的呼叫預設屬性
<AiVoiceOrb/>

完整範例包含預覽的排版與資料。先安裝元件,再把範例檔貼入你的專案。

安裝

npx webberui@latest add "https://webberui.com/r/ai-voice-orb.json?t=<安裝 token>"

或在 components.json 設定 registries 後,改用 @webberui/ai-voice-orb 安裝。

使用

import { AiVoiceOrb } from "@/components/ui/ai-voice-orb";

<AiVoiceOrb state="listening" palette="aurora" size={200} showLabel />

搭配語音辨識或串流回覆時,把辨識與回覆的生命週期映射到 state 即可:

const [state, setState] = React.useState<VoiceOrbState>("idle");
// 開始收音 → setState("listening")
// 等待模型 → setState("thinking")
// 播放回覆 → setState("speaking")

Props

Prop型別預設值說明
state"idle" | "listening" | "thinking" | "speaking""idle"語音球目前狀態,切換時動畫參數平滑過渡
palette"aurora" | "sunset" | "ocean" | "mint""aurora"內建配色主題
colors[string, string, string]—自訂三色漸層(主色、輔色、點綴色),優先於 palette
sizenumber220畫布尺寸(px),光暈與粒子皆繪製在此範圍內
showLabelbooleanfalse是否在球體下方顯示目前狀態文字
labelsPartial<Record<VoiceOrbState, string>>—覆寫各狀態的顯示文字(同時用於 aria-live 播報)
classNamestring—透傳到外層容器

可及性

  • 使用者系統開啟「減少動態效果」時,改渲染靜態漸層圓與狀態文字,完全不啟動 canvas 動畫迴圈
  • canvas 具 role="img" 與描述性 aria-label(例如「AI 語音球:聆聽中」)
  • 狀態變化透過 aria-live="polite" 的 sr-only 區域向螢幕閱讀器播報
  • 元件滾出可視範圍時以 IntersectionObserver 暫停 rAF,回到畫面自動恢復,節省效能與電量