관리 메뉴

개발자비행일지

파이썬, 파이썬으로 유튜브 동영상 텍스트 변환하기 본문

▶ Python

파이썬, 파이썬으로 유튜브 동영상 텍스트 변환하기

Cyber0946 2023. 7. 25. 15:37

이전 글을 통해 파이썬으로 음성을 텍스트로 변환하는 방법에 대해 다루었습니다. 

그럼 다음으로 파이썬으로 유튜브 동영상에 있는 음성들을 텍스트로 변환하는 것을 해보겠습니다. 

먼저 이를 위해서는 라이브러리 설치가 필요합니다. 

아래와 같이 명령어를 입력하여 필요한 라이브러리를 설치할 수 있습니다.

pytube 설치:

pip install pytube

 

SpeechRecognition 설치:

pip install SpeechRecognition

PyAudio 설치 (음성 인식에 필요한 라이브러리):

pip install pyaudio

Hanspell 설치:

pip install git+https://github.com/ssut/py-hanspell.git

설치가 완료되면, 이제 앞서 제시한 스크립트를 실행하면 됩니다. 유튜브 동영상의 URL을 youtube_url 변수에 적절한 링크로 변경하고, 음성 파일의 이름을 audio_file 변수에 적절한 파일명으로 변경한 후 실행하시면 됩니다.

추가로, PyAudio 라이브러리는 빌드 의존성이 있을 수 있으며, OS에 따라 설치가 어려울 수 있습니다. 만약 설치 중에 오류가 발생하면, 다른 옵션을 사용하여 PyAudio를 설치해보시기 바랍니다. (예: pip install pyaudio, pip install pipwin, pipwin install pyaudio)

소스는 다음과 같습니다. 

import os
import re
import time
import pytube
import speech_recognition as sr
from hanspell import spell_checker

def download_youtube_video(url):
    # 유튜브 동영상 다운로드
    youtube = pytube.YouTube(url)
    video = youtube.streams.filter(only_audio=True).first()
    video.download()

def recognize_speech(audio_file):
    # 오디오 파일을 텍스트로 변환하는 함수
    recognizer = sr.Recognizer()
    with sr.AudioFile(audio_file) as source:
        audio = recognizer.listen(source)
    try:
        recognized_text = recognizer.recognize_google(audio, language='ko-KR')
        return recognized_text
    except sr.UnknownValueError:
        print("음성을 인식할 수 없습니다.")
        return ""

def remove_newlines(text):
    # 개행 문자 제거 함수
    return re.sub(r'\n', ' ', text)

def correct_spelling(text):
    # 맞춤법 검사 함수
    result = spell_checker.check(text)
    return result.checked

def main():
    youtube_url = "https://www.youtube.com/watch?v=your_video_id"
    audio_file = "audio.wav"

    # 유튜브 동영상 다운로드
    download_youtube_video(youtube_url)

    # 잠시 동영상 다운로드 완료를 기다립니다.
    time.sleep(5)

    # 음성을 텍스트로 변환하여 인식합니다.
    recognized_text = recognize_speech(audio_file)
    print("음성 인식 결과:")
    print(recognized_text)

    # 맞춤법을 체크합니다.
    corrected_text = correct_spelling(recognized_text)
    print("\n맞춤법 검사 결과:")
    print(corrected_text)

    # 개행 문자를 제거합니다.
    text_without_newlines = remove_newlines(corrected_text)
    print("\n개행 문자 제거 결과:")
    print(text_without_newlines)

    # 음성 파일과 임시 파일 삭제
    os.remove(audio_file)

if __name__ == "__main__":
    main()

주의: 유튜브 동영상의 저작권 및 이용약관을 준수해야 합니다. 상업적으로 이용하거나 저작권을 침해하는 행위는 불법입니다. 영리목적의 이용이나 상업적으로 이용하기 전에 해당 동영상의 사용권한을 확인하고, 저작권자의 허락을 받는 것이 중요합니다. 이 코드는 학습용으로 사용하거나 개인적인 용도로만 사용하시기 바랍니다.