尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证YURA, compagne d'écoute émotionnelle pensée pour le Gabon : conversation en streaming et mode vocal mains libres (Next.js, Gemma 4).
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Tu peux en parler. YURA est une compagne d'écoute émotionnelle pensée pour le Gabon : un espace pour poser ce que l'on ressent, sans jugement et sans compte, à l'écrit ou à voix haute, avec une orientation vers des professionnels quand c'est nécessaire.
En ligne : https://yura-rust.vercel.app
Prototype présenté au Concours Art Numérique · Gabon 2026. YURA ne remplace pas un professionnel de santé. En cas de danger immédiat : 1300.
| Accueil (mobile) | Conversation | Mode vocal |
|---|---|---|
| Accueil (ordinateur) | Professionnels |
|---|---|
| Élément | Choix |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack), React 19, TypeScript strict |
| Modèle de conversation | Gemma 4 26B (gemma-4-26b-a4b-it) via l'API Gemini, réflexion désactivée ; secours automatique sur Gemini 2.5 Flash |
| Voix | Web Speech API (défaut) ou Gemini TTS ; reconnaissance vocale Web Speech (fr-FR) |
| Orbe du mode vocal | Three.js (shader WebGL) |
| Hébergement | Vercel, avec Vercel Web Analytics (sans cookie) |
Aucune base de données : l'historique et le résumé sont stockés dans le navigateur (localStorage).
/api/chat.{"emotion": …}, {"exercice": …}) ne s'affichent jamais, même un instant. Les tirets longs deviennent des virgules.En cas d'échec, aucun message d'erreur n'est sauvegardé : un bouton « Réessayer » apparaît.
Mesures du 27 octobre 2026 sur une conversation simulée de 30 messages (Gemma 4 26B, niveau gratuit).
| Mesure | Résultat |
|---|---|
| Premier mot affiché (médiane) | 1,15 s |
| Premier son (lecture automatique) | ~2,0 s |
| Taille d'une requête (tokens d'entrée) | plafonne vers 2 600 |
| Balises cachées visibles | 0 |
Taille des requêtes avant et après l'allègement du prompt et le résumé :
| Messages dans la conversation | Avant | Après |
|---|---|---|
| 2 | 4 814 | 1 487 |
| 20 | 5 472 | 2 145 |
| 60 | 6 941 | 2 248 |
| Modèle | Requêtes/min | Tokens/min |
|---|---|---|
| Gemma 4 26B | 30 | 16 000 |
| Gemini 2.5 Flash (secours) | 5 | 250 000 |
| Gemini 3.8 Flash TTS | 3 | 10 000 |
Avec ~2 500 tokens par requête, Gemma tient environ 6 messages par minute ; au-delà, la bascule sur Flash prend le relais. Gemini TTS en gratuit est trop limité pour une conversation entière : la voix du navigateur est donc utilisée par défaut.
Prérequis : Node.js 22.18 ou plus récent (24 recommandé, nécessaire pour npm test), et une clé API Gemini (AI Studio).
npm install
Crée un fichier .env.local à la racine (voir .env.example) :
GEMINI_API_KEY=ta_cle_api
Puis :
npm run dev
Ouvre http://localhost:3000.
npm test
44 tests unitaires (Node test runner, sans dépendance) : filtre des balises, découpage en phrases, nettoyage du texte avant lecture, résumé, écho du micro, conversion audio.
| Variable | Obligatoire | Défaut | Rôle |
|---|---|---|---|
GEMINI_API_KEY | oui | Clé de l'API Gemini (conversation, résumé, voix Gemini) | |
LLM_MODEL | non | gemma-4-26b-a4b-it | Modèle de conversation (option : gemma-4-31b-it) |
LLM_FALLBACK_MODEL | non | gemini-2.5-flash | Modèle de secours |
NEXT_PUBLIC_TTS_PROVIDER | non | webspeech | webspeech, auto (Gemini si configuré) ou gemini |
GEMINI_TTS_MODEL | non | Modèle Gemini TTS, ex. gemini-3.8-flash-lite-tts | |
GEMINI_TTS_VOICE | non | Voix Gemini TTS, ex. Vindemiatrix | |
TTS_DAILY_CHAR_LIMIT | non | 15000 | Plafond de caractères lus par jour et par utilisateur |
NEXT_PUBLIC_FEEDBACK_URL | non | Webhook Google Sheets pour l'avis de fin de conversation (voir docs/setup-feedback.md) |
Sur Vercel, seule GEMINI_API_KEY est indispensable : les autres ont des valeurs par défaut.
Le projet est relié à Vercel : chaque push sur main déploie la production.
app/
page.tsx accueil
chat/ conversation
teleconsultation/ page Professionnels
about/, privacy/ À propos, Confidentialité
dev/voices/ comparaison des voix (développement uniquement)
api/chat/ réponse en streaming (Gemma 4 + secours)
api/summary/ résumé des échanges anciens
api/tts/ voix Gemini (un bloc ou streaming)
components/
ChatWindow.tsx interface de conversation
voice/ mode vocal et orbe lumineux
site/ en-tête, pied de page, icônes
lib/
llm/ appel du modèle, filtre des balises, fenêtre et résumé
tts/ lecteur vocal, découpage en phrases, nettoyage du texte
voice/ reconnaissance vocale, filtre d'écho
yuraSystemPrompt.ts personnalité et règles de sécurité de YURA