IT

YouTube 동영상 텍스트 변환 완벽 가이드: 3가지 방법 비교

esmile1 2025. 1. 16. 10:29

YouTube 동영상 텍스트 변환 완벽 가이드: 3가지 방법 비교

안녕하세요! 오늘은 YouTube 동영상의 내용을 텍스트로 변환하는 세 가지 방법의 전체 코드와 구현 방법을 상세히 알아보겠습니다.

1. Google Apps Script 방법

전체 코드

function transcribeYouTubeVideo() {
  // 설정
  const videoId = "cQk5BJwy1Xw";
  const apiKey = "YOUR_YOUTUBE_API_KEY";
  const whisperApiKey = "YOUR_WHISPER_API_KEY";

  // YouTube API 호출
  const youtubeUrl = `https://www.googleapis.com/youtube/v3/videos?id=${videoId}&key=${apiKey}&part=snippet,contentDetails`;
  const response = UrlFetchApp.fetch(youtubeUrl);
  const data = JSON.parse(response.getContentText());

  if (data.items.length === 0) {
    Logger.log("동영상을 찾을 수 없습니다.");
    return;
  }

  // 동영상 정보 추출
  const videoTitle = data.items[0].snippet.title;
  Logger.log("동영상 제목: " + videoTitle);

  // Whisper API 호출
  const whisperUrl = "<https://api.openai.com/v1/whisper>";
  const audioUrl = `https://www.youtube.com/watch?v=${videoId}`;

  const options = {
    "method": "post",
    "contentType": "application/json",
    "headers": {
      "Authorization": `Bearer ${whisperApiKey}`
    },
    "payload": JSON.stringify({
      "url": audioUrl
    })
  };

  // 텍스트 변환 실행
  const whisperResponse = UrlFetchApp.fetch(whisperUrl, options);
  const whisperData = JSON.parse(whisperResponse.getContentText());

  // 결과 저장
  const sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange("A1").setValue(videoTitle);
  sheet.getRange("B1").setValue(whisperData.text);
}

2. Google AppSheet 설정

AppSheet는 코드 대신 UI를 통해 설정합니다. 다음은 필요한 스프레드시트 구조입니다:

열 구조:
A: Video_ID (텍스트)
B: Video_Title (텍스트)
C: Transcription_Status (텍스트)
D: Transcribed_Text (텍스트)
E: Last_Updated (날짜/시간)

3. Google Cloud Function 방법

전체 코드

import yt_dlp
import whisper
import tempfile
import os
import json
from flask import Flask, request, jsonify

app = Flask(__name__)

def transcribe_audio(video_url):
    try:
        with tempfile.TemporaryDirectory() as temp_dir:
            # YouTube 동영상 다운로드 설정
            ydl_opts = {
                'format': 'bestaudio/best',
                'postprocessors': [{
                    'key': 'FFmpegExtractAudio',
                    'preferredcodec': 'mp3',
                    'preferredquality': '192',
                }],
                'outtmpl': os.path.join(temp_dir, '%(title)s.%(ext)s')
            }

            # 동영상 다운로드
            with yt_dlp.YoutubeDL(ydl_opts) as ydl:
                info = ydl.extract_info(video_url, download=True)
                audio_file = os.path.join(temp_dir, f"{info['title']}.mp3")

            # Whisper 모델로 텍스트 변환
            model = whisper.load_model("base")
            result = model.transcribe(audio_file)

            return {
                'success': True,
                'text': result['text'],
                'title': info['title']
            }

    except Exception as e:
        return {
            'success': False,
            'error': str(e)
        }

@app.route('/transcribe', methods=['POST'])
def transcribe():
    try:
        data = request.get_json()
        video_url = data.get('url')

        if not video_url:
            return jsonify({'error': 'URL이 제공되지 않았습니다'}), 400

        result = transcribe_audio(video_url)

        if result['success']:
            return jsonify({
                'text': result['text'],
                'title': result['title']
            }), 200
        else:
            return jsonify({'error': result['error']}), 500

    except Exception as e:
        return jsonify({'error': str(e)}), 500

