OpenAI Whisper: 무료로 오디오를 텍스트로 변환하는 방법(SRT/VTT 파일 포함)
이 글은 초보자에게 Whisper를 알기 쉽게 설명하고, 이를 사용하여 무료로 오디오를 텍스트로 변환하고 캡션을 작성하는 방법을 보여드립니다!
Created on March 14|Last edited on May 30
Comment
이 글에서는 OpenAI의 Whisper를 사용하여 무료로 오디오 파일을 텍스트로 자동 변환하는 방법을 보여 드립니다. 여러분은 스크립트를 일반 텍스트 파일 또는 타임코드 데이터가 포함된 캡션(SRT 또는 VTT 파일), 심지어 TSV 또는 JSON 파일로 저장하는 방법을 알게 됩니다.
코드 및 사용 설명서로 건너뛰려면 여기를 클릭하세요!
💡
먼저 다음과 같은 질문에 답해 드리겠습니다.
마지막으로, Whisper에 대한 자세한 정보와 다양한 Whisper 모델 사이즈가 가진 오디오 텍스트 변환 성능을 비교하는 데 관심이 있는 분을 위하여2부 "Whisper 및 Weights & Biases로 오디오 변환을 추적하고 비교하는 방법"에 대한 소개로 이 글을 마무리하겠습니다.
살펴볼 내용:
Table of Contents
Whisper의 배경OpenAI의 Whisper란 무엇인가요?간략한 고지사항Whisper 소개Whisper는 얼마나 걸리나요?Whisper는 어떤 파일 형식을 처리할 수 있나요?스크립트와 캡션이란 무엇인가요?SRT/VTT 파일이란 무엇인가요?Whisper를 실행하는 방법Whisper로 오디오 텍스트 변환Whisper 스크립트를 일반 텍스트 파일로 저장하기Whisper 스크립트를 SRT/VTT 파일로 저장하기보너스: Whisper 스크립트를 TSV 또는 JSON 파일로 저장하기스크립트 예시Google Colab에서 Whisper를 실행하는 방법Google Colab이란 무엇인가요?“Whisper를 사용한 오디오 텍스트 변환” Colab요약Whisper의 오디오 텍스트 변환 추적과 비교관련 자료
Whisper의 배경
OpenAI의 Whisper란 무엇인가요?
Whisper란 2022년 9월 OpenAI가 공개한 오픈 소스 ASR 라이브러리입니다. Whisper는 오디오 또는 시청각 파일을 입력으로 사용하고, 오디오의 스크립트를 출력으로 반환합니다. 이 스크립트는 일반 텍스트 파일로 저장하거나 타임코드 데이터가 포함된 자막 파일로 저장할 수 있습니다.
Whisper가 이러한 스크립트를 생성하는 정확한 방법은 이 글의 주제를 약간 벗어나지만 간단히 말하자면 다음과 같습니다. Whisper는 680,000시간 분량의 다국어 오디오 데이터와 그 스크립트로 훈련된 딥러닝 모델입니다. 훈련 과정을 통해 Whisper는 오디오 입력을 처리하여 가장 적절하게 대응하는 텍스트 캡션을 예측하는 방법을 학습합니다.
Whisper는 5가지 사이즈로 제공되며, 각 사이즈마다 스크립트 품질, 메모리 요구사항, 상대 속도 측면에서 서로 다른 장단점이 있습니다.

