이번에는 Open AI 의 Whisper API를 활용하여 좀더 실용적인 예제를 진행해 보겠습니다.
Whisper API의 기본 사용 예제는 이전 글을 참조해 주세요.
2023.03.02 - [인공지능] - Open AI Whisper API 찍먹해보기
Youbube video 추출을 위해 다음 라이브러리를 설치합니다.
pip install pytube
pip install moviepy
오디오 추출을 위해 extract_autio() 함수를 아래와 같이 구현합니다.
먼저, YouTube 비디오의 URL과 MP3 파일의 출력 경로를 인수로 받습니다. 그런 다음 pytube 라이브러리를 사용하여 비디오를 다운로드하고, only_audio=True를 설정하여 오디오 스트림만 필터링합니다. 스트림 중 첫 번째 오디오 스트림을 선택하고, 해당 스트림을 다운로드합니다.
그 다음, moviepy 라이브러리를 사용하여 다운로드한 오디오 파일을 MP3 파일로 변환합니다. 오디오 파일을 AudioFileClip 객체로 로드한 다음, write_audiofile() 메서드를 사용하여 MP3 파일로 저장합니다.
def extract_audio(url, output_file):
# Download the YouTube video
video = YouTube(url)
audio_stream = video.streams.filter(only_audio=True).first()
audio_stream.download(output_path='./')
# Convert the audio file to MP3
input_file = './' + audio_stream.default_filename
audio_clip = AudioFileClip(input_file)
audio_clip.write_audiofile(output_file)
# Remove the original audio file
os.remove(input_file)
앞서 구현해 놓은 extract_autio() 함수를 이용하여 youtube_to_script() 함수를 구현합니다.
먼저, OpenAI API key를 환경 변수로 설정하고, openai 모듈을 사용하여 API 클라이언트를 만듭니다.
그 다음, extract_audio 함수를 사용하여 YouTube 동영상에서 오디오를 추출합니다. 추출된 오디오 파일을 openai.Audio.transcribe 함수를 사용하여 자동으로 텍스트로 변환합니다. transcribe 함수의 첫 번째 인수는 whisper-1으로 설정했습니다.
이는 인간의 소리에 가장 가까운 음성 모델을 사용한다는 의미입니다.
마지막으로, 변환된 텍스트를 출력 파일로 쓰기 위해 output_file 매개 변수로 지정된 파일에 씁니다.
def youtube_to_script(url, output_file):
# First, set your OpenAI API key as an environment variable
os.environ["OPENAI_API_KEY"] = API_KEY
# Create the OpenAI API client
openai.api_key = os.environ["OPENAI_API_KEY"]
# Extract the audio from the YouTube video
extract_audio(url, 'audio.mp3')
# Open the audio file
file = open("audio.mp3", "rb")
# Transcribe the audio file
transcription = openai.Audio.transcribe("whisper-1", file)
# Write the transcription to a file
with open(output_file, "w") as file:
file.write(transcription['text'])
이제 youtube_to_script() 함수를 사용하여 실제 유튜브 영상에서 스크립트를 추출해 보겠습니다.
다음과 같이 코드를 작성하고 실행해 봅니다.
제공한 유뷰트 링크의 영상에서 스크립트를 추출하고 script.txt 파일에 저장합니다.
단 기본적으로 the Whisper API 의 경우 25 MB 사이즈 이하의 오디오 파일만 지원합니다.
더 큰 사이즈의 오디오 파일을 지원하기 위해서는 추가 pydub 라는 third party 라이브러리를 이용해야합니다.
def main():
url = input('Enter the URL of the YouTube video: ')
youtube_to_script(url, 'script.txt')
with open('script.txt', "r") as file:
content = file.read()
print(f"The extracted script is : {content}")
좀더 자세한 설명은 하기 링크를 참조하세요.
https://platform.openai.com/docs/guides/speech-to-text/supported-languages
github: https://github.com/stevelee0503/youtubetoscript
'인공지능(AI)' 카테고리의 다른 글
챗GPT 가입 방법 (0) | 2023.03.24 |
---|---|
트랜스포머란 무엇인가? (0) | 2023.03.20 |
OPEN AI ChatGPT4 공개 (0) | 2023.03.15 |
다음 주 ChatGPT4 출시 소식 (0) | 2023.03.12 |
머신러닝에서 파이프라인(Pipeline) 은 무엇일까? (0) | 2023.03.08 |
댓글