만든 도구진행 중

대본

자막이 있을 때와 없을 때는 완전히 다른 길입니다. 그리고 나가는 건 영상이 아니라 오디오뿐입니다.

두 경로

말을 글로 옮기는 부분입니다. 자막이 있을 때와 없을 때는 «완전히 다른 길»입니다.

왜 대본을 최대한 쓰나

앞에서 본 것처럼 화면 캡처는 비싸고 대본은 쌉니다. 10분짜리 영상의 대본이 몇천 단위입니다.

그래서 원칙이 이렇습니다 — 가능한 한 대본으로 채우고, 캡처를 아낍니다.

문제는 대본을 어디서 얻느냐입니다. 길이 둘이고 성격이 완전히 다릅니다.

첫 번째 길 — 플랫폼 자막

영상 사이트가 이미 만들어 둔 자막을 가져옵니다.

장점
공짜 돈이 안 나감
시간이 이미 붙어 있음 「3분 20초에 이 말」이 그대로 있음

두 번째가 생각보다 큽니다. 몇 분에 무슨 말을 했는지를 알아야 그 시점의 화면과 맞춰 볼 수 있습니다. 시간이 없으면 대본과 화면이 따로 놉니다.

두 번째 길 — 직접 받아쓰기

자막이 없거나, 제 컴퓨터에 있는 파일이면 소리만 뽑아서 받아쓰기 서비스로 보냅니다.

여기서 중요한 게 하나 있습니다. 나가는 건 영상이 아니라 소리뿐입니다. 그리고 그것도 음질을 낮춰서 다시 만든 것입니다.

「영상을 통째로 어딘가에 올린다」가 아닙니다. 필요한 최소한만 나갑니다.

둘의 성격이 왜 다른가

자막 받아쓰기
돈 공짜 나감
시간 정보 있음 대략
정확도 보통 사람이 손본 것 기계가 들은 것
항상 되나 없을 때가 많음 거의 항상 됨

그래서 자막을 먼저 시도하고, 없으면 받아쓰기로 갑니다. 순서가 중요합니다 — 반대로 하면 공짜로 얻을 수 있는 걸 돈 내고 삽니다.

둘 다 안 되면 — 「없다고 말합니다」

자막도 없고 받아쓰기도 실패하면 화면만 가지고 갑니다.

그리고 그 사실을 결과에 적습니다.

이게 중요합니다. 대본 없이 나온 분석은 말로 설명된 부분이 통째로 빠져 있습니다. 그걸 안 적으면, 읽는 사람이 「이게 전부인가 보다」로 읽습니다.

빠진 게 있으면, 빠졌다고 결과에 적혀 있어야 합니다. 안 적으면 완전한 것으로 읽힙니다.

그리고 벽이 하나 있습니다 — 업로드 상한

받아쓰기 서비스에 한 번에 올릴 수 있는 크기 제한이 있습니다.

아주 긴 영상은 소리만 뽑아도 그 제한을 넘습니다.

이건 제가 못 고치는 제약입니다. 그래서 긴 영상은 잘라서 올리거나, 아니면 그 구간만 처리합니다.

남의 서비스가 정한 벽은 제 코드로 못 넘습니다. 그럴 때 할 수 있는 건 우회하거나, 안 된다고 말하거나 둘 중 하나입니다.

여기부터는 자세한 기록입니다

프레임이 비싼 만큼 대본은 싸다. 10분짜리 영상의 대본이 몇천 토큰이다. 그래서 가능하면 대본으로 채우고 프레임을 아낀다.

문제는 대본을 어디서 얻느냐다. 길이 둘이고, 둘의 성격이 완전히 다르다.

첫 번째 길 — 플랫폼 자막

먼저 원본 플랫폼의 자막을 시도한다. 공짜고, 시간축이 이미 붙어 있다.

시간축이 붙어 있다는 게 핵심이다. 프레임에는 각각 시각이 있으니까, 대본에도 시각이 있으면 둘을 맞춰 읽을 수 있다. “3분 12초 화면에서 이 말을 하고 있었다”가 성립하고, 그게 스펙을 뽑을 때 필요한 형태다.

자동 생성 자막이라도 충분하다. 단어가 몇 개 틀려도 시각이 맞으면 쓸 수 있고, 틀린 단어는 프레임이 고쳐 준다.

두 번째 길 — 직접 받아쓰기

자막이 없거나 로컬 파일이면 음성을 뽑아 받아쓰기 API로 보낸다.

여기서 나가는 건 영상이 아니라 오디오다. 화면은 어디에도 안 올라간다. 그리고 오디오도 원본이 아니라 모노 16kHz로 다시 인코딩한 것 — 분당 0.5MB 정도다. 사람 말을 알아듣는 데는 그 정도면 충분하고, 그 이상은 올릴 이유가 없다.

제공자는 키가 설정된 쪽을 쓴다. 한쪽이 실패하면 다른 쪽으로 강제할 수 있고, 아예 끄는 스위치도 있다. 받아쓰기를 끄면 프레임만으로 진행하고, 대본이 없다는 사실을 결과에 적는다.

없으면 없다고 말한다

자막도 없고 받아쓰기도 못 하면 프레임만으로 간다. 그리고 그 사실을 결과에 명시한다.

이게 규칙으로 있어야 하는 이유는, 대본 없는 결과물이 겉보기에는 멀쩡하기 때문이다. 프레임 80장으로도 그럴듯한 요약이 나온다. 그런데 발표자가 말로만 설명한 부분은 통째로 빠져 있고, 읽는 사람은 그걸 모른다.

“대본 없음”이라고 한 줄 적히면 읽는 쪽이 그 결과를 다르게 취급한다. 그 한 줄이 없으면 없다는 걸 아무도 모른다.

25MB 벽

받아쓰기 API에 업로드 상한이 있다. 아주 긴 영상은 오디오만으로도 그 상한을 넘는다.

모노 16kHz로 줄여 놓은 게 여기서도 값을 한다 — 분당 0.5MB면 50분까지는 한 번에 들어간다. 그보다 길면 애초에 구간을 지정해서 볼 영상이지, 통째로 받아쓸 영상이 아니다.

실패하면 에러를 그대로 보여준다. 상한 초과인지, 키가 틀렸는지, 호출 한도인지가 메시지에 나오고, 원인을 안 숨기는 게 재시도 판단에 필요하다.