상세 컨텐츠

본문 제목

Whisper API 유튜브TEXT 추출하기(STT)

AI/개발도구

by cepiloth 2023. 11. 9. 12:09

본문

728x90
반응형

Whisper는 OpenAI에서 개발한 자동 음성 인식 엔진으로, 다양한 음성 데이터를 텍스트로 변환할 수 있는 강력한 도구입니다. Whisper를 사용하기 위해 아래와 같이 환경을 구축할 수 있습니다.

 

환경구성


Python 3.7 이상 설치

Python 공식 웹사이트(https://www.python.org/downloads/)에서 적절한 Python 버전(3.7 이상)을 다운로드하고 설치합니다. Python 3.8.10 버전을 사용하는 것을 추천합니다.
PyTorch 설치

PyTorch는 딥 러닝 라이브러리로 Whisper를 실행하기 위해 필요합니다. PyTorch의 설치는 공식 웹사이트(https://pytorch.org/get-started/locally/)를 참고하여 본인의 시스템 환경에 맞는 버전을 설치합니다.
nVIDIA GPU가 없는 경우, 다음 명령어를 사용하여 설치합니다:

pip3 install torch torchvision torchaudio


nVIDIA GPU가 있는 경우, CUDA 및 CUDNN을 활성화하려면 관련 블로그를 참고하고 설치합니다.

 

FFMPEG 설치

FFMPEG는 영상 및 오디오 처리 도구로 Whisper가 음성 데이터를 처리하는 데 필요합니다. https://www.gyan.dev/ffmpeg/builds/에서 ffmpeg-release-essentials.7z 파일을 다운로드하고 적절한 위치(예: C:\Program Files\ffmpeg)에 압축을 해제합니다.윈도우 환경 변수의 Path에 위 경로의 \bin 경로를 추가하여 명령 프롬프트에서 "ffmpeg"를 실행할 수 있도록 설정합니다.

 

Whisper 모듈 설치

Whisper 모듈은 Git 저장소에서 설치할 수 있습니다. 다음 명령어를 사용하여 설치합니다.

pip install git+https://github.com/openai/whisper.git

이렇게 환경을 구축하면 Whisper를 사용할 수 있으며, 녹음된 음성 파일을 텍스트로 변환하는 응용 프로그램을 개발하거나 사용할 수 있습니다. OpenAI의 Whisper 블로그(https://openai.com/blog/whisper/)에서 자세한 정보를 얻을 수 있습니다.

 

지원 범위


Whisper는 다양한 모델 크기와 언어 지원을 제공하는 음성 인식 엔진입니다. 이 엔진은 다양한 언어를 인식할 수 있으며, 한국어 또한 지원됩니다.

모델 크기

Whisper는 다양한 모델 크기를 제공합니다. 이 모델 크기는 tiny, small, medium, large로 나뉩니다. 각 모델 크기에 따라 인식 품질과 필요한 GPU 메모리 용량이 다릅니다.
예를 들어, 한국어의 경우, small 모델부터 품질이 나아지며, medium 모델은 품질이 더 좋아집니다. 그러나 GPU 메모리 용량에 제한이 있다면, 1050Ti 4GB와 같은 GPU에서는 small 모델까지만 CUDA 가속을 사용할 수 있습니다.

SizeParametersEnglish-only modelMultilingual modelRequired VRAMRelative speed

tiny 39 M tiny.en tiny ~1 GB ~32x
base 74 M base.en base ~1 GB ~16x
small 244 M small.en small ~2 GB ~6x
medium 769 M medium.en medium ~5 GB ~2x
large 1550 M N/A large ~10 GB 1x

 

언어 지원

Whisper는 다중 언어 모델로 영어 및 다른 언어를 지원합니다. 한국어 또한 인식이 가능합니다. 영어의 경우, base나 small 모델로도 어느 정도 인식이 가능하지만, 한국어는 품질이 나빠 small 모델로는 제한적일 수 있습니다.

 

CUDA 가속

CUDA 가속은 GPU를 사용하여 Whisper를 더 빠르게 실행하는 기술입니다. 그러나 GPU 메모리 용량에 제한이 있다면, CUDA 가속이 가능한 모델 크기에 맞게 선택해야 합니다.
사용 방법:

 Whisper의 상세한 사용 방법은 공식 GitHub 페이지(https://github.com/openai/whisper#readme)에서 확인할 수 있습니다. 이 페이지에는 Whisper를 설치하고 다양한 언어 및 모델 크기로 음성을 텍스트로 변환하는 방법에 대한 설명이 제공됩니다.


기술적인 부분을 이해하기 쉽게 설명하자면, Whisper는 다양한 언어를 인식하고 텍스트로 변환할 수 있는 음성 인식 엔진입니다. 모델 크기와 GPU 메모리는 인식 품질과 성능에 영향을 미치며, 사용하려는 언어에 따라 적절한 모델 크기를 선택해야 합니다. CUDA 가속을 사용하면 빠르게 실행할 수 있지만, GPU 메모리가 필요하므로 시스템에 맞게 설정하세요. 자세한 사용 방법은 위의 GitHub 페이지에서 확인할 수 있습니다.

 

 

코드 구현


import os
import yt_dlp  # YouTube 다운로더 라이브러리
import whisper  # OpenAI의 Whisper 음성 인식 라이브러리

# YouTube 동영상 다운로드 함수
def download_video(video_id):
    video_url = f'https://www.youtube.com/shorts/{video_id}'  # YouTube 동영상 URL 생성
    output_path = f'audio/{video_id}'  # 다운로드된 오디오 파일의 저장 경로

    if not os.path.isfile(output_path):  # 파일이 이미 존재하지 않는 경우
        ydl_opts = {
            'format': 'm4a/bestaudio/best',  # 최상의 오디오 포맷 설정
            'outtmpl': output_path,  # 다운로드한 파일의 저장 경로 설정
            'postprocessors': [{
                'key': 'FFmpegExtractAudio',
                'preferredcodec': 'mp3',  # 다운로드한 오디오를 mp3 포맷으로 변환
            }]
        }
        with yt_dlp.YoutubeDL(ydl_opts) as ydl:
            error_code = ydl.download([video_url])  # 동영상 다운로드 실행
            if error_code != 0:  # 다운로드 중 오류가 발생한 경우
                raise Exception('동영상 다운로드에 실패했습니다.')
    return output_path + ".mp3"  # 다운로드한 오디오 파일의 경로 반환

# 오디오 파일을 텍스트로 변환하는 함수
def transcribe_audio(audiofile):
    model = whisper.load_model("large")  # Whisper에서 "large" 모델 로드
    result = model.transcribe(audiofile)  # 오디오 파일을 텍스트로 변환
    return result["text"]  # 변환된 텍스트 반환

if __name__ == "__main__":
    # YouTube 동영상 ID
    youtube_video_id = "Q49z-vcvdHQ"
    file_path = download_video(youtube_video_id)  # 동영상 다운로드 및 오디오 파일 경로 반환

    # 텍스트로 변환할 언어 설정
    language = "ko"  # 한국어로 설정

    if os.path.isfile(file_path):  # 다운로드한 오디오 파일이 존재하는 경우
        transcription = transcribe_audio(file_path)  # 오디오 파일을 텍스트로 변환
        print(transcription)  # 변환된 텍스트 출력
    else:
        print(f"파일 {file_path}을(를) 찾을 수 없습니다.")  # 오디오 파일이 없는 경우 에러 메시지 출력

아래와 같이 확인 할 수 있습니다.

728x90
반응형

관련글 더보기

댓글 영역