YouTube 링크에서 텍스트 추출 및 텍스트 파일 저장

 

YouTube 링크에서 텍스트 추출 및 텍스트 파일 저장 (Google Cloud 활용)

핵심 개념 및 필요 기술

  • YouTube Data API: YouTube 동영상 정보를 가져오기 위한 Google Cloud 서비스입니다.
  • Google Cloud Text-to-Speech API: 영상의 오디오를 텍스트로 변환하는 데 사용됩니다.
  • Google Cloud Storage: 변환된 텍스트를 저장할 공간을 제공합니다.
  • Python: 스크립트 작성을 위한 언어 (Google Cloud 클라이언트 라이브러리 지원)

코드 구현

https://colab.research.google.com/drive/1KpguxjrDomdU4TmBAj7dAY5D4LHkXQqs
Python
import os
import googleapiclient.discovery
from google.cloud import texttospeech
from google.cloud import storage

def youtube_to_text(youtube_link, storage_bucket_name):
    # YouTube Data API 인증 정보 설정 (자신의 프로젝트에 맞게 수정)
    api_service_name = "youtube"
    api_version = "v3"
    DEVELOPER_KEY = "YOUR_API_KEY"

    youtube = googleapiclient.discovery.build(
        api_service_name, api_version, developerKey=DEVELOPER_KEY
    )

    # YouTube 동영상 ID 추출
    video_id = youtube_link.split('=')[1]

    # 동영상 정보 가져오기
    request = youtube.videos().list(
        part="snippet,contentDetails",
        id=video_id
    )
    response = request.execute()

    # 동영상 URL 가져오기
    video_url = 'https://www.youtube.com/watch?v=' + video_id

    # Text-to-Speech 클라이언트 생성
    client = texttospeech.TextToSpeechClient()

    # 오디오 파일 다운로드 (현재는 지원되지 않음)
    # YouTube Data API로는 직접 오디오 파일을 다운로드할 수 없습니다.
    # 대신, third-party 라이브러리나 서비스를 활용해야 합니다.

    # 다운로드한 오디오 파일을 이용하여 텍스트 변환 (예시)
    audio = open("audio.mp3", "rb")
    audio_content = audio.read()
    audio.close()

    synthesis_input = texttospeech.SynthesisInput(audio=texttospeech.SynthesisInput.Audio(content=audio_content))
    voice = texttospeech.VoiceSelectionParams(
        language_code="ko-KR", ssml_gender=texttospeech.SsmlVoiceGender.FEMALE
    )
    audio_config = texttospeech.Audio   Config(
        audio_encoding=texttospeech.AudioEncoding.MP3
    )

    response = client.synthesize_speech(
        request={"input": synthesis_input, "voice": voice, "audio_config": audio_config}
    )

    #    변환된 텍스트를 Google Cloud Storage에 저장
    storage_client = storage.Client()
    bucket = storage_client.bucket(storage_bucket_name)
    blob = bucket.blob("output.txt")
    blob.upload_from_string(response.audio_content.decode('utf-8'))

    print(f"텍스트가 {storage_bucket_name} 버킷의 output.txt 파일에 저장되었습니다.")

코드 설명

  1. YouTube Data API를 이용하여 동영상 정보 가져오기: YouTube 링크에서 동영상 ID를 추출하고, 해당 동영상의 정보를 가져옵니다.
  2. Text-to-Speech API를 이용하여 텍스트 변환: 다운로드한 오디오 파일을 Text-to-Speech API를 이용하여 텍스트로 변환합니다.
  3. Google Cloud Storage에 저장: 변환된 텍스트를 Google Cloud Storage에 지정된 버킷에 저장합니다.

주의사항 및 추가 고려 사항

  • YouTube Data API 키: 자신의 Google Cloud 프로젝트에서 API 키를 생성하여 DEVELOPER_KEY 변수에 설정해야 합니다.
  • 오디오 파일 다운로드: YouTube Data API로는 직접 오디오 파일을 다운로드할 수 없습니다. pytube와 같은 third-party 라이브러리를 사용하거나 YouTube의 다운로드 기능을 활용해야 합니다.
  • 텍스트 변환 정확도: Text-to-Speech API의 텍스트 변환 정확도는 음질, 배경 소음, 발음 등 다양한 요인에 따라 달라질 수 있습니다.
  • 저작권: YouTube 동영상의 저작권에 유의하여 사용해야 합니다.
  • 비용: Google Cloud 서비스 이용 시 발생하는 비용을 고려해야 합니다.

