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