← Docs hub

SoundFlow 음성 연속성 패치 기술 리뷰

문제

원인

1. 재생·녹음 시간 비교의 스냅샷 불일치

재생 시각과 녹음 시각을 서로 다른 순간에 읽어 비교하면 커널 jiffies 증가 경계에서 두 값의 기준 시점이 달라질 수 있습니다. 이때 부족하다고 판단한 64샘플을 0으로 채우고, 반대로 다음 구간에서 source 샘플이 건너뛰어질 수 있습니다.

2. 큐 overflow 시 전체 삭제

16 kHz에서 1,024샘플 버퍼는 64 ms입니다. 큐가 4개로 제한된 상태에서 overflow가 발생하면 기존 clear()가 누적 버퍼를 모두 삭제해 최대 약 320 ms 손실을 만들 수 있습니다.

해결 접근 방안

  1. sndflow.c에서 재생·녹음 시간 차이를 계산하기 전에 jiffies를 한 번만 읽어 동일 스냅샷을 사용합니다.
  2. SoundFlowInput.cpp에서 overflow 시 전체 clear() 대신 가장 오래된 버퍼 하나만 pop_front()합니다.
  3. overflow 로그는 mutex 보호 구간 밖에서 제한적으로 출력해 오디오 처리 잠금 시간을 늘리지 않습니다.
  4. 근본적인 producer/consumer 지연은 별도 장시간 캡처와 KWS/STT 발화셋으로 추가 검증합니다.

패치 적용 결과

패치 파일 명

적용 패치

빌드 산출물

관련 하위 문서

문서 내용
실기기 A/B 검증 원본·패치 설치, 재부팅, 7-stream 캡처와 로그 증거
음성 손상 원인 분석 4 ms 삽입, 320 ms 삭제, HAL/큐 경로 분석
Kardome 튜닝 런북 v1.1.17, KWS/STT 튜닝 파라미터와 시험 기준

Keyboard shortcuts

⌘K / Ctrl+KOpen command palette
/Focus search
g hGo to home
g pGo to projects
g sGo to sessions
j / kNext / prev row (tables)
?Show this help
EscClose dialogs

Structured queries

Mix key:value filters with free text in the palette:

type:sessionOnly session pages
project:llm-wikiFilter by project name (substring)
model:claudeFilter by model name (substring)
date:>2026-03-01Sessions after a date
date:<2026-04-01Sessions before a date
tags:rustPages mentioning a tag/topic
sort:dateSort results by date (newest first)

Example: type:session project:llm-wiki date:>2026-04 sort:date