GPT-3 및 Whisper를 사용하여 모든 언어의 YouTube 동영상 요약 생성 😀

이 게시물에서는 속삭임과 GPT-3를 사용하여 모든 언어로 YouTube 동영상의 짧은 요약을 생성하는 방법에 대해 알아봅니다. 데모 비디오를 볼 수 있습니다here.


필요한 기술


  • Streamlit (웹앱 구축)
  • Whisper (OpenAI 음성 인식 모델)
  • OpenAI GPT-3 API (본 서비스 이용을 위한 API Key)
  • 파이썬

  • 설정 필요


  • 다음 명령을 사용하여 Whisper 및 Streamlit을 설치합니다.

  • pip install git+https://github.com/openai/whisper.git 
    pip install streamlit
    


  • FFMPEG 설치

  • # on Ubuntu or Debian
    sudo apt update && sudo apt install ffmpeg
    
    # on Arch Linux
    sudo pacman -S ffmpeg
    
    # on MacOS using Homebrew (https://brew.sh/)
    brew install ffmpeg
    
    # on Windows using Chocolatey (https://chocolatey.org/)
    choco install ffmpeg
    
    # on Windows using Scoop (https://scoop.sh/)
    scoop install ffmpeg 
    


    코드 작성 시작


  • Python 파일에서 패키지 가져오기 시작

  • import streamlit as st;
    import openai
    from pytube import YouTube 
    import whisper
    


  • OpenAI API 서비스 설정

  • openai.organization = ""
    openai.api_key = 'sk-*****kpeKyzuPRIT3Bl***************' # replace with your own key
    


  • Streamlit을 사용하여 WebApp의 UI 구축

  • with st.container():
        st.header("Youtube Summary")
        st.title("Get the summary of any YouTube video in any language")
    


  • Whisper를 사용하여 비디오의 URL을 가져와 기록

  • yt = YouTube(text_input)              ## pass the input url 
    yt.streams.filter(file_extension='mp3')
    stream = yt.streams.get_by_itag(139)
    stream.download('',"audio.mp3")            ## download the audio 
    model = whisper.load_model("base")         ## load whisper model
    result = model.transcribe("audio.mp3")     ## start transcribing
    content = result["text"]                   ## store text 
    


  • OpenAI API를 사용하여 전사 요약 생성

  • response = openai.Completion.create(engine="text-davinci-002",prompt=content + tldr_tag,temperature=0.3,
    max_tokens=200,
    top_p=1.0,          ## calling API to get Summary using GPT engine 
    frequency_penalty=0,
    presence_penalty=0,)
    


  • 마지막으로 결과 표시

  • st.subheader("Here is your summary!")
    st.write(response["choices"][0]["text"])   ## finally inject result to webapp using streamlit
    


    완전한 소스 코드




    import streamlit as st;
    import openai
    from pytube import YouTube 
    import whisper
    
    openai.organization = ""
    openai.api_key = 'sk-yjfA0s****************1zOhM****lXM'
    
    with st.container():
        st.header("Youtube Summary")
        st.title("Get the summary of any YouTube video in any language")
    
    
    ## input url of video ##
    
    with st.container():
        st.write("---")
        text_input = st.text_input(
            "Please paste the url of the video 👇",
            placeholder="paste the url",                 # taking url of a YT video
        )
    
        if text_input:
            try: 
                with st.spinner('Wait for it...'):   ## streamlit loader
                    tldr_tag = "\n\nTl;dr"         ## tag use to tell GPT engine where text is ended
                    yt = YouTube(text_input)              ## pass url as text_input to pytube for for downloading the audio
                    yt.streams.filter(file_extension='mp3')
                    stream = yt.streams.get_by_itag(139)
                    stream.download('',"audio.mp3")            ## download the audio and saved as audio.mp3 in same folder
                    model = whisper.load_model("base")         ## load whisper model
                    result = model.transcribe("audio.mp3")     ## start transcribing video into text
                    content = result["text"]                   ## store text om content var
                    st.write(content)
                    response = openai.Completion.create(engine="text-davinci-002",prompt=content + tldr_tag,temperature=0.3,
                    max_tokens=200,
                    top_p=1.0,                                 ## calling API to generate the summary of transcribed text stored in content var
                    frequency_penalty=0,
                    presence_penalty=0,
                )
                    st.subheader("Here is your summary!")
                    st.write(response["choices"][0]["text"])   ## finally inject responsed text into webapp using streamlit function 
                st.success('Done!')
            except: 
                print("Connection Error")
    
    


    당신이 그것을 좋아하고 나에게 피드백을 주시기 바랍니다 바랍니다



    내 GitHub : link
    여기에서 나와 연결할 수 있습니다[email protected].

    좋은 웹페이지 즐겨찾기