-
youtube 요약.02 - whisper로 음성파일 text 변환하기Language Study/Python 2024. 11. 9. 23:34
1. 요약하려는 영상에서 음성파일 추출(yt_dlp)
2. 해당 음성 파일을 text 형식으로 변환 (whisper)
3. llama, gpt 등을 이용하여 script 내용 요약(gpt)
+ 요약된 내용을 게시 또는 정리할 수 있는 후처리 프로세스오늘은 2번 음성 파일을 텍스트로 변환하는 작업을 해보려고 한다.
텍스트 변환은 요즘 핫한 opne AI에서 제공하는 whisper를 사용했다.whipser는 3가지 방법으로 이용이 가능한데
1. 사이트
Faster Whisper Webui - a Hugging Face Space by aadnk
huggingface.co
위 링크에 들어가면 바로 사용할 수 있다.
사이트 이용은 쉽게 사용이 가능하지만, 속도가 가장 느리고, 또 오디오 30분 시간 제한이 있어 30분 이상의 영상의 자막은 못 만든다.2. 구글 코랩을 이용
구글 코랩을 이용해서 리소스를 활용할 수 있지만 비용이 발생하거나 일부 기능의 제약이 생길 수 있다.
3. 직접 설치
비용도 발생하지 않고 실제 프로젝트를 구현할 때 가장 간단하게 연동할 수 있지만 컴퓨터의 성능에 따라서 차이가 많이 발생한다.
나는 다른 API 연계 등도 필요하기 때문에 로컬에 직접 설치하여 진행했다.
먼저 설치를 진행한다.
Whisper Github
GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision
Robust Speech Recognition via Large-Scale Weak Supervision - GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision
github.com
자세한 내용은 Readme를 읽으면서 진행하면 되지만 간단하게 정리해보려고 한다.
먼저 pip install을 이용하여 pytorch, whisper를 설치한다.
pip install pytorch pip install openai-whisper pip install --upgrade --no-deps --force-reinstall git+https://github.com/openai/whisper.git
whisper 모델의 종류는 위와 같으며 사용 용도에 따라서 맞춰서 쓰면 될 것 같다.
GPU를 사용하지 않으면 무거운 모델은 시간이 오래걸린다. (모델이 커질수록 더 높은 정확도를 보여준다.)import whisper model=whisper.load_model("base") print(model.device)
이제 파이썬에서 불러와서 기본적으로 잘 동작하는지 확인했다.
위 코드 중 print(model.device)를 수행하면 현재 whisper를 gpu로 수행하는지 cpu로 수행하는지 알려준다.
pytorch 설정등이 잘 되어있으면 gpu로 수행되어야하는데....
나는 계속 cpu로만 동작했다.pytorch, python, 심지어 mac os의 버전까지 올려가면서 테스트를 진행했는데 gpu로 진행이 안되었다.
엔비디아 쿠다 환경에서 GPU로 변경하는 것에 대한 정리는 잘 되어있지만 apple silicon mac에서 방법은 많이 없어서 열심히 찾았는데 실패했다.mps로 설정하고 torch model load 설정등을 변경해봤지만 error가 나거나 계속 cpu로 동작하였다.
Lightning Whisper MLX: Whisper.cpp보다 10배 빠른 Apple Silicon(M1/M2/M3 등)용 Whisper 구현체
:pytorch:PyTorchKR🇰🇷 OpenAI에서 Whisper 모델을 공개한 이후, Whisper.cpp나 Whisper API, WhisperKit과 같이 성능이나 사용성 면에서의 여러가지 시도들이 이뤄졌습니다. 오늘 소개하는 Lightning Whisper MLX 또한
discuss.pytorch.kr
그러던 중 위 블로그에서 쉬운 해결 방법을 찾아냈다.
위 구현체를 사용하면 GPU로 수행하는 것으로 보인다. 실제 동작 시간을 비교하면 차이 발생자세한 내용은 잘 모르지만 일단 빠르게 동작하는 것에 만족했다. 아래 모델, 양자화 옵션만 조절해서 사용하면 될 것 같다.
사용 가능한 모델 옵션:
- tiny
- small
- distil-small.en
- base
- medium
- distil-medium.en
- large
- large-v2
- distil-large-v2
- large-v3
- distil-large-v3
사용 가능한 양자화 옵션
- None
- 4bit
- 8bit
from lightning_whisper_mlx import LightningWhisperMLX audio_url = "your_audio_file" whisper = LightningWhisperMLX(model="distil-medium.en", batch_size=12, quant=None) text = whisper.transcribe(audio_path=audio_url)['text'] print(text)
위 코드로 수행하면 된다.
결과로 음성을 텍스트로 잘 변환해주는 것을 볼 수 있다.
이번 작업은 가장 단순하지만 사용하는게 가장 어려웠었다. GPU를 이용해서 사용하기 위해서 다양한 방법을 시도했지만
잘되지 않았다. 엔비디아 그래픽을 사용하는 환경에서 하도록 하자...이제 남은 작업은 script를 요약하는 작업이다.
참고로 이 프로젝트에서 script의 정확도는 일부 모자라도 상관이 없다. 전체 내용을 번역 정리하는게 아니고
요약하는 것이 목적이기 때문에 일부 단어가 틀리더라도 요약하는데는 크게 영향을 주지 않을 것이기 때문이다.'Language Study > Python' 카테고리의 다른 글
Python 숫자 제곱 pow 함수 사용하기 (1) 2024.11.19 youtube 요약.03 - LLM으로 script 파일 요약하기 (4) 2024.11.14 youtube 요약.01 - yt_dlp로 youtube 음성 파일 추출하기 (5) 2024.11.08 파이썬 문자 채우기, 0채우기 (1) 2024.07.23 [기능] 파이썬 stdin 입력 (0) 2021.04.16