if __name__ == '__main__':
    app.run()

30단계 구현 가이드

Google Apps Script 구현 (1-10단계)

  1. Google Drive 접속
  2. 새 스프레드시트 생성
  3. 메뉴에서 "도구 > 스크립트 편집기" 선택
  4. 코드 전체를 복사하여 붙여넣기
  5. YouTube API 키 발급
  6. Whisper API 키 발급
  7. 코드의 API 키 부분 수정
  8. 파일 저장 (Ctrl + S)
  9. "실행" 버튼 클릭
  10. 권한 승인 및 테스트 실행

Google AppSheet 구현 (11-20단계)

  1. Google AppSheet 접속
  2. "새 앱 만들기" 클릭
  3. 데이터 소스로 스프레드시트 선택
  4. 열 구조 설정
  5. 자동화 규칙 추가
  6. Cloud Function URL 연동
  7. 테이블 뷰 설정
  8. 폼 뷰 설정
  9. 권한 설정
  10. 앱 배포

Google Cloud Function 구현 (21-30단계)

  1. Google Cloud Console 접속
  2. 새 프로젝트 생성
  3. Cloud Functions API 활성화
  4. 새 함수 생성
  5. Python 3.9 런타임 선택
  6. 전체 코드 복사하여 붙여넣기
  7. requirements.txt 파일 생성 및 설정
  8. 트리거 URL 설정
  9. 함수 배포
  10. 테스트 실행

주의사항

  1. API 키는 절대 공개하지 마세요
  2. 사용량 제한을 확인하세요
  3. 오류 처리를 항상 포함하세요
  4. 정기적으로 백업하세요
  5. 보안 설정을 확인하세요

이상으로 YouTube 동영상 텍스트 변환을 위한 세 가지 방법의 전체 코드와 구현 방법을 알아보았습니다. 각자의 상황과 필요에 맞는 방법을 선택하여 사용하시기 바랍니다. 화이팅!

안녕하세요! 오늘은 YouTube 동영상의 내용을 텍스트로 변환하는 세 가지 방법의 전체 코드와 구현 방법을 상세히 알아보겠습니다.

1. Google Apps Script 방법

전체 코드

function transcribeYouTubeVideo() {
  // 설정
  const videoId = "cQk5BJwy1Xw";
  const apiKey = "YOUR_YOUTUBE_API_KEY";
  const whisperApiKey = "YOUR_WHISPER_API_KEY";

  // YouTube API 호출
  const youtubeUrl = `https://www.googleapis.com/youtube/v3/videos?id=${videoId}&key=${apiKey}&part=snippet,contentDetails`;
  const response = UrlFetchApp.fetch(youtubeUrl);
  const data = JSON.parse(response.getContentText());

  if (data.items.length === 0) {
    Logger.log("동영상을 찾을 수 없습니다.");
    return;
  }

  // 동영상 정보 추출
  const videoTitle = data.items[0].snippet.title;
  Logger.log("동영상 제목: " + videoTitle);

  // Whisper API 호출
  const whisperUrl = "<https://api.openai.com/v1/whisper>";
  const audioUrl = `https://www.youtube.com/watch?v=${videoId}`;

  const options = {
    "method": "post",
    "contentType": "application/json",
    "headers": {
      "Authorization": `Bearer ${whisperApiKey}`
    },
    "payload": JSON.stringify({
      "url": audioUrl
    })
  };

  // 텍스트 변환 실행
  const whisperResponse = UrlFetchApp.fetch(whisperUrl, options);
  const whisperData = JSON.parse(whisperResponse.getContentText());

  // 결과 저장
  const sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange("A1").setValue(videoTitle);
  sheet.getRange("B1").setValue(whisperData.text);
}

2. Google AppSheet 설정

