尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗An animatable SVG character written in TypeScript. In light mode it's a fluffy Samoyed wearing the colours of Samogitia (Žemaitija). In dark mode it becomes a storm-lit pagan warrior of Perkūnas (in Samogitia also called Dundulis). It moves its mouth in sync whenever a translator plays audio.
| Light mode, friendly | Dark mode, warrior |
|---|---|
Live demo: bonsaivaras.github.io/zemaitukas.
speak(text, { lang }): browser text-to-speech (Web Speech API)attachAudio(audioEl): any <audio> or <video> element, such as a translation service's outputattachStream(mediaStream): live audio, such as a WebRTC call or a microphonesetMouthOpen(0..1): drive the mouth yourself, for example from viseme dataimport { SamogitianSamoyed, LINES } from './src/samogitian-samoyed';
const dog = new SamogitianSamoyed(document.getElementById('stage')!, {
theme: 'auto', // follows <html data-theme>, <html class="dark"> and prefers-color-scheme
onSpeakStart: (text) => console.log(text),
});
dog.speak(LINES[dog.getMode()].lt, { lang: 'lt-LT' }); // Lithuanian
dog.attachAudio(document.querySelector('audio')!); // translator audio
dog.setTheme('dark'); // force warrior mode
| Method | What it does |
|---|---|
getMode() / setMode('friendly' | 'warrior') | Read or force the mode |
setTheme('auto' | 'light' | 'dark') | Theme source. Light gives friendly, dark gives warrior |
speak(text?, { lang, rate, pitch, voice }) | Speak with TTS and lip-sync. Returns a Promise |
stopSpeaking() | Cancel TTS |
attachAudio(el) / attachStream(stream, { monitor }) / detachAudio() | Lip-sync to audio |
setMouthOpen(v | null) | Manual mouth control. null releases it |
destroy() | Stop everything and remove the SVG |
crossOrigin="anonymous" on the media element. Without them the analyser hears silence.speak() or attachAudio() from a click or tap.npm install
npm run build # type-check, then bundle into dist/index.html
npm run preview # build and serve dist/
On every push to main, the included workflow (.github/workflows/pages.yml) builds the demo and publishes it to GitHub Pages. To turn it on, go to Settings → Pages → Source: GitHub Actions.
prompts/gemini-implementation-brief.md is a complete brief you can give Gemini, or any other coding model. It covers the rules, the spec, 15 known pitfalls, an acceptance checklist, and the full reference source.
MIT © Aivaras Bonckus