fix: 4 Bugs — STT-Mapping, Speed-Logging, VAD-Logs, Wake-Word-Toast
Bug 2: STT-Result ueberschrieb beide noch unaufgeloeste Audio-Bubbles mit gleichem Text. Fix: nur die ERSTE matchende Bubble aktualisieren (findIndex + index-Update statt map). Reihenfolge ist FIFO weil Whisper sequenziell verarbeitet. Bug 3: Speed-Param wird nun in jedem Hop geloggt: - ChatScreen: "[Chat] sende mit voice=X speed=Y" - aria-bridge: "XTTS-Request gesendet (voice=X, speed=Y.YYx)" - f5tts-bridge: "F5-TTS: N Satz(e), voice=X, speed=Y.YYx" Damit kann man im logcat/docker-logs eindeutig sehen wo speed evtl. verloren geht oder ob die Stimme einfach von Natur aus schnell ist. Bug 4: VAD-Trigger-Reason mit Schwelle: "VAD NNN ms Stille (Schwelle=NNN ms)". Plus startRecording loggt jetzt VAD-Stille + MAX-Recording. Bug 1 (Porcupine): mehr Debug + Toast-Meldungen. - init failure: err.name/code/stack ins Log - start() ohne Porcupine: Toast "Access Key in Settings setzen" - start() Fehler: Toast mit Fehlermeldung - configure(): Toast wenn init scheitert - Erfolgreiches arming: Toast "Lausche auf X" Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -263,15 +263,22 @@ const ChatScreen: React.FC = () => {
|
||||
if (message.type === 'chat') {
|
||||
const sender = (message.payload.sender as string) || '';
|
||||
|
||||
// STT-Ergebnis: Transkribierten Text in die Sprach-Bubble schreiben
|
||||
// STT-Ergebnis: Transkribierten Text in die Sprach-Bubble schreiben.
|
||||
// WICHTIG: Nur die ERSTE noch unaufgeloeste Aufnahme matchen — sonst
|
||||
// wuerde bei zwei kurz hintereinander gesendeten Audios beide Bubbles
|
||||
// den gleichen Text bekommen (Bug: zweite Antwort ueberschreibt erste).
|
||||
if (sender === 'stt') {
|
||||
const sttText = (message.payload.text as string) || '';
|
||||
if (sttText) {
|
||||
setMessages(prev => prev.map(m =>
|
||||
m.sender === 'user' && m.text.includes('Spracheingabe wird verarbeitet')
|
||||
? { ...m, text: `\uD83C\uDFA4 ${sttText}` }
|
||||
: m
|
||||
));
|
||||
setMessages(prev => {
|
||||
const idx = prev.findIndex(m =>
|
||||
m.sender === 'user' && m.text.includes('Spracheingabe wird verarbeitet')
|
||||
);
|
||||
if (idx < 0) return prev;
|
||||
const next = prev.slice();
|
||||
next[idx] = { ...next[idx], text: `\uD83C\uDFA4 ${sttText}` };
|
||||
return next;
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -572,6 +579,8 @@ const ChatScreen: React.FC = () => {
|
||||
};
|
||||
setMessages(prev => capMessages([...prev, userMsg]));
|
||||
|
||||
console.log('[Chat] sende mit voice=%s speed=%s',
|
||||
localXttsVoiceRef.current || '(default)', ttsSpeedRef.current);
|
||||
// An RVS senden — mit geraetelokaler Voice (Bridge nutzt sie fuer die Antwort)
|
||||
rvs.send('chat', {
|
||||
text,
|
||||
|
||||
Reference in New Issue
Block a user