FFmpeg 8.0, Whisper 지원 추가
(code.ffmpeg.org)- FFmpeg 8.0 버전은 Whisper 음성 인식 모델 지원 기능을 공식적으로 추가함
- Whisper는 OpenAI가 개발한 오픈소스 음성 인식 모델로, 다양한 언어 자동 음성 변환에 사용됨
- 이 기능 도입으로 비디오 및 오디오 처리 작업에서 직접 음성-텍스트 변환 워크플로우 자동화 가능성 증대
- 개발자들과 미디어 자동화 분야에서 FFmpeg 활용성 및 효율성이 크게 강화됨
- 최신 음성 인식 기능을 내장하면서 추가적인 외부 도구나 복잡한 통합 과정 부담을 줄임
FFmpeg 8.0의 Whisper 지원 개요
- FFmpeg 8.0 버전은 Whisper 음성 인식 모델 지원을 추가함으로써 다양한 언어로 음성 데이터를 텍스트로 자동 변환하는 기능을 제공함
- Whisper는 OpenAI가 만든 딥러닝 기반 알고리듬을 활용해, 높은 정확도의 음성-텍스트 변환 성능을 보장함
- 기존 FFmpeg 사용자는 외부 도구를 거치지 않고, 내장된 Whisper 지원 기능을 통해 비디오 및 오디오 파일에서 자막을 생성하거나 음성 내용을 추출할 수 있는 편의성을 얻게 됨
Whisper 통합의 주요 이점
- Whisper 통합으로 인해, FFmpeg 기반의 미디어 처리 및 자동화 파이프라인에서 효율적이고 확장성이 높은 음성 인식 워크플로우 구현이 가능해짐
- 음성 인식 알고리듬이 내장됨에 따라 개발자는 복잡한 추가 연동 작업이나 별도 스크립트 작성 부담 없이,간단한 명령만으로 음성 텍스트 변환 결과를 얻을 수 있는 장점이 있음
FFmpeg와 Whisper 조합의 산업적 의의
- 방대한 미디어 자산 관리, 자막 생성, 영상 데이터 아카이빙 등 다양한 분야에서 FFmpeg + Whisper의 조합은 비용 효율성과 자동화를 동시에 실현할 수 있는 강점을 가짐
- 기존에는 별도의 오픈소스 음성 인식 도구를 FFmpeg와 연동해야 했으나, 이제는 FFmpeg 본체에서 직접 처리함으로써 워크플로우 단순화 및 처리 속도 향상 효과를 기대할 수 있음
기술적 세부 사항
- FFmpeg에 Whisper.cpp 라이브러리를 기반으로, FFmpeg 내부에서 바로 자동 음성 인식(ASR) 을 수행하는 오디오 필터가 추가
-
--enable-whisper
옵션으로 활성화 가능하며, 모델 경로(model
)는 필수 지정 - 주요 옵션: 언어 설정(language), GPU 사용 여부(use_gpu), 큐 크기(queue), 출력 형식(format: text/srt/json), VAD(음성활동검출) 모델 및 임계값 설정 등
- queue 값을 작게 하면 실시간성이 높지만 정확도가 떨어지고 CPU 부하 증가, 크게 하면 정확도가 높지만 지연이 커짐
- destination 옵션으로 출력 파일·URL·메타데이터에 결과 저장 가능하며, AVIO 프로토콜도 지원함
- 예제로 SRT 자막 생성, JSON 형식 HTTP 전송, 마이크 입력 실시간 전사(VAD 사용) 시나리오 포함
-
SRT 자막 파일 생성 예제
ffmpeg -i input.mp4 -vn \ -af "whisper=model=../whisper.cpp/models/ggml-base.en.bin:language=en:queue=3:destination=output.srt:format=srt" \ -f null -
-
SRT 자막 파일 생성 예제
Hacker News 의견
- Whisper는 진짜 놀라운 도구임을 경험했음, 적절한 프롬프트를 주면 삶이 긍정적으로 달라지는 경험을 가질 수 있었음
Subtitle Edit를 추천하고 싶음(개발자에게 후원도 괜찮음). Subtitle Edit는 Whisper로 실험하며 쓰기 좋은 인터페이스임. 예전 Aegisub을 써본 이용자라면 Subtitle Edit를 Aegisub 2.0이라 부를 만함
HOWTO: 영상이나 오디오 파일을 오른쪽 창에 드래그한 후, Video > Audio to text (Whisper)로 감. 나는 보통 Faster-Whisper-XXL이 제일 성능 좋았음. 가능하다면 large-v2 쓰는 걸 추천(large-v3는 오히려 몇몇 회귀 있음). 완벽하진 않지만, Subtitle Edit의 Tools > Fix common errors 같은 기능으로 충분히 수정 가능함
Nvidia 최신 그래픽카드라면 "--compute_type float32"를 입력해야 정상 작동 가능함. 오류가 난다면, torch 라이브러리를 아래 명령어처럼 특정 인덱스로 재설치하는 게 필요할 수 있음
이런 오류가 해결된다면, 어떤 문제와 해결법이었는지 댓글로 남겨 주면 다른 분들께 도움될 듯함(웹 검색에도 활용됨)pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 uv pip install --system torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
Subtitle Edit 홈페이지
Subtitle Edit 개발자 후원 페이지
Subtitle Edit 최신 버전 releases- uv에서 torch 관련 패키지를 설치할 때 cuda 드라이버에 맞는 텐서 버전을 자동 선택해줌. 다만 시스템 파이썬이 아니라 가상환경(venv)에서 쓰는 게 좋음
다음 명령어로 자동 백엔드 선택 가능
uv pip install torch torchvision torchaudio --torch-backend=auto
자세한 안내 참고 링크
torch 관련 패키지는 torch 인덱스에서, 나머지는 PyPI에서 각각 다운로드하므로 충돌 걱정 없음 - Aegisub도 여전히 fork되어 개발 진행 중임. 두 소프트웨어는 별도 성격이라 비교하기 어렵고 보완적으로 쓸 수 있음. Subtitle Edit가 실제 전사(트랜스크립션)엔 훨씬 적합하고, Aegisub은 타이포그래피 작업 등에서 여전히 강점이 있음
- Subtitle Edit가 훌륭하지만 하드웨어(Python, Nvidia GPU 등) 제약이 있을 수 있음. GPU가 없거나 서버 구성이 부담된다면, lemonfox.ai 같은 간단하면서 저렴한 API도 선택지임
- Whisper로 인해 삶이 크게 좋아졌다는 점을 구체적으로 예시 들어줄 수 있는지 궁금함
- Whisper의 성능이 매우 좋은데, 왜 YouTube의 자동 자막은 아직도 좋지 않은지 궁금함. Whisper의 가장 작은 모델도 Google의 솔루션보다 나은데, 혹시 라이선스 이슈인지 대규모 배포의 어려움 때문인지 질문해봄
- uv에서 torch 관련 패키지를 설치할 때 cuda 드라이버에 맞는 텐서 버전을 자동 선택해줌. 다만 시스템 파이썬이 아니라 가상환경(venv)에서 쓰는 게 좋음
- 로컬 트랜스크립션이 더 다양하게 활용된다면, 영상 제작자들이 번쩍이고 방해되는 자막을 영상에 직접 구워 넣는 행위를 자제할 수 있기를 바람
전문적으로 제작된 기술 영상에서도 불필요하게 제거 불가 자막을 넣는 경우를 봤음. 고양이 동영상이 아닌데 그러는 건 너무 과함
로컬 트랜스크립션을 쓰면 자동 번역이 가능하고, 이미 구워진 자막 위에 또 자막을 띄워야 하는 불편한 경험도 해결됨- 영상에 번인 자막을 넣는 건 사용자 경험보다는 '참여도(engagement)'를 높이려는 목적이 크다는 점을 지적함
- 굳이 비교하자면, 예전에 팬들이 만들어내던 애니 오프닝용 테마 자막이 요즘 영상의 번인 자막보다 훨씬 멋졌다고 생각함
- 결국엔 알고리즘의 영향이 큼. 모든 기기에서 실시간 100% 정확한 자막이 생겨도, 영상이 더 퍼포먼스가 잘 나오면 번인 자막을 계속 넣을 거라고 봄
- 번인 자막은 언어 변경이 불가능하다는 문제가 있음
- 이 현상은 유튜브의 '사운드 없는 자동재생' 기능도 일부 원인임. 구워진 자막이 사람들이 영상에 끌려 들어오게 도움이 됨
- Whisper가 오디오 전사 모델인데, 듣는 도중에 앞부분 내용을 나중에 다시 수정하는 능력이 있는지 궁금함
예를 들어 “I scream”과 “Ice cream”처럼 발음이 비슷한데 의미는 아예 다른 경우, 긴 문맥이 뒤에 나온 정보를 근거로 앞의 텍스트 결과를 바꿀 수 있는지 확인하고 싶음
이런 방식이 실시간성 + 정확도 모두를 잡을 수 있는 필요 조건이라 생각함. 실제로 Android에서의 트랜스크립션에서는 말을 할 때 그때그때 텍스트를 조정하는 걸 봤음- 내가 제일 좋아하는 논문 제목을 추천함
"How to wreck a nice beach you sing calm incense"
논문 링크 - 사람 자막가나 각본가는 의도적으로 애매한 말, 언어유희, 스토리상 오해가 중요한 대사를 어떤 식으로 텍스트화할지 늘 고민하지 않을까 생각함. 들은 걸 표현하는 것과 원문(말한 것) 자체를 쓰는 것이 다름
선천적으로 청각 장애가 있는 분들은 말소리의 언어유희(언어적 장난, 운율 등)를 이해/제작하기 위해 따로 연구할까 궁금함
이건 마치 경험적 감각 없이 추상 수학을 다루는 느낌일 것, 다만 수학자들도 그들의 추상에서 음악처럼 체험적 현상을 만들어낸다고 주장하니 이것도 흥미로운 부분임 - Whisper는 30초 청크로 동작함. 이런 네트워크 구조 덕분에 앞/뒤 문맥을 보고 결과를 바꿀 수 있음. 하지만 이 때문에 망상(hallucination)도 많이 발생함
- “I scream”은 “ice cream”보다 ‘I’ 발음이 강조되는 것 같음. 하지만 맥락이 꼭 필요하다는 의견에 동의함
- 이 주제에 대해 궁금하다면 Stanford의 “Speech and Language Processing” 교재 16.3장 이후 챕터를 추천함
해당 pdf 링크
Whisper 구조를 내가 잘 알진 못하지만, 일반적으로 ASR 모델은 디코더가 현재 청크 이후의 소리도 참고해서 문맥을 이해하게 됨. 그래서 “I like ice cream” 같이 문법적으로 자연스러운 형태를 추론하도록 언어모델로 보정함
- 내가 제일 좋아하는 논문 제목을 추천함
- 관련해서, 이 패치를 만든 저자가 쓴 블로그 추천
Run Whisper audio transcriptions with one FFmpeg command - FFmpeg에 더 다양한 ML 기반 필터가 추가되는 시작이길 바람
예전엔 sr(super resolution) 필터가 추가되었지만 오래돼서 가중치 얻는 것도 복잡하고, 여러 ML 라이브러리(libtorch 등) 지원이 추가되었지만 시작도 쉽지 않음
차라리 ready-to-use 모델들을 “models” 폴더에 모아두고 업스케일, 노이즈캔슬, 시계열 업스케일 등 다양한 모델을 빠르게 쓸 수 있었으면 좋겠음
요즘 오디오·비디오 필터 연구 대부분이 ML 기반이고, 새로운 코덱들도 아마 ML 기반이 될 가능성이 높음 - 여기서 말하는 Whisper가 OpenAI에서 만든 음성 인식 AI 모델이 맞는가?
Whisper 위키피디아 설명 참고- 맞음, 또 C++ 구현도 존재함 whisper.cpp 깃허브
- 맞음. 문서에서 직접 인용
It runs automatic speech recognition using the OpenAI's Whisper model.
- 완전하게는 아니고, '오디오 전사 모델 패밀리'임(여러 버전과 모델군)
Whisper 전체 모델 리스트
- Whisper에 대해 전혀 모르는데, 자동 번역(특히 일어→영어)에도 쓸 수 있는지 궁금함
아주 오래된 일본 영화를 갖고 있는데, 영어 번역본이 없어서 보지를 못함
예전에 번역가를 Fiverr에서 알아봤는데, 공식 단가로 따지면 수천 달러, 협상해서 수백 달러까지 낮췄지만 결국 연락이 두절됨- Whisper는 확실히 일본어를 영어로 전사·번역할 수 있음
품질은 방언·오디오 품질에 따라 다르고, "large-v3" 모델이 최고 결과를 냄
다음과 같은 커맨드로 ffmpeg 통합 기능 사용 가능
ffmpeg -i movie.mp4 -af whisper=model=large-v3:task=translate output.srt
- 내 경험으론 대체로 쓸 만했음
“영어” 모델도 실제론 다양한 언어를 지원하며 영어로 바로 번역해줌
또, 일단 일본어로 전사 후 다른 번역기를 사용해 영어로 옮기는 것도 가능함. 의미적으로 복잡한 대화라면 이 방법이 더 나을 때도 있음
예시)
직접 번역:
일본어→영어:faster-whisper-xxl.exe --language English --model large-v2 --ff_vocal_extract mdx_kim2 --vad_method pyannote_v3 --standard
whisper-standalone-win 참고 링크faster-whisper-xxl.exe --language Japanese --task translate --model large-v2 --ff_vocal_extract mdx_kim2 --vad_method pyannote_v3 --standard
- 내 경험으론 트랜스크립션(전사)은 완전히 실패했음
오디오에 없는 내용을 만드는 경우가 많았고, 영상 속 여러 언어가 섞이면 완전히 혼란스러워함
문맥을 전혀 이해 못해서, 유튜브 같은 자동 번역에서 볼 수 있는 오류가 자주 보임 - Whisper로 일본어 영상의 자막화 및 번역(영어만)도 가능함
성능 최상은 가장 큰 모델을 사용할 때 가능하지만, 하드웨어에 따라 속도가 달라짐
또 다른 방법은 VideoToTextAI 처럼 자막 추출→100+개 언어 번역→SRT 파일로 저장하는 방식도 있음 - Whisper는 망상(hallucination)이 심각함
존재하지 않는 문장을 무작위로 추가하는 경우가 많음
클래스 분류엔 쓸 만하지만, 자막 전사에서는 부족함
- Whisper는 확실히 일본어를 영어로 전사·번역할 수 있음
- Apple의 곧 출시 예정인 speech API도 ffmpeg에 추가될 수 있을지 궁금함
모델 소싱 없이 Mac에서 바로 동작한다면 좋을 듯
SpeechTranscriber 문서
SpeechAnalyzer 문서
실사용 리뷰 및 Whisper와의 비교 - 이번 PR/패치의 유일한 문제는 whisper.cpp 라이브러리의 avfilter 래퍼만 제공할 뿐이고, 사용자가 종속성 관리를 스스로 해야 한다는 점임
즉,
1. whisper.cpp git clone
2. 그 라이브러리 종속성 설치
3. 빌드 성공
4. 실제 모델 다운로드
이후에야-af "whisper=model...
필터를 사용할 수 있음
사전작업이 없으면 실패하고, 입문자에게 큰 좌절감일 것임
차라리 Whisper avfilter를 네이티브로 만들고, 모델만 다운로드하도록 하는 게 더 효율적이고 실제 사용자도 훨씬 많아질 거라고 생각함- 엔드유저 입장에서는 더 좋겠지만, FFmpeg 측에서는 유지보수 측면에서 어려움이 큼
whisper-cpp 프로젝트의 변화 속도를 생각해야 함
다른 필터(vmaf 등)처럼 종속성 빌드와 모델 다운로드가 필요한 경우, 곧 입문자를 위한 precompiled binary도 제공될 것으로 예상함(whisper-cpp가 MIT 라이선스이기도 함)
- 엔드유저 입장에서는 더 좋겠지만, FFmpeg 측에서는 유지보수 측면에서 어려움이 큼
- 나는 FFmpeg와 Whisper를 활용해 우리 도시의 경찰 스캐너 실황 오디오를 실시간으로 녹음·트랜스크립트하고 웹사이트에 곧바로 업데이트하고 있음
오류나 망상은 있지만 원하는 수준으로 잘 작동함- 웹사이트가 공개되어 있다면 꼭 보고 싶음
- 나는 이 기능을 우리 지역 카운티 협의회 회의에 적용해보고 싶었음
이런 상황에서는 화자 인식(speaker recognition)이 특히 중요할 것으로 봄