คอมโพเนนต์เดียว ได้พนักงานต้อนรับที่มีชีวิต
@khaveeai/react เรนเดอร์อวตาร VRM พร้อมท่าทางยามว่าง lip-sync และท่าทางประกอบ แล้วเปิดบทสนทนาให้ใช้ผ่าน hooks เชื่อม realtime provider ตัวไหนก็ได้ เว็บไซต์นี้ทั้งเว็บสร้างจากมัน
สามขั้นตอนสู่อวตารที่พูดได้
ครอบแอปของคุณ
KhaveeProvider เก็บสถานะของอวตาร: อินสแตนซ์ VRM สีหน้า แอนิเมชันปัจจุบัน และสถานะการสนทนา
เรนเดอร์อวตาร
วาง VRMAvatar ใน Canvas ของ react-three-fiber ส่งไฟล์ .vrm และแมปของคลิปแอนิเมชันเข้าไป
เชื่อมต่อ provider
ส่ง RealtimeProvider เข้าไปใน config แล้ว useRealtime() จะให้ connect, sendMessage, บทสนทนา และสถานะสด
โค้ดด้านล่างคือสิ่งที่เรนเดอร์น้องกวีบนหน้านี้ ต่างกันแค่มุมกล้อง
import { KhaveeProvider, VRMAvatar, useRealtime } from '@khaveeai/react'
import { Canvas } from '@react-three/fiber'
export function Reception({ provider }) {
return (
<KhaveeProvider config={{ realtime: provider }}>
<Canvas camera={{ position: [0, 1.3, 3], fov: 30 }}>
<VRMAvatar
src="/models/nongkhavee.vrm"
animations={{ base: '/animations/idle.fbx', talk_1: '/animations/talk.fbx' }}
/>
</Canvas>
<Desk />
</KhaveeProvider>
)
}
function Desk() {
const { connect, sendMessage, chatStatus } = useRealtime()
return <button onClick={connect}>{chatStatus}</button>
}
// Swap the brain, keep the JSX.
import { OpenAIRealtimeProvider } from '@khaveeai/providers-openai-realtime'
const provider = new OpenAIRealtimeProvider({
useProxy: true,
proxyEndpoint: 'https://api.platform.khavee.ai/api/v1/projects/PROJECT_ID/chat/token',
voice: 'coral',
language: 'th',
})
แพ็กเกจเล็ก ๆ อินเทอร์เฟซเดียว
@khaveeai/react
VRMAvatar, GLBAvatar, KhaveeProvider, useRealtime, useVRMExpressions, useAnimations, AvatarPostFX, ShadowFloor
@khaveeai/core
อินเทอร์เฟซ RealtimeProvider และ pipeline, tool calling ที่ไม่ผูกกับผู้ให้บริการ, ชนิดข้อมูลโปรเจกต์จากแพลตฟอร์ม
@khaveeai/providers-openai-realtime
เสียงสองทางผ่าน WebRTC พร้อม lip-sync และ tool call อัตโนมัติ มี token proxy ให้คีย์อยู่ฝั่งเซิร์ฟเวอร์
@khaveeai/providers-mock
คลาส LLM และ TTS จำลองสำหรับเทสต์และเดโม ไม่ต้องใช้คีย์ ไม่ต้องต่อเน็ต
UI ของคุณไม่ต้องรู้เลยว่าใครเป็นคนพูด
ทุกอย่างเหนือเส้น provider ขึ้นกับอินเทอร์เฟซ RealtimeProvider เท่านั้น สลับ OpenAI Realtime API เป็น pipeline STT, LLM, TTS ที่ประกอบเอง หรือเป็น provider แบบสคริปต์อย่างที่รันอยู่บนหน้านี้ JSX ก็ยังเหมือนเดิม
แอปของคุณ
UI แชท เชลล์คีออสก์ หน้าจองคิว
@khaveeai/react
VRMAvatar · KhaveeProvider · useRealtime
อินเทอร์เฟซ RealtimeProvider
connect · sendMessage · chatStatus · getAudioAnalyser
Providers
OpenAI Realtime · Generic STT/LLM/TTS · Scripted (หน้านี้)
ส่วนที่คุณไม่อยากเขียนซ้ำสองรอบ
รีทาร์เก็ต Mixamo
วางคลิป FBX จาก Mixamo ลงในแมป animations กระดูกจะถูกแมปเข้ากับ humanoid ของ VRM ให้อัตโนมัติ
คลิปตามสถานะ
ตั้งชื่อคลิปว่า talk, think, listen หรือ greet แล้วมันจะเล่นตามสถานะการสนทนานั้น พร้อม crossfade ที่รู้จักท่าทาง
ชีวิตยามว่าง
การหายใจ การถ่ายน้ำหนัก การกะพริบตา สีหน้าที่เปลี่ยนเบา ๆ และการมองตามกล้อง ทั้งหมดเป็น procedural
Lip-sync
วิเคราะห์หน่วยเสียงแบบ MFCC จากเสียงของ provider แล้วแมปเป็นรูปปาก aa, ih, ou, ee, oh
Tool calling
ลงทะเบียนฟังก์ชันครั้งเดียว provider แต่ละตัวแปลงรูปแบบของตัวเองให้เป็น ToolCall กลางแบบเดียว
คุณภาพการเรนเดอร์
เงา anisotropy tone mapping และ bloom + SMAA แบบเลือกเปิดได้ ปรับจูนมาสำหรับวัสดุ MToon
ส่งมอบพนักงานต้อนรับได้ในสปรินต์นี้
รับ API key จากแพลตฟอร์ม ติดตั้งแพ็กเกจ แล้วใช้ VRM ของคุณเองหรือของเราก็ได้