diff --git a/app/src/main/java/com/k2fsa/sherpa/onnx/MainActivity.kt b/app/src/main/java/com/k2fsa/sherpa/onnx/MainActivity.kt index 486ac57..0ff9b25 100644 --- a/app/src/main/java/com/k2fsa/sherpa/onnx/MainActivity.kt +++ b/app/src/main/java/com/k2fsa/sherpa/onnx/MainActivity.kt @@ -2251,6 +2251,9 @@ class MainActivity : AppCompatActivity() { ): String? { var temp = 0f var genRetry = 0 + // 重试预算:录音中只允许 1 次(两次尝试≈30s),给兜底留出时间窗—— + // 现场:三次尝试 15s×3 吃满 45s 预算,兜底被 skipped=budget 拒之门外 + val maxGenRetry = if (isRecording) 1 else 2 var ctx = context var lastRej = "" while (true) { @@ -2285,7 +2288,7 @@ class MainActivity : AppCompatActivity() { Log.i(TAG, "TAP-MISS sid=$sid reason=" + (if (raw != null) "repeat" else "genfail") + " temp=$temp" + srcTag) - if (genRetry >= 2) return null + if (genRetry >= maxGenRetry) return null genRetry++; temp = if (temp == 0f) 0.3f else 0.7f if (genRetry >= 2) ctx = "" } @@ -2294,7 +2297,7 @@ class MainActivity : AppCompatActivity() { Log.i(TAG, "TAP-MISS sid=$sid reason=echo temp=$temp" + srcTag) if (es == lastRej) return null // 复读成惯性,换温度无用 lastRej = es - if (genRetry >= 2) return null + if (genRetry >= maxGenRetry) return null genRetry++; temp = if (temp == 0f) 0.3f else 0.7f if (genRetry >= 2) ctx = "" } @@ -2488,7 +2491,13 @@ class MainActivity : AppCompatActivity() { } val tr = cleanTrans(one, segKeys[0].second) if (!tr.isNullOrEmpty()) got[segKeys[0].first] = tr - if (got.isEmpty()) return null + if (got.isEmpty()) { + // 空手而归的诊断(2026-09-16):区分「模型白卷」与「输出被清洗成空 + // (只有标签/残片)」——genfail 现场的两种死法原来看不出 + Log.w(TAG, "TRANSLATE single empty raw=" + + (one?.take(48)?.replace("\n", " ") ?: "")) + return null + } } else { val numbered = segKeys.mapIndexed { i, st -> (i + 1).toString() + ". " + st.second @@ -2544,7 +2553,11 @@ class MainActivity : AppCompatActivity() { cleanTrans(one, st.second)?.let { got[st.first] = it } } } - if (got.isEmpty()) return null + if (got.isEmpty()) { + Log.w(TAG, "TRANSLATE batch empty out=" + + (out?.take(48)?.replace("\n", " ") ?: "")) + return null + } } val res = HashMap() for ((key, _) in items) {