PPI-1297 · 구현 완료 · 2026-09-14

소리는 그대로,
쓰지 않는 분석 작업은 덜어냅니다.

마지막 업데이트 2026-09-14

MFCC라는 ‘목소리 패턴 검사기’와 그 기록 경로를 제거해,
AI 음성을 처리할 자원에 여유를 만듭니다.

기준 커밋 e3270372 · 기계음 감지는 유지 · 세션 로그의 MFCC 열도 제거

확인된 것은 작업의 제거입니다. CPU 몇 % 절감, 실제 메모리 절감량, iPad 발화 밀림 개선률은 아직 측정하지 않았습니다.
한눈에 보는 전후

같은 소리에서 갈라지던 분석 가지 하나를 제거

이전 · MFCC가 켜진 세션

AI 오디오 스트림
재생 · STT · 모니터 송출기존 목적에 따라 사용하는 공용 입력
기계음 감지별도 AudioContext → Analyser
MFCC 패턴 검사 제거 대상별도 AudioContext → ScriptProcessor → 특징 계산

이후 · MFCC 기능 제거

동일한 AI 오디오 스트림
재생 · STT · 모니터 송출 유지이 변경에서 공용 스트림을 없애지 않음
기계음 감지 유지독립 분석 · 기계음 자동 중단 유지
MFCC 가지 없음계산 · 자동 중단 · 신규 로그 수집 종료

실제 재생은 MFCC 검사를 통과한 뒤 시작하는 구조가 아닙니다. 검사 작업이 쓰던 자원을 줄이는 변화입니다.

게스트가 덜 하는 일

오디오 자원
Context −1

전용 처리 가지 제거

MFCC용 입력 노드와 ScriptProcessor도 사라집니다. 기계음 감지용 Context는 남습니다.

CPU
패턴 계산 종료

소리마다 지문을 만들지 않음

16kHz 변환·MFCC 추출·템플릿 비교·오디오 콜백을 없앴습니다.

메모리
버퍼 · 상태 제거

계산용 임시 데이터 감소

샘플 버퍼·분석 배열·매칭 상태와 로그 턴 종료 추적용 ID 집합이 없어졌습니다.

위 분석 자원 절감은 변경 전에 MFCC 분석기가 실행되던 경우 기준입니다. Context 1개는 고정된 CPU %나 메모리 용량을 뜻하지 않습니다.

기록을 나르고 쌓는 일도 줄었습니다

이 경로 전체를 제거했습니다. 기존 S3 파일은 그대로 있으므로, 이미 차지한 저장 공간을 회수한 것은 아닙니다.

내 세션에서는?

원래 켜져 있었는지에 따라 다릅니다

두 감지기의 Context만 비교
2 → 1
MFCC 분석용 Context 1개 감소

MFCC 계산과 기계음 감지가 함께 켜져 있었다면, 기계음 감지만 남습니다.

Realtime 예시는 기계음 감지 ON을 가정합니다. 전체 앱의 AudioContext 개수는 아닙니다. MFCC가 이미 OFF여도 별도로 보내던 MFCC 로그 경로의 정리 효과는 있습니다.

더 확인하고 싶다면

iPad 발화 밀림도 해결됐나요?

아직 그렇게 말할 근거는 없습니다. 실행 중이던 분석 작업을 없애 처리 여유를 늘릴 수는 있지만, 해당 작업이 밀림의 원인이었는지와 개선 폭은 실기기 비교가 필요합니다.

이전 코드도 LiveKit에서는 MFCC를 실행하지 않았습니다. 따라서 LiveKit iPad 세션의 지연 개선을 이 분석기 제거 효과로 설명하면 안 됩니다. 저사양 판별은 기기 정보 기반으로, 수업 중 발열에 따른 실시간 쓰로틀링 측정값이 아닙니다.

후속 검증: 동일 기기·수업·런타임·충전/저전력 조건에서 제거 전후 CPU·메모리와 실제 청취 지연을 비교합니다. 이번 문서는 그 측정 결과를 포함하지 않습니다.

