Scailout Station
블로그
한국어
킥스타터에서 후원하기

블로그

제조사가 먼저 꺼내지 않는 아홉 가지 질문

Robert Kim ·

우리가 제조사 미팅에 들고 들어가는 확인 목록을, 쓰는 형태 그대로 공개한다.

전시 상담 기록 장비의 데모는 보라고 만든 자리다. 캐묻는 자리가 아니다. 테이블에 한 대를 올리고 말을 건다. 노트북에 전사가 뜬다. 그 30초 안에서는 전부 잘 돌아간다. 사흘 행사의 셋째 날은 다르다. 한 카운터에서 대화 둘이 동시에 오가고 카드는 94% 차 있다. 그 상황을 데모는 알려주지 않는다.

아래 질문은 우리가 제조사에 들고 가는 목록이다. 우리 제품을 만들려고 썼다. 하드웨어 협력사가 계약 전에 받는 것도 같은 목록이다. 사는 쪽이 이걸 못 가질 이유가 없다.

데모를 보기 전에 못 박을 것

먼저 아홉 가지를 확정한다. 녹화 프레임레이트, 해상도, 오디오 처리 위치, 마이크 클럭, 표시등 제어권, 전송 경로, 정전 시 동작, 캘리브레이션 데이터의 주인, 보관 정책이다. 데모는 이 중 어느 것도 답하지 않는다. 답하도록 만든 자리가 아니다. 시연은 잘 되는 30초를 보여주려고 짜인 자리다. 아홉 가지는 그 30초 바깥에서만 갈린다.

전시 상담 기록 장비 확인 목록은 제조사가 문서로 답해야 하는 사양 질문의 묶음이다. 기능 비교표와는 다른 물건이다. 기능은 통제된 방에서 시연된다. 사양은 시연되지 않는다. 아홉 가지는 성질이 하나 같다. 모호한 답 자체가 답이라는 것. 카메라 셋을 동시에 인코딩해 본 제조사는 실측한 숫자를 부른다. 데이터시트를 읽은 제조사는 칩이 그 정도는 된다고 말한다. 두 문장은 들어간 엔지니어링이 다르다. 하나는 랩에서 사흘을 태운 결과고 다른 하나는 제품 페이지 한 줄이다. 행사 이틀째 오후 네 시에 둘은 정반대 결과를 낸다. 순서대로 묻는다. 미팅이 끝난 뒤에도 남는 문서로 받는다. 돌아온 답을 어떻게 읽는지도 마지막에 따로 적었다. 자리에서 못 답하는 항목이 나와도 상관없다. 언제까지 답을 주겠다는 날짜를 대신 받으면 된다. 그 날짜를 못 대는 항목이 진짜 위험 신호다. 아홉 가지는 사양서 한 장에 다 들어가는 분량이고 답을 가진 제조사는 그 자리에서 절반쯤 채운다. 아래는 아홉 가지를 순서대로 펼친 것이다. 표로 먼저 훑고 각 항목이 왜 그 답을 요구하는지는 그다음 절에서 하나씩 본다.

질문 왜 중요한가 좋은 답의 형태
녹화 프레임레이트와 추론 프레임레이트를 따로 추론은 나중에 올려도 되지만 녹화는 되돌릴 수 없다 녹화 30fps, 분석은 2fps 샘플링
해상도, 그리고 얼굴이 식별되는 거리 무엇을 알아보고 무엇을 못 알아보는지가 갈린다 해상도 숫자가 아니라 픽셀 예산
오디오를 어디에서 처리하는가 원본 신호를 누가 쥐는지의 문제다 온디바이스, 또는 지역과 처리 주체 명시
마이크 클럭 구조 빔포밍은 DSP 문제이기 전에 클럭 문제다 단일 클럭, 공통 I2S·TDM 비트클럭 동기 ADC
녹음 표시등을 끌 수 있는가 법적 결과가 붙는 유일한 항목 점멸과 최소 밝기는 펌웨어 하드코딩
전송 경로와 실측 속도 하루치 영상은 작은 파일이 아니다 인터페이스·속도·소요 시간 세 개
녹화 중 전원이 끊기면 전시장은 전원이 끊긴다 세그먼트 단위 내구성, 세그먼트 길이 명시
캘리브레이션 데이터는 누구 것인가 없으면 영상을 다시 처리하지 못한다 카메라별 intrinsics 출하 시 동봉
보관·삭제 정책 결국 우리 쪽 컴플라이언스 노출이다 기본값, 상한, 삭제 경로

무엇을 기록하는지 묻는다

