stt(dump): сырой WAV всего потока микрофона (до усиления/VAD) — что реально слышат очки
This commit is contained in:
@@ -87,9 +87,14 @@ class SttMicStream(
|
||||
val n = recorder.read(frame, 0, VAD_FRAME_SIZE) // кадры
|
||||
if (n <= 0) continue
|
||||
val data = if (n == VAD_FRAME_SIZE) frame else frame.copyOf(n)
|
||||
// СЫРОЙ дамп: весь поток микрофона (до усиления/VAD) — что реально слышат очки.
|
||||
if (dumpWriter != null) {
|
||||
runCatching { dumpWriter.write(shortsToPcm16(listOf(data))) }
|
||||
.onFailure { log("stt", "dump микрофона: ${it.message}") }
|
||||
}
|
||||
// VAD на СЫРОМ фрейме: WebRTC VAD рассчитан на нормальный уровень
|
||||
// (-21 dBFS у ARGT78 — ок), усиление ×10 клиппует и ломает детекцию.
|
||||
// Усиленный фрейм — только в сегмент (для whisper и дампа).
|
||||
// Усиленный фрейм — только в сегмент (для whisper).
|
||||
val boosted = gainShort(data)
|
||||
if (vad.isSpeech(data)) {
|
||||
if (!speeching) {
|
||||
@@ -138,10 +143,6 @@ class SttMicStream(
|
||||
private suspend fun closeSegment(segment: List<ShortArray>, dumpWriter: WavWriter?) {
|
||||
if (segment.isEmpty()) return
|
||||
val pcm = shortsToPcm16(segment)
|
||||
if (dumpWriter != null) {
|
||||
runCatching { dumpWriter.write(pcm) }
|
||||
.onFailure { log("stt", "dump микрофона: ${it.message}") }
|
||||
}
|
||||
log("stt", "🔇 сегмент речи: ${segment.size * VAD_FRAME_SIZE / 16} мс → на телефон")
|
||||
onChunk(pcm)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user