feat: TTS-Zeitbereiche + Diagnostic-Debug-Toggle + Play-Button respektiert Engine
TTS-Cleanup erweitert: - Zeitbereiche: '8:00-9:00 Uhr' / '8-9 Uhr' → 'acht bis neun Uhr' - Uhrzeiten: '8:30 Uhr' → 'acht Uhr dreissig', '15 Uhr' → 'fuenfzehn Uhr' - Kleine Zahlen-Bereiche: '5-6' → 'fuenf bis sechs' (nur ≤24) - Zahlen 0-59 als deutsche Woerter (inkl. 'einundzwanzig', 'fuenfundvierzig') Diagnostic: TTS-Debug Einblenden - Checkbox 'TTS-Text einblenden' in der Chat-Test Kopfzeile - Unter ARIA-Nachrichten erscheint die aufbereitete Variante (blauer Border + Label 'TTS:') - Nur in Diagnostic, nicht in der App - LocalStorage persistiert den Toggle-Zustand - Minimaler JS-Port von clean_text_for_tts als Fallback Play-Button respektiert Engine: - Bridge: tts_request nutzt jetzt die aktive TTS-Engine (Piper/XTTS), Text wird durch clean_text_for_tts aufbereitet - messageId wird vom Play-Button mitgeschickt → Bridge verknuepft generiertes Audio mit der urspruenglichen Message - XTTS-Chunks: requestId → messageId Map (LRU 100 Eintraege), beim xtts_response wird die Basis-UUID extrahiert und die messageId dem audio-Frame angehaengt - App cached auch XTTS-Audio jetzt (letzter Satz pro Message — echte Chunk-Konkatenation bleibt TODO) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -636,7 +636,7 @@ const ChatScreen: React.FC = () => {
|
||||
{item.text}
|
||||
</Text>
|
||||
)}
|
||||
{/* Play-Button fuer ARIA-Nachrichten — Cache bevorzugt, sonst Regenerierung */}
|
||||
{/* Play-Button fuer ARIA-Nachrichten — Cache bevorzugt, sonst Bridge-TTS mit aktueller Engine */}
|
||||
{!isUser && item.text.length > 0 && (
|
||||
<TouchableOpacity
|
||||
style={styles.playButton}
|
||||
@@ -644,11 +644,17 @@ const ChatScreen: React.FC = () => {
|
||||
if (item.audioPath) {
|
||||
audioService.playFromPath(item.audioPath);
|
||||
} else {
|
||||
rvs.send('tts_request' as any, { text: item.text, voice: '' });
|
||||
// messageId mitschicken damit die Bridge das generierte Audio
|
||||
// wieder mit der Nachricht verknuepft (fuer den naechsten Replay aus Cache)
|
||||
rvs.send('tts_request' as any, {
|
||||
text: item.text,
|
||||
voice: '',
|
||||
messageId: item.messageId || '',
|
||||
});
|
||||
}
|
||||
}}
|
||||
>
|
||||
<Text style={styles.playButtonText}>{item.audioPath ? '\uD83D\uDD0A' : '\uD83D\uDD0A'}</Text>
|
||||
<Text style={styles.playButtonText}>{'\uD83D\uDD0A'}</Text>
|
||||
</TouchableOpacity>
|
||||
)}
|
||||
<Text style={styles.timestamp}>{time}</Text>
|
||||
|
||||
Reference in New Issue
Block a user