녹화 프레임레이트와 추론 프레임레이트는 별개의 설정이다. 둘을 뭉뚱그리는 제조사는 이 용도로 만들어 본 적이 없다. 연산을 아끼려고 녹화 fps를 낮추면 되돌릴 수 없다. 나중에 사람이 영상을 볼 때 부자연스럽다. 없던 프레임을 만들어 내는 후처리는 없다. 추론 샘플링은 행사가 끝난 뒤에도 올릴 수 있다. 두 숫자를 따로 받는다.

계산은 미팅 자리에서 같이 해 보면 된다. 종이 한 장과 계산기면 충분하다. 전시 하루 8시간, 카메라 3대, 30fps면 2,592,000 프레임이다. 분석을 2fps로 샘플링하면 172,800 프레임이 남는다. 재실 감지로 게이팅하면 여기서 또 절반 넘게 준다. 이건 배치 작업 규모를 잡으려고 우리가 낸 요구 계산이다. 어느 장치의 실측이 아니다. 분석 부하는 나중에 바꿀 수 있는 스케줄링 선택이다. 녹화 프레임레이트는 영구적이다.

해상도도 같은 방식으로 따진다. 흔히 쓰는 얼굴 임베딩 모델은 얼굴 폭 100픽셀 안팎을 원한다. 검출만이면 20~30픽셀에서도 성립한다. 성인 얼굴 폭 16cm, 1080p 센서, 화각 120도를 놓고 나눠 본다. 1.5m 얼굴이 98픽셀 언저리다. 3m 얼굴은 49픽셀 언저리다. 이 계산은 렌즈 왜곡과 주변부 해상도 저하를 무시한 낙관치다. 실제 광각 렌즈는 이보다 나쁘다. 정직한 값은 현장 실측으로 보정해야 나온다. 거리 한계가 곧 프라이버시 기능인 이유도 여기서 나온다. 변명할 사양은 아니라는 말이다. 신원 귀속에 720p를 제안하는 제조사는 이 나눗셈을 해 보지 않았다.

그릴은 사진이 잘 나온다. 전시 상담 기록 장비에 물어야 할 것은 전부 그 뒤에 있다 — 전시 상담 기록 장비
그릴은 사진이 잘 나온다. 전시 상담 기록 장비에 물어야 할 것은 전부 그 뒤에 있다 — 전시 상담 기록 장비

오디오가 어디로 가는지 묻는다

오디오 처리가 장치 안에서 끝나는지 묻는다. 멀티채널 원본을 누가 쥐는지도 같은 자리에서 확인한다. 그 답이 정하는 건 제조사의 노출이 아니다. 우리 쪽 노출이다. 2008년 제정된 일리노이 BIPA는 성문(voiceprint)을 생체 식별자로 다룬다. 수집을 제3자 업체가 대신했다는 사실은 배치한 조직을 보호해 주지 않는다. 처리 위치는 우리에 관한 컴플라이언스 사실이다.

다음은 클럭이다. 빔포밍은 신호처리 문제이기 전에 타이밍 문제다. 우리가 잡은 지오메트리에서 채널 간 50마이크로초는 도래각 오차 약 10.7도다. 이것도 하드웨어 요구를 정하려고 돌린 산술이지 실측이 아니다. 음속이 343m/s이니 마이크 간격에서 그대로 따라 나온다. 나중에 소프트웨어로 메울 수 있는 값이 아니다. USB 마이크 여러 대를 붙이는 구성은 이 요구를 만족하지 못한다. 필요한 건 단일 클럭 동기 ADC다. 공통 I2S나 TDM 비트클럭 위에 올라가야 한다.

저장 포맷은 같은 질문의 세 번째 부분이다. 손실 압축 멀티채널은 채널 간 위상을 보존하지 않는다. Opus나 AAC 멀티채널 파일은 분리가 기대는 공간 정보를 이미 버린 상태다. 받아야 할 답은 48kHz 멀티채널 무손실이다. 빠르게 들어 볼 사람을 위한 참조 모노 트랙이 옆에 붙는다. 마이크 어레이 지오메트리를 좌표로 달라는 요구도 같이 넣는다. ODAS 같은 도구가 각 마이크의 물리 좌표를 설정 입력으로 요구하니까. 자기 지오메트리를 기록하지 않는 장치는 나중에 빔포밍을 재현하지 못한다. 한 카운터에서 오가는 대화 둘이 왜 안 나뉘는지도 이 항목에서 드러난다.

표시등을 누가 끌 수 있는지 묻는다

녹음 표시등에 끄는 방법이 있는지 묻는다. 누가 끄는지, 어느 층위에서 끄는지까지 파고든다. 목록에서 법적 결과가 직접 붙는 항목은 이것 하나다. 캘리포니아 형법 632조는 당사자 전원의 동의 없는 비밀 대화 녹음을 범죄로 규정한다. 한자리에 마주 앉은 당사자를 명시적으로 포함한다. 표시등을 끌 수 있는 기기는 그 순간 비밀 녹음이 가능한 기기가 된다. 끄는 경로가 어디에 있느냐가 그래서 사양 질문이 아니라 노출 질문이다.

