55 lines
1.8 KiB
Python
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)
|