AI(Whisper + GPT)를 사용하여 비용 부담 없이 오디오 전사 및 챕터 생성하기
요약
Whisper와 GPT를 결합하여 비용 효율적으로 오디오 전사 및 챕터 생성 자동화 시스템을 구축하는 방법을 소개합니다. 불필요한 토큰 사용을 줄이기 위한 데이터 압축과 적절한 모델 선택 전략을 다룹니다.
핵심 포인트
- Whisper의 verbose_json을 사용하여 정확한 타임스탬프 확보
- 전체 텍스트 대신 세그먼트 요약을 전달하여 토큰 비용 절감
- 챕터 생성에는 고성능 모델 대신 저렴한 mini 모델 활용
- 전사 결과 캐싱을 통해 반복 작업 시 비용 최소화
최근에 사소해 보이지만 실제로는 그렇지 않은 문제에 직면했습니다. 팟캐스트 에피소드와 같은 긴 오디오를 가져와서 "00:00 Intro", "04:12 누구누구가 X에 대해 말함"과 같은 챕터를 자동으로 생성하는 것이었습니다. AI를 사용하되, 월말에 OpenAI 청구서를 보고 깜짝 놀라지 않으면서 말이죠.
저는 풀스택 (Full Stack) 개발자로 일하고 있으며, 이러한 AI 자동화는 일상의 일부가 되었습니다. 작동하면서도 저렴한 방법을 찾기 위해 한동안 머리를 싸매고 고민한 끝에 방법을 찾아냈고, 이를 글로 쓸 가치가 있다고 생각했습니다.
필요한 과정
기본적으로 세 단계가 필요합니다:
- 오디오를 전사 (Transcription)하되, 각 구간의 타임스탬프 (Timestamp)를 포함할 것
- 이 전사된 내용을 의미 있는 챕터로 변환할 것
- 그리고 이를 거액을 들여 수행하지 않을 것. 긴 오디오는 엄청난 양의 토큰 (Token)으로 이어지기 때문입니다.
Whisper를 이용한 전사
많은 사람들이 실수하는 부분이 바로 여기입니다. verbose_json을 사용하여 세그먼트 (Segment)별 타임스탬프가 포함된 전사를 요청할 수 있습니다. 이렇게 하면 Whisper가 각 발화의 시작과 종료 지점을 전달해주므로, 나중에 GPT에게 분(minute)을 "추측"해달라고 요청할 필요가 없습니다 (스포일러: GPT는 추측을 잘 못합니다).
import OpenAI from "openai";
import fs from "node:fs";
...
GPT를 이용한 챕터 생성
여기에는 비용이 많이 드는 유혹이 있습니다. 전사된 내용 전체를 단어 하나하나 모델에 보내는 것입니다. 그렇게 하지 마세요. 제가 하는 방식은 사전에 압축하는 것입니다. 각 세그먼트에 대해 타임스탬프와 텍스트의 앞부분만 보냅니다. 이것만으로도 모델이 주제가 바뀌는 지점을 이해하기에 충분하며, 수많은 토큰을 절약할 수 있습니다.
const resumoSegmentos = transcription.segments
.map((s) => `[${formatTime(s.start)}] ${s.text.slice(0, 120)}`)
.join("\n");
...
제 머리 아픈 일을 줄여준 두 가지는 다음과 같습니다: 유효한 JSON을 반환받도록 보장하는 response_format: { type: "json_object" }를 사용하는 것 (정규 표현식 (Regex)으로 텍스트를 일일이 정리할 필요가 없음), 그리고 Whisper는 시간을 담당하고 GPT는 제목만 담당하도록 두는 것입니다. 각자 잘하는 것에 집중하게 하는 것이죠.
비용이 실제로 절감되는 지점
계산서를 확인했을 때, 비용을 압박했던 것은 "비싼 모델"이 아니라 제가 너무 많은 컨텍스트 (Context)를 보내고 있었다는 점이었습니다. 게임의 판도를 바꾼 것은 다음과 같습니다:
- 작업에 따라 모델을 선택하세요. 챕터 제목 생성에는 최상위 모델이 필요하지 않습니다. "mini" 모델만으로도 훨씬 저렴한 비용으로 해결할 수 있습니다.
- 위에서 보여드린 것처럼, 전송하기 전에 세그먼트 (Segments)를 요약하세요.
- 전사 (Transcription) 결과를 캐싱 (Caching)하세요. 오디오는 전사된 이후에 변하지 않으므로 결과를 저장해 둡니다. 만약 챕터를 다시 생성하고 싶다면, 저렴한 부분만 실행하면 됩니다.
요약
결국 "비싼" AI는 거의 항상 잘못 오케스트레이션 (Orchestration)된 AI입니다. 비용의 상당 부분은 어떤 모델을 사용하는가뿐만 아니라, 모델에 얼마나 많은 컨텍스트 (Context)를 집어넣느냐에 달려 있습니다. 그리고 각 도구의 강점(시간을 위한 Whisper, 언어를 위한 GPT)을 결합하면, 단일 모델이 모든 것을 처리하도록 시도하는 것보다 훨씬 더 예측 가능한 결과를 얻을 수 있습니다.
제가 이미 구축한 다른 것들을 살펴보고 싶다면 — 열어서 테스트해 볼 수 있는 시스템 데모들이 있습니다 — 제 포트폴리오는 여기 있습니다: https://felipegazolla.dev
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기