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단계)
- Google Drive 접속
- 새 스프레드시트 생성
- 메뉴에서 "도구 > 스크립트 편집기" 선택
- 코드 전체를 복사하여 붙여넣기
- YouTube API 키 발급
- Whisper API 키 발급
- 코드의 API 키 부분 수정
- 파일 저장 (Ctrl + S)
- "실행" 버튼 클릭
- 권한 승인 및 테스트 실행
Google AppSheet 구현 (11-20단계)
- Google AppSheet 접속
- "새 앱 만들기" 클릭
- 데이터 소스로 스프레드시트 선택
- 열 구조 설정
- 자동화 규칙 추가
- Cloud Function URL 연동
- 테이블 뷰 설정
- 폼 뷰 설정
- 권한 설정
- 앱 배포
Google Cloud Function 구현 (21-30단계)
- Google Cloud Console 접속
- 새 프로젝트 생성
- Cloud Functions API 활성화
- 새 함수 생성
- Python 3.9 런타임 선택
- 전체 코드 복사하여 붙여넣기
- requirements.txt 파일 생성 및 설정
- 트리거 URL 설정
- 함수 배포
- 테스트 실행
주의사항
- API 키는 절대 공개하지 마세요
- 사용량 제한을 확인하세요
- 오류 처리를 항상 포함하세요
- 정기적으로 백업하세요
- 보안 설정을 확인하세요
이상으로 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단계)
- Google Drive 접속
- 새 스프레드시트 생성
- 메뉴에서 "도구 > 스크립트 편집기" 선택
- 코드 전체를 복사하여 붙여넣기
- YouTube API 키 발급
- Whisper API 키 발급
- 코드의 API 키 부분 수정
- 파일 저장 (Ctrl + S)
- "실행" 버튼 클릭
- 권한 승인 및 테스트 실행
Google AppSheet 구현 (11-20단계)
- Google AppSheet 접속
- "새 앱 만들기" 클릭
- 데이터 소스로 스프레드시트 선택
- 열 구조 설정
- 자동화 규칙 추가
- Cloud Function URL 연동
- 테이블 뷰 설정
- 폼 뷰 설정
- 권한 설정
- 앱 배포
Google Cloud Function 구현 (21-30단계)
- Google Cloud Console 접속
- 새 프로젝트 생성
- Cloud Functions API 활성화
- 새 함수 생성
- Python 3.9 런타임 선택
- 전체 코드 복사하여 붙여넣기
- requirements.txt 파일 생성 및 설정
- 트리거 URL 설정
- 함수 배포
- 테스트 실행
주의사항
- API 키는 절대 공개하지 마세요
- 사용량 제한을 확인하세요
- 오류 처리를 항상 포함하세요
- 정기적으로 백업하세요
- 보안 설정을 확인하세요
이상으로 YouTube 동영상 텍스트 변환을 위한 세 가지 방법의 전체 코드와 구현 방법을 알아보았습니다. 각자의 상황과 필요에 맞는 방법을 선택하여 사용하시기 바랍니다. 화이팅!
'IT' 카테고리의 다른 글
AI 에이전트: 비즈니스 혁신의 게임 체인저 (0) | 2025.01.17 |
---|---|
Google Sheets와 Gemini API를 활용한 AI 기반 함수 생성 가이드 (0) | 2025.01.17 |
YouTube 동영상 텍스트 변환 방법 비교: 초보자를 위한 상세 가이드 (1) | 2025.01.16 |
Chrome DevTools에서 발생한 CORS 오류 해결하기: 초보자를 위한 상세 가이드 (0) | 2025.01.16 |
Cloud Function 설정하기: YouTube 동영상 텍스트 추출 가이드 (0) | 2025.01.16 |