추가 기능 구현

  • 다국어 지원: Text-to-Speech API의 language_code를 변경하여 다양한 언어를 지원할 수 있습니다.
  • 오류 처리: 예외 처리를 추가하여 오류 발생 시 적절한 메시지를 출력하도록 합니다.
  • 배치 처리: 여러 개의 YouTube 링크를 처리하기 위한 배치 처리 기능을 구현할 수 있습니다.
  • 텍스트 후처리: 변환된 텍스트에 대한 추가적인 처리 (예: 불필요한 문자 제거, 형태소 분석)를 수행할 수 있습니다.

Pytube를 활용하여 YouTube 영상을 MP3 파일로 변환하는 코드

Pytube 라이브러리를 사용하면 간단하게 YouTube 영상을 다운로드할 수 있습니다. 특히, 오디오 스트림만 추출하여 MP3 파일로 저장하는 기능을 제공합니다.

Python
from pytube import YouTube

def download_youtube_audio(youtube_link, output_filename="audio.mp3"):
    """
    YouTube 영상을 MP3 파일로 다운로드하는 함수

    Args:
        youtube_link (str): YouTube 영상 링크
        output_filename (str, optional): 저장할 파일 이름. 기본값은 "audio.mp3"
    """

    try:
        # YouTube 객체 생성
        yt = YouTube(youtube_link)

        # 가장 높은 해상도의 오디오 스트림 선택
        audio = yt.streams.filter(only_audio=True).order_by('bitrate').desc().first()

        # 오디오 다운로드 및 저장
        out_file = audio.download(filename=output_filename)

        # 출력 파일 경로 출력
        print(f"다운로드 완료: {out_file}")

    except Exception as e:
        print(f"오류 발생: {e}")

# YouTube 링크
youtube_link = "https://youtu.be/fy_NNE7QWm0?si=yQDPIK6qT44J0ExC"

# 함수 실행
download_youtube_audio(youtube_link)

코드 설명

  1. Pytube 라이브러리 임포트: pytube 라이브러리를 임포트합니다.
  2. 함수 정의: download_youtube_audio 함수를 정의합니다. 이 함수는 YouTube 링크와 저장할 파일 이름을 입력받아 오디오를 다운로드합니다.
  3. YouTube 객체 생성: 입력된 YouTube 링크를 사용하여 YouTube 객체를 생성합니다.
  4. 오디오 스트림 선택: streams.filter 메서드를 사용하여 오디오 스트림만 필터링하고, order_by('bitrate').desc().first()를 통해 비트레이트가 가장 높은 스트림을 선택합니다.
  5. 오디오 다운로드: download 메서드를 사용하여 선택한 오디오 스트림을 지정된 파일 이름으로 다운로드합니다.
  6. 오류 처리: try-except 블록을 사용하여 오류 발생 시 예외를 처리합니다.

실행 방법

  1. Pytube 설치: 터미널에서 pip install pytube 명령어를 실행하여 Pytube 라이브러리를 설치합니다.
  2. 코드 실행: 위 코드를 Python 파일로 저장하고 실행합니다.

주의 사항

  • 저작권: YouTube 영상을 다운로드할 때는 저작권에 유의해야 합니다. 상업적인 목적으로 사용하거나 저작권자의 허가 없이 무단으로 배포하는 것은 불법입니다.
  • 인터넷 환경: 인터넷 연결 상태에 따라 다운로드 속도가 달라질 수 있습니다.
  • YouTube 정책: YouTube의 서비스 약관은 수시로 변경될 수 있으며, 다운로드 기능이 제한될 수 있습니다.

추가 기능:

  • 다양한 파일 형식: audio.download(filename="output.mp3", filename=True)와 같이 filename=True 옵션을 사용하면 확장자를 지정하여 다양한 파일 형식으로 저장할 수 있습니다.
  • 진행률 표시: pytube는 다운로드 진행률을 표시하는 기능을 제공합니다.
  • 플레이리스트 다운로드: pytube.Playlist 클래스를 사용하여 플레이리스트 전체를 다운로드할 수 있습니다.

참고:

주의: 위 코드는 기본적인 예시이며, 실제 사용 환경에서는 더욱 복잡한 로직이 필요할 수 있습니다.


댓글 쓰기

0 댓글