632조는 2016년 개정법(Stats. 2016 Ch. 855)으로 손질돼 2017년 1월 1일 발효됐다. 폰 앱의 설정 토글과 펌웨어 상수는 같은 물건이 아니다. 그 차이는 감사로 확인된다. 층위를 셋으로 나눠 물으면 답이 선명해진다. 앱 설정에서 끄는가. 관리자 계정으로 끄는가. 펌웨어를 다시 올려야 끄는가. 셋은 난이도가 아니라 책임 소재가 다르다. 앞의 둘은 현장 직원이 눌러 버릴 수 있는 버튼이고 그 순간 고지 부담이 직원 손으로 넘어간다. 우리 답은 이렇다. 색상과 밝기는 조절된다. 점멸 자체와 최소 밝기 하한은 펌웨어에 박혀 있다. 제품이 누구에게도 허용하지 않기로 한 동작이다. 끄는 스위치가 없는 녹음 표시등의 근거가 여기다. 개인정보 방침보다 좁은 주장이다. 방침은 방침을 쓰는 사람이 다시 쓸 수 있으니까.

2025년 8월 캘리포니아 연방법원에 Brewer v. Otter.ai 집단소송이 제기됐다. ECPA·CFAA·CIPA와 부정경쟁 청구가 걸렸다. 서비스가 허가받지 않은 제3자 도청자로 행동했다는 구성이다. 결과가 어떻게 나오든 그 소장은 기록 장치가 올라앉은 위험면을 서술한 문서다. 규칙은 나라마다 갈라진다. 녹음 동의는 관할마다 다르다. 전역 기본값 하나로 덮을 수 있는 종류가 아니다.

하루치 데이터를 어떻게 빼는지 묻는다

전송 인터페이스와 실측 처리량을 받는다. 하루치를 옮기는 데 걸리는 시간까지 숫자로 적어 온다. 인터페이스 이름만 대고 속도를 못 대면 답이 아니다. 직원이 저녁을 먹으러 나갈 수 있는지는 시간 쪽이 정한다. 하루치 기록은 작은 파일이 아니다. 인터페이스가 무엇이냐에 따라 15분이 되기도 하고 나흘이 되기도 한다.

이 나눗셈도 테이블에서 한다. BLE 2M PHY는 실측 최선이 0.7Mbps 언저리다. 32GB를 이 경로로 보내면 약 101시간이다. 하루치 기록에 나흘이 든다. 같은 32GB가 실측 50Mbps Wi-Fi에서는 85분쯤이다. USB 2.0 대용량 저장(35MB/s)이면 15분쯤이다. 벤치마크 결과가 아니라 몫이다. 어느 제조사든 1분이면 자기 숫자로 검산한다.

결론은 취향이 아니라 구조로 나온다. BLE는 제어와 상태 채널이다. Open GoPro가 인터페이스를 나눈 방식이 그렇다. Wi-Fi는 BLE 명령으로만 켜진다. 벌크 데이터는 Wi-Fi나 USB로 간다. 전력과 전파 간섭까지 따지면 전시장에서는 이 분리가 더 유리하다. 영상의 기본 데이터 경로로 여전히 블루투스를 제안하는 제조사는 이 산술을 돌리지 않았다. 우리가 초기 견적요청서에 썼던 같은 요구도 정확히 이 이유로 폐기했다. 용량은 작업 순서까지 정한다. 오디오는 영상의 일부에 불과하다. 48kHz 6채널 무손실이 8시간에 9GB 안팎인 반면 3카메라 1080p30 본편은 40GB를 넘긴다. 저해상도 프록시만 추리면 1GB 밑이다. 그래서 오디오를 먼저 빼고 영상은 밤에 넘긴다. 행사 마지막 날 짐을 싸면서 40GB가 다 넘어가기를 기다리는 팀은 결국 기다리지 않는다. 선택 전송이 되는지 묻는다. 세션 단위로 오디오만, 프록시만 고를 수 있어야 한다.

전원이 끊기는 순간과 데이터의 주인을 묻는다

예정에 없던 정전에서 무엇이 살아남는지 묻는다. 캘리브레이션 데이터가 누구 것인지도 그 자리에서 확정한다. 전시장은 전원이 끊긴다. 누군가 케이블에 발이 걸린다. 그 순간 쓰이던 파일은 깨끗하게 닫히거나 닫히지 않는다. 세그먼트 길이와 복구 절차를 받는다. 마지막 세그먼트만 잃는 구조인지 그날 파일이 통째로 날아가는 구조인지가 거기서 갈린다. 캘리브레이션 데이터는 성격이 다른 질문이고 답을 미루면 나중에 되돌릴 방법이 없다.

