尚未检测到更新。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