Node.js에서 Whisper로 워드 단위 타임스탬프 음성 인식하기
OpenAI의 Whisper(위스퍼) 모델은 지금 가장 주목받는 음성 인식 기술 중 하나인데요. 특히 워드 단위 타임스탬프(word-level timestamp) 기능을 활용하면, 자막 제작이나 음성 분석에 훨씬 더 정밀한 타이밍 정보를 얻을 수 있습니다.
이번 글에서는 Node.js 환경에서 Whisper 모델을 사용해 음성 인식을 수행하고, 단어별 타임스탬프까지 추출하는 과정을 단계별로 정리해보겠습니다.
1. Whisper란?
Whisper는 OpenAI에서 개발한 오픈소스 음성 인식 모델입니다. 다양한 언어를 지원하고, 정확도도 매우 높은 편인데요. 특히 자막 파일 생성이나 회의록 자동화, 오디오 분석 등에서 강력한 성능을 보여줍니다.
이 글에서는 Node.js용으로 제작된 nodejs-whisper
패키지를 사용해서 Whisper 모델을 실행할 텐데요. 이 패키지는 Whisper 모델을 손쉽게 Node.js 프로젝트에 적용할 수 있도록 도와줍니다.
2. 전체 흐름 간단히 알아보기
먼저 큰 흐름부터 짚고 넘어가면 아래와 같습니다:
- 시스템에 빌드 도구 설치
nodejs-whisper
패키지 설치- Whisper 모델 다운로드
- 오디오 파일 지정 후 음성 인식 실행
- 워드 단위 타임스탬프 포함 자막 파일(SRT) 생성
그럼 이제 하나씩 자세히 살펴볼까요?
3. 시스템 준비: 빌드 도구 설치
Whisper는 내부적으로 컴파일이 필요한 구성 요소가 있어서, 먼저 시스템에 빌드 도구(build tools) 가 설치되어 있어야 합니다.
Debian/Ubuntu 계열 (Linux)
sudo apt update
sudo apt install build-essential
Windows 사용자
4. nodejs-whisper 설치
터미널에서 아래 명령어를 실행해서 nodejs-whisper
패키지를 설치합니다:
npm install nodejs-whisper
설치가 완료되면, Whisper 모델을 다운로드할 준비가 된 것입니다.
5. Whisper 모델 다운로드
Whisper는 다양한 크기의 모델을 제공합니다. 성능과 정확도, 처리 속도에 따라 선택할 수 있는데요. 아래 명령어로 다운로드할 수 있습니다:
npx nodejs-whisper download
사용 가능한 모델 목록:
tiny
,tiny.en
base
,base.en
small
,small.en
medium
,medium.en
large-v1
,large
,large-v3-turbo
.en
이 붙은 모델은 영어 전용 모델이고, 일반 모델은 멀티랭귀지 지원을 포함합니다.
6. 음성 파일 인식 + 워드 단위 타임스탬프 설정
이제 본격적으로 음성 인식을 실행해볼 차례입니다. 아래 코드를 transcribe.js
같은 파일에 작성합니다:
const path = require('path');
const { nodewhisper } = require('nodejs-whisper');
const filePath = path.resolve(__dirname, 'YourAudioFileName.wav');
(async () => {
await nodewhisper(filePath, {
modelName: 'base.en',
autoDownloadModelName: 'base.en',
removeWavFileAfterTranscription: false,
withCuda: false, // GPU 사용 시 true로 변경
logger: console,
whisperOptions: {
outputInCsv: false,
outputInJson: false,
outputInJsonFull: false,
outputInLrc: false,
outputInSrt: true, // SRT 자막 파일 생성
outputInText: false,
outputInVtt: false,
outputInWords: true, // 워드 단위 타임스탬프 활성화
translateToEnglish: false,
wordTimestamps: true,
timestamps_length: 20,
splitOnWord: true,
},
});
})();
YourAudioFileName.wav
부분을 실제 오디오 파일 경로로 교체해 주세요. 실행하면 워드 단위 타임스탬프가 포함된 .srt
자막 파일이 생성됩니다.
7. 추가 정보 정리
오디오 포맷 자동 변환
nodejs-whisper
는 자동으로 오디오 파일을 WAV 포맷(16kHz) 으로 변환합니다. 따라서 MP3, M4A 등 다양한 포맷도 문제없이 사용할 수 있습니다.
CUDA 지원
NVIDIA GPU와 CUDA가 설치된 환경이라면 withCuda: true
로 설정해서 인식 속도를 높일 수 있습니다.
출력 포맷 다양성
whisperOptions
에서 다양한 출력 형식을 선택할 수 있습니다:
.csv
(스프레드시트 분석용).json
,.jsonFull
(프로그래밍용).lrc
(가사 파일용).srt
(자막용).vtt
(웹 자막용).wts
(워드 단위 자막 - 카라오케에 좋음)
필요한 포맷만 true
로 설정해주면 됩니다.
8. 마무리하며
Node.js 환경에서 Whisper 모델을 활용하면, 정확도 높은 음성 인식과 함께 단어별 타임스탬프까지 자동으로 추출할 수 있습니다. 특히 회의록, 자막 제작, 음성 데이터 분석 등에 매우 적합한 방식인데요.
이번 글에서 소개한 nodejs-whisper
패키지는 복잡한 설정 없이도 Whisper 모델을 바로 활용할 수 있도록 도와주기 때문에, 실무에서 바로 적용할 수 있는 도구입니다.
'Javascript' 카테고리의 다른 글
타입스크립트 type vs interface: 언제 뭘 써야 할지 헷갈린다면? (완벽 정리) (0) | 2025.04.12 |
---|---|
Node.js에서 .aspx 파일을 읽는 방법: 정적 HTML부터 서버 통합까지 (1) | 2025.04.12 |
Node.js에서 Moment.js로 타임스탬프 다루기 완전 정복 (1) | 2025.04.12 |
브라우저는 HTML을 어떻게 불러올까? DOM 생성부터 페이지 종료까지 전 과정을 알아봅니다 (0) | 2025.04.12 |
Express.js 5.0.0 정식 출시! (1) | 2025.03.31 |