정확히 어떤 자원이 줄었나요?
위치제거한 작업수치의 의미
게스트 오디오AudioContext·MediaStreamAudioSourceNode·ScriptProcessorNode 각 1개MFCC 활성 시 기준. 기계음 분석은 독립적으로 유지.
게스트 CPU4096 프레임 콜백, 16kHz 리샘플, 300ms 윈도우·150ms hop의 MFCC 계산·코사인 비교코드에 정의된 처리 단위. 유예·무음·발화 상태에 따라 계산을 건너뛰므로 실제 횟수·CPU 절감률은 미측정.
게스트 메모리샘플·특징 배열, 패턴 커서, 이벤트 생성, MFCC 전용 턴 종료 ID 추적실측 바이트 수 없음. 일반 대화 턴·전사 추적은 유지.
네트워크·서버GUEST_MFCC_LOG_EVENT 송수신 및 검증·중계제거한 경로의 전송량 감소. 전체 수업 트래픽 감소율은 미측정.
모니터턴 로그 버퍼, 지연 flush·업로드 중 추적기존 버퍼 상한 2,000 이벤트. 코드 주석의 ‘약 2MB’는 이벤트당 1KB 가정의 추정치이며 실제 상시 절감량이 아님.
S3·DB신규 JSONL 생성, 업로드 URL 발급, S3 PUT, MFCC 포인터·요약 등록성공한 턴 업로드 경로에서 발생하던 작업. 기존 객체 보관 비용은 유지되며 금액은 산출하지 않음.
화면과 기능에서 바뀐 것 · 보존한 것
  • main/message의 MFCC 규칙·중단 설정, 게스트 디버그 설정, 전용 디버그 페이지 제거.
  • MFCC 오탐으로 AI 응답을 중단하던 콜백과 MFCC 감지 이벤트 처리 제거.
  • 세션 로그의 MFCC 열·미리보기·다운로드·삭제 UI 제거. 표 복사에서도 MFCC 제외.
  • 기계음 감지·기계음 자동 중단, 전사 기반 영어 감지, 음성 재생·외부 STT·Mediasoup 송출 유지.
  • 기존 S3 객체와 DB의 MFCC 기록은 삭제하지 않음. 기존 기록의 다운로드·삭제 API와 레거시 타입은 남아 있으나 화면에서는 호출하지 않음.
  • mfccFpCheck 등 별도 레거시 설정 정리는 이 변경 범위에 포함하지 않음.
구현 근거와 코드 경로

구현: e3270372 · MFCC 기반 영어 가드 및 검증 로그 제거. 아래 링크는 변경 시점의 소스를 고정해 참조합니다.

  • 제거 전 apps/web/hooks/use-ai-english-guard.ts: 전용 Context·콜백·윈도우·매칭·정리.
  • 현재 apps/web/entities/guest-page-session/model/use-guest-page-session.ts: MFCC hook 제거, 기계음 가드·STT·송출 보존.
  • apps/web/hooks/use-ai-audio-noise-guard.ts: 유지된 기계음 감지.
  • apps/web/entities/guest-session/model/use-ai-session.ts: MFCC 턴 종료 콜백·전용 ID 집합 정리. 일반 전사 완료 처리 보존.
  • apps/web/entities/guest-socket/model/use-guest-socket.ts, apps/socket/src/sfu-socket/handlers/session-alert-handlers.ts, packages/shared/src/utils/constants.ts: 이벤트 경로 제거.
  • apps/web/entities/monitor-session/model/use-monitor-session.ts, 제거된 apps/web/hooks/use-mfcc-log-collector.ts: 버퍼·타이머·수집·업로드 제거.
  • apps/web/components/pages/session-log.tsx: MFCC 열과 액션 제거. apps/web/components/ui/mfcc-preview-modal.tsx 삭제.
  • apps/web/lib/s3.ts, apps/web/lib/db-queries.ts, apps/web/app/api/session-logs/[id]/mfcc/route.ts: 신규 업로드·등록 제거, 과거 기록 API 유지.
무엇을 검증했나요?

2026-09-14 · 커밋 e3270372에서 문서 작성 시 재실행: 5개 파일, 11개 테스트 통과. 브라우저·DB·S3 실제 자원 대신 fixture와 fake를 사용합니다.

cd apps/web
pnpm exec vitest run \
  components/pages/session-log.test.tsx \
  components/pages/chat-preset.test.tsx \
  hooks/use-ai-audio-noise-guard.test.ts \
  stores/use-language-guard-settings-store.test.ts \
  app/api/session-logs/mfcc-history.test.ts

확인 항목: 기계음 클리핑 감지·해제·공용 트랙 보존, 다른 설정 저장, MFCC UI 부재, 일반 대화 표시·복사, 기존 기록 API의 호환성.

구현 단계 기록: Socket 중계 검사 73개, 모니터 관련 검사 12개, 음성 세션 이벤트 검사, 웹·Socket 타입 검사, Storybook 정적 빌드 통과. 별도 metrics.test.js는 기존 경로 등록 누락 3건으로 실패하며, 변경 전 HEAD에서도 동일함을 확인했습니다.

미검증: 실제 iPad CPU·메모리·전력·발화 지연의 개선 폭. 기능 검증 결과를 성능 측정 결과로 해석하지 않습니다.

기능 제거의 목적: 앞으로 사용하지 않는 MFCC 경로 정리. 이 문서는 구현된 변화의 설명이며, 배포 완료나 실기기 성능 개선을 주장하지 않습니다.