-
youtube 요약.01 - yt_dlp로 youtube 음성 파일 추출하기Language Study/Python 2024. 11. 8. 18:38
youtube 내용을 요약하는 토이 프로젝트를 혼자 해보고 있었는데 간단하지만 다양한 모듈을 사용한 것 같아서 하나씩 정리해보려고한다.(나중에 정리하는 특성상 그대로 따라해도 안될 수 있음...)
환경은 MAC 언어는 Python으로 구현해보았다.
먼저 youtube 내용을 요약하기 위해서 필요한 단계를 3단계 정도로 압축했다.
1. 요약하려는 영상에서 음성파일 추출(yt_dlp)
2. 해당 음성 파일을 text 형식으로 변환 (whisper)
3. llama, gpt 등을 이용하여 script 내용 요약(gpt)
+ 요약된 내용을 게시 또는 정리할 수 있는 후처리 프로세스위 순서를 바탕으로 정리할 생각이다.
요약하려는 영상에서 음성파일 추출
먼저 youtube 영상 다운로드, 음성 파일 추출을 위해서는 yt_dlp라는 파이썬 모듈을 사용해야한다.
pip install yt_dlp 로 yt_dlp module을 설치해준다.
추가적으로 ffmpeg를 설치해야하는 경우도 있다.import yt_dlp youtube_url = "your_youtube_url" def download_audio(url, output_path='file_name'): ydl_opts = { 'format': 'bestaudio/best', 'postprocessors': [{ 'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3', 'preferredquality': '192', }], 'outtmpl': output_path, 'quiet': True, } try: with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download([url]) return output_path + ".mp3" except Exception as e: print(f"An error occurred: {e}") return None download_audio(youtube_url)
코드는 위 처럼 구현하였다. 추가적으로 2번, 3번을 진행하기 위하여 해당 기능은 함수로 구현했다.
yt_dlp.YoutubeDL class의 download함수를 이용하여 구현하였는데 자세한 변수와 구조는
https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/YoutubeDL.py 깃허브를 참조하도록 하자.간단하게 설명하면
함수의 인자로는 다운 받을 youtube의 url과 파일 경로를 받아준다.
'format' : 다운받을 형식 위 코드에서는 audio, video 등으로 지정 가능
'postprocessors' : 코덱, 음성파일의 음질 등을 표시할 수 있다. 여기서는 audio추출, mp3, 192kbps로 설정했다.
추가적으로 download 위치(파일 경로 + 파일명) 등을 지정해주면 된다.하위 try문은 error 처리를 위한 문구로 간단하게 yt_dlp.YoutubeDL(ydl_opts).download([url]) 도 동일하게 작동할 것이다.
처음 변수로 줬던 url과 파일명을 이용하여 음성을 down 받았다.
특별히 경로를 지정하지 않으면 .py 코드가 돌아가는 곳에 파일이 받아진다.
받은 후 audio가 정상적으로 재생되면 된다.이제 이 음성파일을 text 형식으로 추출하고 요약하는 작업만 남았다.
좀 더 디테일하게 함수의 변수들을 사용하기 위해서는 찾아볼게 많아 조금 복잡할 수 있지만 단순히 실제 사용만 하는 것은 어렵지 않았다.'Language Study > Python' 카테고리의 다른 글
youtube 요약.03 - LLM으로 script 파일 요약하기 (4) 2024.11.14 youtube 요약.02 - whisper로 음성파일 text 변환하기 (4) 2024.11.09 파이썬 문자 채우기, 0채우기 (1) 2024.07.23 [기능] 파이썬 stdin 입력 (0) 2021.04.16 [기능] 파이썬 순열, 조합 (Permutations, Combinations) (0) 2021.04.06