AutoPercenty3/test/audio_to_pdf.py

55 lines
1.8 KiB
Python

import os
from pydub import AudioSegment
import speech_recognition as sr
from fpdf import FPDF
# 입력 및 임시 파일 경로 설정
audio_file_path = "54.m4a" # 첨부된 m4a 파일 경로
wav_file_path = "temp.wav" # 변환된 wav 파일을 위한 임시 경로
# 1. m4a 파일을 wav 파일로 변환
print("m4a 파일을 wav 파일로 변환 중...")
audio = AudioSegment.from_file(audio_file_path, format="m4a")
audio.export(wav_file_path, format="wav")
print("변환 완료.")
# 2. wav 파일의 음성을 텍스트로 변환 (Google Speech Recognition 사용)
print("음성 인식 중...")
recognizer = sr.Recognizer()
with sr.AudioFile(wav_file_path) as source:
audio_data = recognizer.record(source)
try:
# 한국어 인식을 위해 language="ko-KR" 사용
transcript = recognizer.recognize_google(audio_data, language="ko-KR")
print("음성 인식 완료.")
except sr.UnknownValueError:
transcript = "음성을 인식할 수 없습니다."
print("음성 인식 실패: 음성을 이해할 수 없음.")
except sr.RequestError as e:
transcript = f"음성 인식 서비스 요청 실패: {e}"
print("음성 인식 실패:", e)
# 3. 인식된 텍스트를 PDF 파일로 저장 (검색 가능한 텍스트 PDF)
print("PDF 파일 생성 중...")
pdf = FPDF()
# 새 페이지 추가
pdf.add_page()
# 유니코드(한글) 지원 TrueType 폰트 등록
# 현재 디렉토리에 "NotoSansCJKkr-Regular.ttf" 파일이 있어야 합니다.
pdf.add_font("NotoSans", "", "NotoSansKR-VariableFont_wght.ttf", uni=True)
pdf.set_font("NotoSans", size=12)
# 텍스트를 여러 줄로 PDF에 기록
for line in transcript.split('\n'):
pdf.multi_cell(0, 10, line)
output_pdf_path = "output.pdf"
pdf.output(output_pdf_path)
print("PDF 파일이 생성되었습니다:", output_pdf_path)
# 임시 wav 파일 삭제
os.remove(wav_file_path)