답할 수 있게 만드는 건 세그먼트 기록이다. 60초 세그먼트면 정전이 앗아가는 건 최대 한 조각이다. 세그먼트는 전송 체크포인트 역할도 겸한다. 끊긴 전송은 빠진 세그먼트만 다시 요청한다. 파일 중간 바이트 오프셋을 계산할 일이 없다. 이 영역에는 우리가 직접 밟은 함정이 하나 있다. GStreamer의 splitmuxsink에는 max-files 속성이 있고 문서는 오래된 파일이 삭제된다는 인상을 준다. 소스를 열어 확인했다. 1.24 브랜치의 gstsplitmuxsink.c는 4,158줄이다. g_remove도 unlink도 한 번도 호출하지 않는다. 그 속성이 하는 일은 조각 번호를 되돌리는 것뿐이다. 촬영 시각이 담긴 파일명을 쓰면 한 바이트도 회수되지 않는다. 경고도 오류도 없이 카드가 100% 찬다. 링버퍼 동작을 주장하는 제조사에게는 어느 코드가 삭제를 수행하는지 물어보면 된다.

주인 문제는 캘리브레이션이다. 카메라별 intrinsics와 왜곡 계수가 있어야 영상을 보정하고 정합하고 계측한다. 이 값은 렌즈와 센서를 조립한 그 유닛에만 맞는다. 옆 유닛 값을 빌려다 쓸 수 없다. 이 값 없이 출하된 장치의 영상은 제조사 도구 밖에서 다시 처리하기 어렵다. 출하 시 유닛별 캘리브레이션 값을 요구한다. 그다음 상업적으로 평범한 버전을 묻는다. 돈을 그만 내면 우리 녹음은 어떻게 되는가. 늘 비어 있던 메모 칸과 같은 질문이다. 직원이 아니라 저장소에 대고 물었을 뿐이다.

돌아온 답을 읽는 법

구체적으로 틀린 답이 자신 있게 모호한 답보다 쓸모 있다. 구체적인 답은 검증된다. 틀렸다면 어디가 틀렸는지도 같이 나온다. 모호한 답은 검증되지 않는다. 제조사가 데이터시트 최대치를 읽는지 자기가 돌린 실측을 부르는지 듣는다. 두 문장은 비슷하게 들리고 정반대 결과를 낸다. 아홉 가지를 다 물은 뒤에 남는 건 사양표가 아니라 그 제조사가 무엇을 재봤는지에 관한 지도다.

실리콘 마케팅에서 차이가 가장 크게 벌어진다. RK3588 데이터시트의 8K@30은 단일 스트림 최대치다. 인코더 코어 둘을 한 스트림에 몰아 쓴 값이다. 카메라 셋으로 나눠 쓸 여유분이 아니다. AM62A7은 연산 요구를 넘기고 배선에서 막힌다. 4레인 CSI-2 수신기가 하나뿐이다. 센서 셋을 물리려면 외부 애그리게이터나 SerDes가 붙는다. 그건 캐리어 보드 설계 공수와 BOM이다. 어느 쪽도 그 부품을 깎아내리는 말이 아니다. 합성 벤치 말고 실제 센서 3개를 지속 부하로 돌린 실측을 요구할 이유일 뿐이다.

장치가 무엇을 거부하는지도 묻는다. 고정 프로파일 셋을 둔 제품은 무언가를 이미 결정해 놨다. 해상도·프레임레이트·비트레이트를 자유 조합으로 여는 제품은 다르다. 검증되지 않은 경우의 수를 건넨다. 현장에서 잘못 설정한 채 하루를 날릴 경로도 같이 건넨다. 커버리지를 밝히는 태도에도 같은 시험을 댄다. 우리가 묻기 전에 부스 고정형이 못 하는 일을 먼저 공개한 이유다.

마지막 질문이 판을 가른다. 앞의 답 가운데 어느 것을 문서에 넣어 줄 수 있는지 묻는다. 우리도 같은 기준을 지고 있다. 사람이 아니라 카운터에 캡처를 넣은 이유이기도 하다. 적어 놓고도 살아남는 주장은 종류가 다르다. 나머지는 데모다.

법 관련 1차 자료는 두 곳이다. 캘리포니아 형법 632조 원문(https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=PEN&sectionNum=632). 2025년 8월 공개된 Otter.ai 집단소송 분석(https://natlawreview.com/article/ai-notetaking-tools-under-fire-lessons-otterai-class-action-complaint).