mirror of
https://github.com/R0m1k3/EveFlow.git
synced 2026-10-11 17:29:03 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cf52a610d4 | ||
|
|
3a52cf3ae0 | ||
|
|
5c6c3a9e30 | ||
|
|
6955721bdb |
No files matched your search
@@ -1,7 +1,7 @@
|
||||
# 🚀 EveFlow — Compagnon de Bureau Rétro-Futuriste 3D
|
||||
|
||||
[](https://github.com/R0m1k3/EveFlow)
|
||||
[](https://github.com/R0m1k3/EveFlow/releases/tag/v1.0.4)
|
||||
[](https://github.com/R0m1k3/EveFlow/releases/tag/v1.0.6)
|
||||
[](LICENSE)
|
||||
|
||||
**EveFlow** est un compagnon de bureau Windows immersif haut de gamme, combinant une esthétique cyberpunk rétro-futuriste soignée et des technologies d'intelligence artificielle avancées. Il intègre un assistant virtuel en 3D nommé **Eve**, animé en temps réel avec des expressions émotionnelles dynamiques et synchronisé avec des services de synthèse vocale (TTS/STT) locaux et des architectures multi-agents.
|
||||
@@ -74,7 +74,7 @@ Pour générer l'exécutable d'installation Windows (`.exe`) autonome :
|
||||
```bash
|
||||
npm run dist
|
||||
```
|
||||
*L'exécutable d'installation NSIS (`EveFlow Setup 1.0.4.exe`) et la build décompressée seront générés dans le dossier `./out/`.*
|
||||
*L'exécutable d'installation NSIS (`EveFlow Setup 1.0.6.exe`) et la build décompressée seront générés dans le dossier `./out/`.*
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -267,6 +267,14 @@ app.whenReady().then(() => {
|
||||
}
|
||||
);
|
||||
|
||||
// Autoriser l'accès aux périphériques de capture (microphone) sous Electron
|
||||
session.defaultSession.setPermissionRequestHandler((webContents, permission, callback) => {
|
||||
if (permission === 'media') {
|
||||
return callback(true);
|
||||
}
|
||||
callback(false);
|
||||
});
|
||||
|
||||
startWebhookServer();
|
||||
createWindow();
|
||||
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "eveflow",
|
||||
"version": "1.0.4",
|
||||
"version": "1.0.6",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "eveflow",
|
||||
"version": "1.0.4",
|
||||
"version": "1.0.6",
|
||||
"dependencies": {
|
||||
"@react-three/drei": "^9.105.0",
|
||||
"@react-three/fiber": "^8.16.0",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "eveflow",
|
||||
"version": "1.0.4",
|
||||
"version": "1.0.6",
|
||||
"description": "Retro-futuristic Windows companion with 3D Eve bot, local TTS/STT, and multi-agent connectivity",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
|
||||
+18
-3
@@ -898,7 +898,7 @@ export const App: React.FC = () => {
|
||||
const [sttProvider, setSttProvider] = useState<'browser' | 'qwen3-asr'>('browser');
|
||||
const [sttApiUrl, setSttApiUrl] = useState<string>('http://127.0.0.1:8000/v1');
|
||||
const [sttApiKey, setSttApiKey] = useState<string>('');
|
||||
const [sttModel, setSttModel] = useState<string>('qwen3-asr');
|
||||
const [sttModel, setSttModel] = useState<string>('Qwen/Qwen3-ASR-0.6B');
|
||||
|
||||
const [ttsApiUrl, setTtsApiUrl] = useState<string>('http://127.0.0.1:8000/v1');
|
||||
const [ttsApiKey, setTtsApiKey] = useState<string>('');
|
||||
@@ -1187,7 +1187,14 @@ export const App: React.FC = () => {
|
||||
if (val) setSttApiKey(val);
|
||||
});
|
||||
persistRead('eveflow_stt_model').then(val => {
|
||||
if (val) setSttModel(val);
|
||||
if (val) {
|
||||
if (val === 'qwen3-asr') {
|
||||
setSttModel('Qwen/Qwen3-ASR-0.6B');
|
||||
persistWrite('eveflow_stt_model', 'Qwen/Qwen3-ASR-0.6B');
|
||||
} else {
|
||||
setSttModel(val);
|
||||
}
|
||||
}
|
||||
});
|
||||
persistRead('eveflow_tts_api_url').then(val => {
|
||||
if (val) setTtsApiUrl(val);
|
||||
@@ -1606,12 +1613,18 @@ export const App: React.FC = () => {
|
||||
const handleStartVocalRecord = () => {
|
||||
if (!audioServiceRef.current) return;
|
||||
|
||||
setErrorMessage(null);
|
||||
audioServiceRef.current.stopSpeaking();
|
||||
setIsSpeaking(false);
|
||||
|
||||
audioServiceRef.current.startListening(
|
||||
(text) => {
|
||||
handleSendMessage(text);
|
||||
if (text.trim()) {
|
||||
handleSendMessage(text);
|
||||
} else {
|
||||
setErrorMessage("Aucune parole n'a été détectée. Veuillez parler distinctement près du micro.");
|
||||
setCurrentEmotion('sad');
|
||||
}
|
||||
},
|
||||
() => {
|
||||
setIsListening(true);
|
||||
@@ -1622,6 +1635,8 @@ export const App: React.FC = () => {
|
||||
},
|
||||
(err) => {
|
||||
setIsListening(false);
|
||||
setErrorMessage(`Erreur de reconnaissance vocale : ${err}`);
|
||||
setCurrentEmotion('sad');
|
||||
console.error(err);
|
||||
},
|
||||
sttLang
|
||||
|
||||
@@ -63,7 +63,7 @@ export class AudioService {
|
||||
private sttProvider: 'browser' | 'qwen3-asr' = 'browser';
|
||||
private sttApiUrl = 'http://127.0.0.1:8000/v1';
|
||||
private sttApiKey = '';
|
||||
private sttModel = 'qwen3-asr';
|
||||
private sttModel = 'Qwen/Qwen3-ASR-0.6B';
|
||||
private mediaRecorder: MediaRecorder | null = null;
|
||||
private audioChunks: Blob[] = [];
|
||||
|
||||
|
||||
Reference in new issue
Block a user