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}을(를) 찾을 수 없습니다.") # 오디오 파일이 없는 경우 에러 메시지 출력
아래와 같이 확인 할 수 있습니다.
Embadchain (1) | 2024.01.17 |
---|---|
Torch not complied with CUDA Enabled(Window 11) (0) | 2023.10.11 |
이미지의 투명 영역을 제외하고 바운딩 박스를 구하여 CROP하기 (0) | 2023.01.30 |
포켓몬상 테스트 만들기 - 종료 (2) | 2022.07.26 |
포켓몬상 테스트 PWA 배포 도전기!! - 종료 (0) | 2022.07.25 |
댓글 영역