翻译预算分配修复+genfail诊断:录音中1B重试预算降到1次(两次尝试~30s),给兜底留出时间窗——现场15s×3吃满45s预算致TAP-FALLBACK skipped=budget;TRANSLATE single/batch empty 诊断日志(原始输出头48字,区分模型白卷与输出被清洗成空)

This commit is contained in:
liwenhao2 2026-09-16 10:52:54 +08:00
parent 290e4b205b
commit 0b731978ef
1 changed files with 17 additions and 4 deletions

View File

@ -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", " ") ?: "<null>"))
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", " ") ?: "<null>"))
return null
}
}
val res = HashMap<String, String>()
for ((key, _) in items) {