diff --git a/android/android/app/src/main/java/com/ariacockpit/PcmStreamPlayerModule.kt b/android/android/app/src/main/java/com/ariacockpit/PcmStreamPlayerModule.kt index 2815667..1ae7538 100644 --- a/android/android/app/src/main/java/com/ariacockpit/PcmStreamPlayerModule.kt +++ b/android/android/app/src/main/java/com/ariacockpit/PcmStreamPlayerModule.kt @@ -32,7 +32,10 @@ class PcmStreamPlayerModule(reactContext: ReactApplicationContext) : ReactContex private const val TAG = "PcmStreamPlayer" // Fallback wenn JS keinen Wert uebergibt. private const val DEFAULT_PREROLL_SECONDS = 3.5 - private const val MIN_PREROLL_SECONDS = 0.5 + // 0.0 = sofortige Wiedergabe — play() direkt beim ersten Chunk. + // Macht Sinn fuer F5-TTS weil Render so schnell ist dass ein Puffer + // unnoetig ist und bei kurzen Saetzen sogar stoeren kann. + private const val MIN_PREROLL_SECONDS = 0.0 private const val MAX_PREROLL_SECONDS = 10.0 // Stille am Stream-Anfang, damit AudioTrack sauber anfaehrt und die // ersten Samples nicht abgeschnitten werden (XTTS-Warmup + play()-Latenz). @@ -59,9 +62,12 @@ class PcmStreamPlayerModule(reactContext: ReactApplicationContext) : ReactContex // Alte Session beenden falls vorhanden stopInternal() - val prerollSec = prerollSeconds - .coerceIn(MIN_PREROLL_SECONDS, MAX_PREROLL_SECONDS) - .let { if (it.isFinite() && it > 0) it else DEFAULT_PREROLL_SECONDS } + // Nur NaN/Inf → Default. 0.0 ist gueltig (= sofortige Wiedergabe). + val prerollSec = if (prerollSeconds.isFinite() && prerollSeconds >= 0.0) { + prerollSeconds.coerceIn(MIN_PREROLL_SECONDS, MAX_PREROLL_SECONDS) + } else { + DEFAULT_PREROLL_SECONDS + } val channelConfig = if (channels == 2) AudioFormat.CHANNEL_OUT_STEREO else AudioFormat.CHANNEL_OUT_MONO val encoding = AudioFormat.ENCODING_PCM_16BIT diff --git a/android/src/services/audio.ts b/android/src/services/audio.ts index 49cdc98..a82670c 100644 --- a/android/src/services/audio.ts +++ b/android/src/services/audio.ts @@ -143,7 +143,7 @@ const MAX_RECORDING_MS = 120000; // Pre-Roll: Wie lange Audio im AudioTrack-Buffer liegt bevor play() startet. // Einstellbar via Diagnostic/Settings (Key: aria_tts_preroll_sec). export const TTS_PREROLL_DEFAULT_SEC = 3.5; -export const TTS_PREROLL_MIN_SEC = 1.0; +export const TTS_PREROLL_MIN_SEC = 0; // 0 = sofort abspielen (F5-TTS ist schnell genug) export const TTS_PREROLL_MAX_SEC = 6.0; export const TTS_PREROLL_STORAGE_KEY = 'aria_tts_preroll_sec';