🧪
포맷 파일럿 문서 (채택 완료) — 웹툰 중심 모드 (타팀 공유·비개발자 독자를 겨냥해 웹툰 스트립을 본문 설명의 주 수단으로 승격. 웹툰 모드는 전체 일괄이 아니라 타팀 공유·교훈 큰 사건 문서에 선별 적용한다).
내용은
원본 분석 문서와 동일하며, 판별 근거 타임라인과 운영 체크리스트는 하단에 그대로 유지한다.
세 사례가
서로 다른 원인이라는 것이 이 사건의 핵심 교훈이라, 사례당 2컷씩 에피소드로 나눴다.
결론 요약
세 사례 모두 음원 다운로드·생성·디코딩 실패로 볼 근거는 없다. 앱 내부에서는 재생 시간과 오디오 신호가 진행됐지만,
실제 청취 단계에서 서로 다른 문제가 발생했다. 김태희는 iOS 출력 loopback 라우팅 실패,
윤단우는 탭 백그라운드 전환에 따른 영상 정지, 이진서는 Windows 기본 출력의 Bluetooth 전환이 핵심 원인이다.
| 아동·환경 | 핵심 원인 | 대표 근거 | 확신도 |
김태희 iPhone Chrome | iOS 출력 sink/WebRTC loopback 불안정 | setSinkId 사용자 제스처 오류, source RMS 존재·remote RMS 0, loopback 연결 실패 반복 | 높음 |
윤단우 Android Chrome | 탭 백그라운드 전환 후 미디어 정지 | isVisible:false 직후 영상이 7.999초에 고정되고 pause/recovery 반복 | 매우 높음 |
이진서 Windows Chrome | 기본 출력이 Bluetooth SRS-X11로 전환 | 입장 시 Realtek, 이후 기본값이 SRS-X11 Stereo (Bluetooth); 앱 재생·디코딩 정상 | 높음 |
사건의 재구성 — 3에피소드 6컷
🧒 김태희 (iPhone)
👦 윤단우 (Android)
🧒 이진서 (Windows)
🤖 핑퐁이(AI)
💂 iOS 경비원 (사용자 제스처 제한)
🌙 크롬 절전 관리인 (백그라운드 정책)
🔊 Bluetooth 스피커 SRS-X11
EP.1 — 김태희: 끊어진 마지막 다리 (iPhone Chrome)
1
🤖핑퐁이sourceRms 0.0288
🌉loopback 다리
📱스피커 앞remoteRms 0
핑퐁이소리는 분명히 보냈어! 다리 건너편까지 갔니?
앱 안에는 소리 신호가 살아 있는데(sourceRms>0), 출력으로 가는 loopback 건너편은 무음(remoteRms=0).
2
iOS 경비원출력 통로 변경은 사용자 제스처 없인 불가! (setSinkId 거부)
김태희소리가 안 들려요…
sink 적용 거부 + loopback 연결 실패 반복(silent-remote-stream). 소리는 마지막 출력 경로에서 유실됐다. 서버·콘텐츠 문제 아님.
EP.2 — 윤단우: 잠든 탭 (Android Chrome)
3
영상재생 잘 되고 있어요~ (currentTime 증가, 오디오 디코딩 정상)
수업 시작 약 8초까지 영상·오디오 모두 정상.
4
— 탭이 뒤로 숨음 (isVisible=false) —
절전 관리인백그라운드 탭은 정지! 다시 켜도 또 정지!
앱이 즉시 재생을 복구해도 브라우저 정책이 계속 다시 멈춘다. 소리만 고장이 아니라 영상·오디오가 함께 멈춘 사례.
EP.3 — 이진서: 다른 방에서 울리는 소리 (Windows Chrome)
5
🧒이진서
🖥️내장 스피커 Realtek입장 시 기본 출력
이진서처음엔 잘 들렸는데…
입장 단계 기본 출력은 내장 Realtek. 영상·TTS 디코딩과 재생 시간 진행 모두 정상.
6
— 기본 출력이 슬쩍 바뀜 —
🔊Bluetooth SRS-X11새 기본 출력
🧒이진서
SRS-X11(다른 곳에서) 소리는 내가 받고 있지롱~
이진서안 들려요!
앱은 default 장치를 따르므로 소리는 정상 생성돼 Bluetooth 쪽으로 출력 중. 사용자가 기대한 내장 스피커가 아닐 뿐.
한 줄 교훈 — "소리가 안 들려요"라는 같은 신고 뒤에 세 가지 전혀 다른 범인이 있었다.
공통 장애를 가정하지 말고, 아래 체크리스트로 사례별 판별부터 한다.
판별 근거 — 관찰 타임라인 (원본 그대로)
공통으로 배제되는 원인
- 카메라·마이크 권한 거부가 아니다. 세 기기 모두 권한 및 장치 열거가 정상이다.
- 영상 파일 로드 실패가 아니다. 영상 metadata/canplay/play 이벤트가 발생했고 재생 준비 상태도 정상이다.
- TTS 생성 실패가 아니다. 응답 수신, 오디오 디코딩, playback start와 재생 시간 증가가 확인된다.
- 서버가 음성을 전혀 만들지 못한 공통 장애가 아니다. 사례별 실패 지점이 출력 라우팅·브라우저 상태·OS 기본 장치로 갈린다.
주의: AUDIO_PROBE suspectedSilent:false는 AudioContext 시간이 진행된다는 뜻이지,
사용자가 실제로 선택된 물리 스피커에서 소리를 들었다는 보장은 아니다.
1. 김태희 — iPhone Chrome
09:31:15.491 video setSinkId failed — A user gesture is required
09:31:19.153 Audio warmed up via user gesture
09:31:20.073 첫 영상 play, muted=false, readyState=4
09:31:22.074 영상 currentTime 증가, audioTrackCount=1
09:31:23.009 sourceRms=0.0288, remoteRms=0
09:31:23.010 loopback lost — silent-remote-stream
09:31:34.498 이후 receiver-connection-failed 반복
09:31:36.548 첫 "소리가 안 들려요" 신고
로그의 probe는 매번 실행 상태로 복구됐으므로 iPhone 물리 볼륨이나 무음 모드 자체는 확정할 수 없다.
다만 source 신호 존재와 remote 신호 0은 애플리케이션 loopback 실패를 직접 지시한다.
2. 윤단우 — Android Chrome
09:00:19.759 오프닝 영상 play, visibility=visible, muted=false
09:00:21.760 currentTime=1.936, audioDecodedByteDelta=33031
09:00:27.816 탭 상태 isVisible=false
09:00:27.820 영상 pause, currentTime=7.994, visibility=hidden
09:00:29 이후 play 복구 직후 다시 pause, 7.999초에 고정
09:02:48.345 "소리가 안 들려요" 신고
탭이 숨겨진 이유가 사용자 앱 전환, 화면 잠금, 시스템 UI 진입 중 무엇인지는 로그만으로 구분할 수 없다.
그러나 visibilityState:hidden과 정지 시점의 인과는 명확하다.
3. 이진서 — Windows Chrome
입장 단계 기본 출력: 스피커(Realtek High Definition Audio)
07:00:13.290 첫 영상 play, muted=false, visibility=visible
07:00:15.291 audioDecodedByteDelta=32777, currentTime 정상 증가
07:00:42 이후 TTS playback 및 audio output health 정상 반복
07:03:42.116 기본 출력 목록 최상단이 SRS-X11 Stereo (Bluetooth)
이후 Bluetooth Hands-Free·Stereo와 Realtek이 동시에 존재
로그에는 Bluetooth 스피커의 실제 전원·착용·청취 상태가 없다. 따라서 "Bluetooth 출력 전환"은 확정되지만
사용자가 못 들은 마지막 물리적 이유는 정황 판정이다.