ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 형식으로 추출하고 요약하는 작업만 남았다.
    좀 더 디테일하게 함수의 변수들을 사용하기 위해서는 찾아볼게 많아 조금 복잡할 수 있지만 단순히 실제 사용만 하는 것은 어렵지 않았다.

    댓글

From BlackHair