Abmacode12 commited on
Commit
db0f6a7
·
verified ·
1 Parent(s): b169af1

quand je dis bonjour il se mets sur la troisieme colonne normalement le chat ia reste sur la deuxieme colonne s'il te plait peut tu rectifier sa et je voudrais aussi que le micro fonctionne s'il te plait que tout soit fonctionnel merci

Browse files
Files changed (2) hide show
  1. rosalinda.html +35 -9
  2. style.css +6 -1
rosalinda.html CHANGED
@@ -55,11 +55,11 @@
55
  let lastAIText = "";
56
 
57
  function addMsg(text, who){
58
- const div = document.createElement("div");
59
- div.className = `msg max-w-[85%] p-3 rounded-xl border ${who === "me" ?
60
  "ml-auto bg-blue-900/10 border-blue-800/50" :
61
- "bg-gray-700/50 border-gray-700"}`;
62
- div.textContent = text;
63
  msgs.appendChild(div);
64
  msgs.scrollTop = msgs.scrollHeight;
65
  }
@@ -115,7 +115,6 @@
115
  r.continuous = false;
116
  return r;
117
  }
118
-
119
  rec = setupSTT();
120
 
121
  micBtn.onclick = async () => {
@@ -123,37 +122,64 @@
123
  alert("Reconnaissance vocale non disponible ici. Essaie Chrome/Edge.");
124
  return;
125
  }
126
- if (listening) return;
 
 
 
 
 
 
127
 
128
  listening = true;
129
  statusEl.textContent = "Micro: écoute…";
 
130
  let finalText = "";
 
131
 
132
  rec.onresult = (e) => {
 
133
  let transcript = "";
134
  for (let i = e.resultIndex; i < e.results.length; i++){
135
  transcript += e.results[i][0].transcript;
136
  if (e.results[i].isFinal) finalText += e.results[i][0].transcript + " ";
137
  }
138
  inp.value = (finalText || transcript).trim();
 
 
 
 
 
 
 
139
  };
140
 
141
- rec.onerror = () => {
 
142
  listening = false;
143
  statusEl.textContent = "Micro: erreur";
 
144
  };
145
 
146
  rec.onend = () => {
147
  listening = false;
148
  statusEl.textContent = "Micro: prêt";
 
149
  if (inp.value.trim()) handleSend(inp.value);
150
  };
151
 
152
- try { rec.start(); } catch (e) {
 
 
 
 
 
 
 
153
  listening = false;
154
  statusEl.textContent = "Micro: prêt";
 
155
  }
156
- };
157
 
158
  addMsg("Bonjour 👋 Je suis Rosalinda. Clique 🎤 pour parler ou écris-moi.", "ai");
159
  </script>
 
55
  let lastAIText = "";
56
 
57
  function addMsg(text, who){
58
+ const div = document.createElement("div");
59
+ div.className = `msg ${who === "me" ?
60
  "ml-auto bg-blue-900/10 border-blue-800/50" :
61
+ "bg-gray-700/50 border-gray-700"} max-w-[80%] p-3 rounded-xl border`;
62
+ div.textContent = text;
63
  msgs.appendChild(div);
64
  msgs.scrollTop = msgs.scrollHeight;
65
  }
 
115
  r.continuous = false;
116
  return r;
117
  }
 
118
  rec = setupSTT();
119
 
120
  micBtn.onclick = async () => {
 
122
  alert("Reconnaissance vocale non disponible ici. Essaie Chrome/Edge.");
123
  return;
124
  }
125
+ if (listening) {
126
+ rec.stop();
127
+ listening = false;
128
+ statusEl.textContent = "Micro: prêt";
129
+ micBtn.classList.remove("listening");
130
+ return;
131
+ }
132
 
133
  listening = true;
134
  statusEl.textContent = "Micro: écoute…";
135
+ micBtn.classList.add("listening");
136
  let finalText = "";
137
+ let timeoutId;
138
 
139
  rec.onresult = (e) => {
140
+ clearTimeout(timeoutId);
141
  let transcript = "";
142
  for (let i = e.resultIndex; i < e.results.length; i++){
143
  transcript += e.results[i][0].transcript;
144
  if (e.results[i].isFinal) finalText += e.results[i][0].transcript + " ";
145
  }
146
  inp.value = (finalText || transcript).trim();
147
+
148
+ // Reset timeout on new results
149
+ timeoutId = setTimeout(() => {
150
+ if (listening) {
151
+ rec.stop();
152
+ }
153
+ }, 2000);
154
  };
155
 
156
+ rec.onerror = (e) => {
157
+ console.error("Speech recognition error", e);
158
  listening = false;
159
  statusEl.textContent = "Micro: erreur";
160
+ micBtn.classList.remove("listening");
161
  };
162
 
163
  rec.onend = () => {
164
  listening = false;
165
  statusEl.textContent = "Micro: prêt";
166
+ micBtn.classList.remove("listening");
167
  if (inp.value.trim()) handleSend(inp.value);
168
  };
169
 
170
+ try {
171
+ rec.start();
172
+ // Auto-stop after 8 seconds if no speech detected
173
+ setTimeout(() => {
174
+ if (listening) rec.stop();
175
+ }, 8000);
176
+ } catch (e) {
177
+ console.error("Speech recognition start error", e);
178
  listening = false;
179
  statusEl.textContent = "Micro: prêt";
180
+ micBtn.classList.remove("listening");
181
  }
182
+ };
183
 
184
  addMsg("Bonjour 👋 Je suis Rosalinda. Clique 🎤 pour parler ou écris-moi.", "ai");
185
  </script>
style.css CHANGED
@@ -107,8 +107,13 @@ input:focus, button:focus {
107
  opacity: 0.8;
108
  }
109
  }
110
-
111
  .listening {
112
  animation: pulse 1.5s infinite;
113
  background-color: rgba(239, 68, 68, 0.2) !important;
 
 
 
 
 
 
114
  }
 
107
  opacity: 0.8;
108
  }
109
  }
 
110
  .listening {
111
  animation: pulse 1.5s infinite;
112
  background-color: rgba(239, 68, 68, 0.2) !important;
113
+ border-color: rgba(239, 68, 68, 0.5) !important;
114
+ }
115
+
116
+ .msg {
117
+ word-break: break-word;
118
+ white-space: pre-wrap;
119
  }