간략한 고지사항
AI 기반의 자동 음성 인식(ASR) 기술은 아직 발전하는 단계이며, Whisper의 오디오 변환 기술은 완벽하지 않습니다.
스크립트에 구두점이 빠져 있거나 단어가 잘못 표기되거나, 완전히 누락되어 표기되지 않은 단어도 있을 수 있습니다.또한 Whisper에서는 화자가 구별되지 않으며, 화자가 바뀌었는지 또는 언제 바뀌었는지 표시되지 않습니다. Whisper 스크립트를 YouTube 동영상의 자막, 블로그 게시글 등에 사용하려는 경우 미리 교정하고 직접 수정하는 것이 좋습니다.
이러한 점을 감안하더라도, Whisper 스크립트는 상당히 우수하여 오디오-텍스트 변환 기술 발전에서 Whisper가 이룬 커다란 진보를 잘 보여줍니다. 더욱이 Whisper는 오픈 소스이기 때문에 일반 사용자도 최첨단 소프트웨어를 완전 무료로(!!!) 이용할 수 있습니다.
저자 노트: (2023년 2월 3일) Whisper는 현재 활발히 개발 중인 오픈 소스 라이브러리입니다. 이 글의 코드나 연동 Colab이 더 이상 유효하지 않은 경우 댓글에 남겨 주세요!
Whisper 소개
다음은 크리스토발 발렌수엘라(Cristóbal Valenzuela, Runway의 CEO 겸 공동 설립자)와 루카스 비왈드(Lukas Biewald, Weights & Biases의 CEO 겸 공동 설립자)가 진행한 인터뷰 "크리스토발 발렌수엘라 - 차세대 콘텐츠 제작과 AI" 중 초반 30초에 대해 Whisper를 실행한 예입니다.
I think a big mistake of research, specifically in the way of computational creativity, is the idea that you can automate it entirely. So you see one-click ops solutions to do X, Y, or Z. I think that's the bigger picture of how most creative work should actually work. Or that probably means that you've never actually worked with an agency where the client was asking you to change things every single hour, make it bigger, make it smaller, right? You're listening to Gradient Dissent, a show about machine learning in the real world. And I'm your host, Lukas Biewald.
Whisper는 얼마나 걸리나요?
파일 길이와 액세스할 수 있는 하드웨어 유형에 따라 다릅니다!
40분 길이의 "크리스토발 발렌수엘라(Cristóbal Valenzuela) - 차세대 콘텐츠 제작과 AI” 인터뷰에 medium.en Whisper 모델을 실행했을 때 다음과 같이 소요되었습니다.
- GPU 기반으로 약 6분
- CPU 기반으로 약 1.5시간
Whisper는 어떤 파일 형식을 처리할 수 있나요?
Whisper는 ffmpeg를 사용하여 오디오를 로드합니다. 이론적으로, ffmpeg가 지원하는 모든 오디오 또는 시청각 형식이 정상적으로 실행되어야 하지만, 다양한 형식을 광범위하게 테스트하지는 않았습니다. MP3, FLAC, WAV 파일은 확실히 지원하며, 시청각 MP4 파일도 마찬가지입니다.
스크립트와 캡션이란 무엇인가요?
오디오 텍스트 변환(Audio transcription)이란 오디오 파일이나 시청각 파일의 음성을 텍스트 형식으로 변환하는 프로세스를 말합니다. 이 프로세스에서 산출된 텍스트 문서를 스크립트(transcription)라고 합니다. 캡션(Caption)이란 스크립트와 같지만, 원본 파일의 음성에 해당 텍스트를 동기화하는 타임코드 데이터가 포함됩니다.
스크립트와 캡션은 다음과 같은 다양한 이유로 유용합니다.
- 청각 장애가 있는 사람도 오디오 콘텐츠를 이용할 수 있습니다.
- 이해하기 어려운 오디오 콘텐츠(낮은 녹음 품질, 배경 소음, 화자 발음 등)에 대한 접근성이 향상됩니다.
- 일반적으로 오디오 콘텐츠에 비해, 텍스트 콘텐츠를 훑어보거나 이해하는 것이 더 쉽고 빠릅니다.
- 텍스트 콘텐츠는 오디오 콘텐츠보다 검색하기 쉬우므로 검색 엔진에 최적이라는 장점이 있습니다.
스크립트를 수작업으로 작성하는 것은 상당히 지루한 작업이며, 캡션은 더욱 어렵습니다. 스크립트 작업은 음성을 듣고 그 내용을 활자로 입력해야 합니다. 캡션 작업은 한 술 더 떠서, 원본 파일의 각 타임스탬프(밀리초 단위까지)가 스크립트 텍스트의 어느 줄에 해당하는지 표시해야 합니다.
이러한 오디오 조각의 범위는 2~4초 길이로, 오디오/동영상이 몇 분만 되더라도 생성되는 캡션 파일의 길이가 매우 길 수 있습니다.
Run set
0
위의 그래디언트 디센트 에피소드의 경우 하드웨어 비용을 제외하고 Whisper를 사용하면 10~60달러를 절약할 수 있다는 뜻입니다.
이 글에서는 인기 있는 머신 러닝 ASR 모델 Whisper를 사용하여 고품질의 스크립트 및 캡션을 직접 생성하는 방법을 보여드립니다. 완벽하지는 않겠지만 거의 같을 것이며, 중요한 것은 무료라는 점입니다.
SRT/VTT 파일이란 무엇인가요?
캡션 파일 형식은 매우 다양하며, 가장 일반적인 형식은 SRT와 VTT입니다. 간단히 말해, VTT 파일은 더 많은 서식 옵션을 제공하고 메타데이터를 저장하기 때문에, SRT 파일보다 복잡합니다.
이 글의 맥락에서는, SRT 파일과 VTT 파일이 기능적으로 동일합니다. Whisper는 두 가지 형식의 캡션을 모두 내보낼 수 있으며, VTT가 SRT보다 더 많은 정보(서식 옵션, 메타데이터)를 저장할 수 있지만, Whisper는 캡션을 VTT 파일로 내보낼 때 추가 정보를 넣지 않습니다.
Whisper를 실행하는 방법
Whisper는 명령줄 도구나 가져올 수 있는 Python 라이브러리로 사용할 수 있습니다. 이 글에서는 Whisper Python 라이브러리에 대해 설명합니다.
Whisper로 오디오 텍스트 변환
Whisper를 사용한 오디오 텍스트 변환은 간단하며, 다음과 같이 두 가지 주요 단계만 거칩니다.
- Whisper.load_model()을 사용하여 원하는 Whisper 모델을 로드합니다
- transcribe() 메소드로 원하는 오디오 파일을 텍스트로 변환합니다
import whispermodel = whisper.load_model("base")result = model.transcribe("audio.mp3")
Whisper의 transcribe() 메소드는 세 개의 키-값 쌍이 있는 딕셔너리를 반환합니다.
- “text”: 스크립트(형식: str)
- “segments”: 세그먼트 수준의 세부 정보, 세그먼트화된 스크립트 및 타임코드 데이터 포함(형식: 딕셔너리 목록)
- “language”: 음성 언어(형식: str)
Whisper 스크립트를 일반 텍스트 파일로 저장하기
스크립트를 텍스트 파일로 저장하려면 새 텍스트 파일을 열고 "text" 키의 값을 해당 파일에 씁니다.
import whispermodel = whisper.load_model("base")audio = "audio.mp3"result = model.transcribe(audio)with open("transcription.txt", "w", encoding="utf-8") as txt:txt.write(result["text"])
이 메소드를 사용하면 강제 줄 바꿈이 포함된 일반 텍스트 파일이 생성되고 여기에서 각 명령줄은 스크립트의 '세그먼트'에 해당합니다.'세그먼트'란 Whisper가 스크립트를 캡션 크기의 짧은 부분으로 나누는 방식을 의미합니다.
이와 반대로, 간단한 write() 메소드를 사용하면 줄 바꿈이 전혀 없는 텍스트 파일이 생성됩니다.
import whisperfrom whisper.utils import get_writermodel = whisper.load_model("base")audio = "audio.mp3"result = model.transcribe(audio)output_directory = "./"# 줄 바꿈 없는 TXT 파일로 저장with open("transcription.txt", "w", encoding="utf-8") as txt:txt.write(result["text"])# 줄 바꿈이 포함된 TXT 파일로 저장txt_writer = get_writer("txt", output_directory)txt_writer(result, audio)
Run set
0
이 글과 연동 Colab에서는, write() 메소드를 사용하여 줄 바꿈 없는 스크립트를 저장하지만, 이후 write() 및 get_writer() 메소드 중에서 선택하는 것은 사용자의 사용 사례와 선호도에 따라 달라집니다.
Whisper 스크립트를 SRT/VTT 파일로 저장하기
스크립트를 SRT/VTT 파일로 저장하려면 get_writer() 함수를 사용하여 각각 WriteSRT.write_result() 및 WriteVTT.write_result() 메소드를 호출합니다.
import whisperfrom whisper.utils import get_writermodel = whisper.load_model("base")audio = "audio.mp3"result = model.transcribe(audio)output_directory = "./"# SRT 파일로 저장srt_writer = get_writer("srt", output_directory)srt_writer(result, audio)# VTT 파일로 저장vtt_writer = get_writer("vtt", output_directory)vtt_writer(result, audio)
보너스: Whisper 스크립트를 TSV 또는 JSON 파일로 저장하기
2023년 11월 말, OpenAI는 스크립트를 TSV(Tab-Separated Values, 탭 구분 값) 파일로도 저장할 수 있도록 옵션을 추가했습니다! 다른 형식과 마찬가지로, get_writer()를 사용하여 WriteTSV.write_result()를 호출하면 됩니다.
생성된 TSV 파일은 SRT 및 TSV 파일과 같이 여러 개의 세그먼트로 나누어지며 다음 세 가지 열이 있습니다.
- start: 세그먼트의 시작 시간(정수값의 밀리초)
- end: 세그먼트의 종료 시간(정수값의 밀리초)
- text: 세그먼트의 스크립트
Whisper는 JSON 파일로 저장하는 기능도 지원합니다:
import whisperfrom whisper.utils import get_writermodel = whisper.load_model("base")audio = "audio.mp3"result = model.transcribe(audio)output_directory = "./"# TSV 파일로 저장tsv_writer = get_writer("tsv", output_directory)tsv_writer(result, audio)# JSON 파일로 저장json_writer = get_writer("json", output_directory)json_writer(result, audio)
스크립트 예시
다음은 medium.en 모델을 사용하여 "크리스토발 발렌수엘라(Cristóbal Valenzuela) - 차세대 콘텐츠 제작과 AI"에서 medium.en Whisper 모델을 실행한 결과를 다양한 형식으로 저장한 예시입니다.
Google Colab에서 Whisper를 실행하는 방법
그러면, 실제 파일에서 Whisper를 어떻게 실행할까요? Whisper Python 라이브러리를 사용하므로 Google Colab과 같은 로컬 또는 클라우드 기반 Python 환경을 설정해야 합니다. 프로그래밍이나 머신 러닝에 새로 입문한 경우 Colab을 통해 Whisper를 사용하는 것이 가장 좋습니다.
Python을 설치하고 적절한 환경을 설정하는 작업이 어려울 수 있지만, Colab이 거의 모든 작업을 대신 해줍니다.
Google Colab이란 무엇인가요?
Google Colab(Colaboratory의 축약어)은 Google이 무료로 제공하는 Jupyter 노트북 및 컴퓨팅 환경입니다. 별도의 Python 개발 환경을 설치할 필요 없이 브라우저 기반의 Colab 노트북에서 Python 코드를 작성하고 실행할 수 있습니다.
Google Docs와 마찬가지로 Google Colab은 클라우드 기반입니다.Colab 노트북(짧게 'Colab')은 사용자의 Google 드라이브 계정에 저장되며, 단일 링크로 공유할 수 있고, 여러 사람이 편집할 수 있으며, 어디서나 액세스할 수 있습니다. 또한 Colab을 사용하면 실행 가능한 코드 블록을 서식 있는 텍스트 및 이미지와 결합하고 동적인 대화형 문서를 만들 수 있습니다.
Colab을 사용하면 즉시 코드를 작성하고 실행할 수 있으며, 어디서도 사용할 수 없는 강력한 컴퓨팅 성능에 액세스할 수 있습니다. GPU 사용은 Whisper의 파일 변환 시간에 큰 차이를 만들 수 있습니다!
💡
“Whisper를 사용한 오디오 텍스트 변환” Colab
Whisper를 사용하여 변환할 때 필요한 모든 코드가 포함된 Colab이 제공됩니다! 세 가지 유형의 파일을 세 가지 출력 형식으로 변환할 수 있습니다.
- 입력 가능한 유형
- YouTube 동영상(제공하는 URL을 통해 오디오 스트림을 다운로드한 다음 변환)
- Google 드라이브 계정의 파일
- 이 Colab에 업로드한 로컬 파일
- 출력 가능한 형식
- 일반 텍스트 파일
- SRT 파일
- VTT 파일
- TSV 파일
Colab 링크
Colab 사용
- 옵션: 로컬 파일을 변환하려면 먼저 해당 파일을 Colab에 업로드해야 합니다. YouTube 동영상이나 Google 드라이브 계정에 있는 파일을 변환하는 경우 이 단계가 필요하지 않습니다.
- 왼쪽 메뉴의 폴더 아이콘을 클릭하여 파일 탭을 엽니다. 그런 다음, 업로드 아이콘을 클릭하여 원하는 파일을 업로드합니다. 파일을 끌어다 놓아 업로드할 수도 있습니다. 이 파일은 Colab 런타임 연결이 끊어지면 삭제됩니다.
- “ Change the values in this section(이 섹션의 값 변경)” 블록의 변수 값을 변경하세요.
- Runtime > Run all(런타임 > 모두 실행)을 클릭하세요. 이제 됐습니다!
- 옵션: 스크립트를 다운로드합니다.
- download = True로 설정한 경우, Colab이 지정된 스크립트/캡션 파일을 자동으로 다운로드합니다. 하지만 이렇게 설정되지 않은 경우 나중에 변환된 파일을 다운로드할 수도 있습니다! 단, 파일은 런타임과 함께 삭제되므로 Colab 연결을 끊기 전에 반드시 다운로드해야 합니다.
- 1단계에서와 같이, 폴더 아이콘을 클릭하여 파일 탭을 엽니다. 그런 다음, 원하는 파일 오른쪽에 있는 케밥 메뉴 아이콘을 클릭하고 다운로드를 선택합니다.
요약
축하합니다, 튜토리얼을 완료하셨습니다!
이 글에서는 Whisper를 사용하여 오디오를 텍스트로 변환하고 해당 스크립트를 텍스트 파일 또는 SRT/VTT 파일로 저장하는 법을 알아 보았습니다.
Whisper의 오디오 텍스트 변환 추적과 비교
이제 다양한 Whisper 모델이 어떻게 다른지 궁금하실 것입니다. 이 글과 Colab에서는 중간 사이즈의 영어 전용 모델을 사용했지만 더 큰 모델과 더 작은 모델도 있습니다.
다음 글에서는, 머신 러닝 프로젝트 및 워크플로우에 필요한 도구 모음인 Weights & Biases를 사용하여 다양한 Whisper 모델의 결과를 비교하고 추적하는 방법에 대해 자세히 알아보겠습니다.
읽어 주셔서 감사드리며 계속해서 함께 해 주세요!
저자 노트: 안녕하세요, Weights & Biases의 테크니컬 라이터 안젤리카입니다. 저희는 머신 러닝을 위한 툴을 개발하고 있습니다. 이 글이 재미있으셨다면, Twitter 또는 YouTube에서 저희를 팔로우하세요 :)
관련 자료
Whisper에 대해 재미있게 알아보셨다면, Whisper 파인튜닝에 관한 다음 글도 읽어보세요.
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.