-
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. 사이트
위 링크에 들어가면 바로 사용할 수 있다.
사이트 이용은 쉽게 사용이 가능하지만, 속도가 가장 느리고, 또 오디오 30분 시간 제한이 있어 30분 이상의 영상의 자막은 못 만든다.2. 구글 코랩을 이용
구글 코랩을 이용해서 리소스를 활용할 수 있지만 비용이 발생하거나 일부 기능의 제약이 생길 수 있다.
3. 직접 설치
비용도 발생하지 않고 실제 프로젝트를 구현할 때 가장 간단하게 연동할 수 있지만 컴퓨터의 성능에 따라서 차이가 많이 발생한다.
나는 다른 API 연계 등도 필요하기 때문에 로컬에 직접 설치하여 진행했다.
먼저 설치를 진행한다.
Whisper Github
자세한 내용은 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로 동작하였다.
그러던 중 위 블로그에서 쉬운 해결 방법을 찾아냈다.
위 구현체를 사용하면 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