AppSheet는 코드 대신 UI를 통해 설정합니다. 다음은 필요한 스프레드시트 구조입니다:

열 구조:
A: Video_ID (텍스트)
B: Video_Title (텍스트)
C: Transcription_Status (텍스트)
D: Transcribed_Text (텍스트)
E: Last_Updated (날짜/시간)

3. Google Cloud Function 방법

전체 코드

import yt_dlp
import whisper
import tempfile
import os
import json
from flask import Flask, request, jsonify

app = Flask(__name__)

def transcribe_audio(video_url):
    try:
        with tempfile.TemporaryDirectory() as temp_dir:
            # YouTube 동영상 다운로드 설정
            ydl_opts = {
                'format': 'bestaudio/best',
                'postprocessors': [{
                    'key': 'FFmpegExtractAudio',
                    'preferredcodec': 'mp3',
                    'preferredquality': '192',
                }],
                'outtmpl': os.path.join(temp_dir, '%(title)s.%(ext)s')
            }

            # 동영상 다운로드
            with yt_dlp.YoutubeDL(ydl_opts) as ydl:
                info = ydl.extract_info(video_url, download=True)
                audio_file = os.path.join(temp_dir, f"{info['title']}.mp3")

            # Whisper 모델로 텍스트 변환
            model = whisper.load_model("base")
            result = model.transcribe(audio_file)

            return {
                'success': True,
                'text': result['text'],
                'title': info['title']
            }

    except Exception as e:
        return {
            'success': False,
            'error': str(e)
        }

@app.route('/transcribe', methods=['POST'])
def transcribe():
    try:
        data = request.get_json()
        video_url = data.get('url')

        if not video_url:
            return jsonify({'error': 'URL이 제공되지 않았습니다'}), 400

        result = transcribe_audio(video_url)

        if result['success']:
            return jsonify({
                'text': result['text'],
                'title': result['title']
            }), 200
        else:
            return jsonify({'error': result['error']}), 500

    except Exception as e:
        return jsonify({'error': str(e)}), 500

if __name__ == '__main__':
    app.run()

30단계 구현 가이드

Google Apps Script 구현 (1-10단계)

  1. Google Drive 접속
  2. 새 스프레드시트 생성
  3. 메뉴에서 "도구 > 스크립트 편집기" 선택
  4. 코드 전체를 복사하여 붙여넣기
  5. YouTube API 키 발급
  6. Whisper API 키 발급
  7. 코드의 API 키 부분 수정
  8. 파일 저장 (Ctrl + S)
  9. "실행" 버튼 클릭
  10. 권한 승인 및 테스트 실행

Google AppSheet 구현 (11-20단계)

  1. Google AppSheet 접속
  2. "새 앱 만들기" 클릭
  3. 데이터 소스로 스프레드시트 선택
  4. 열 구조 설정
  5. 자동화 규칙 추가
  6. Cloud Function URL 연동
  7. 테이블 뷰 설정
  8. 폼 뷰 설정
  9. 권한 설정
  10. 앱 배포

Google Cloud Function 구현 (21-30단계)

  1. Google Cloud Console 접속
  2. 새 프로젝트 생성
  3. Cloud Functions API 활성화
  4. 새 함수 생성
  5. Python 3.9 런타임 선택
  6. 전체 코드 복사하여 붙여넣기
  7. requirements.txt 파일 생성 및 설정
  8. 트리거 URL 설정
  9. 함수 배포
  10. 테스트 실행

주의사항

  1. API 키는 절대 공개하지 마세요
  2. 사용량 제한을 확인하세요
  3. 오류 처리를 항상 포함하세요
  4. 정기적으로 백업하세요
  5. 보안 설정을 확인하세요

이상으로 YouTube 동영상 텍스트 변환을 위한 세 가지 방법의 전체 코드와 구현 방법을 알아보았습니다. 각자의 상황과 필요에 맞는 방법을 선택하여 사용하시기 바랍니다. 화이팅!