- 이번 프로그램은 구글에서 제공한 음성인식 API를 이용하여 실시간 자동 번역기를 만들어 보겠습니다.
예를 들어 한국어로 "안녕하세요"라고 얘기하면 프로그램이 이를 알아 듣고 번역하여 "hello"라고 영어로 번역하여 말을 합니다.
(본 블로그의 내용은 유튜브 동영상(
파이썬 실시간 번역기(한국어를 영어로) 만들기-1(making Real-time_Speech_Recognition_Translator_byPython_1)
파이썬 실시간 번역기(한국어를 영어로) 만들기-2(making Real-time_Speech_Recognition_Translator_byPython_2)
파이썬 실시간 번역기(한국어를 영어로) 만들기-3(making Real-time_Speech_Recognition_Translator_byPython_3)
)에서 더욱 자세히 보실 수 있습니다.)
(1) 아래에서와 같이 프로그램을 실행시킨 후 간단하게 1)마이크에 대고 "진짜" 라고 말하면 2)영어로 "Real" 이라고 말해 줍니다.
O 시작전 준비 사항
- 프로그램을 실행하기 위해서는 아래 관련된 모듈을 미리 설치해야 합니다.
1) pip install SpeechRecognition : 구글의 음성인식 AI 모듈
2) pip install gtts : 구글텍스트를 음성으로 변환해주는 모듈
3) pip install playsound : 음악재생 모듈
4) pip install translate : 구글 번역 API
import speech_recognition as sr
from gtts import gTTS
import os
import playsound
from translate import Translator
def speak(text):
tts = gTTS(text=text, lang='ko')
filename='voice.mp3'
tts.save(filename) # 파일을 만들고,
playsound.playsound(filename) # 해당 음성파일을 실행(즉, 음성을 말함)
os.remove(filename)
def speak2(text):
tts = gTTS(text=text, lang='en')
filename='voice.mp3'
tts.save(filename) # 파일을 만들고,
playsound.playsound(filename) # 해당 음성파일을 실행(즉, 음성을 말함)
os.remove(filename)
def get_audio():
r = sr.Recognizer()
with sr.Microphone() as source:
print("say something")
audio = r.listen(source)
said = " "
try:
said = r.recognize_google(audio, language="ko-KR")
print("Your speech thinks like: ", said)
except Exception as e:
print("Exception: " + str(e))
return said
speak("안녕하세요. 2초 후에 한국어로 말을 하시면 영어로 번역하여 말을합니다.")
# 1.음성입력
text=get_audio()
# 2.번역 부분(한글->영어로)
translator = Translator(from_lang="ko", to_lang="en")
translation = translator.translate(text)
print(translation)
# 3.음성 출력
speak2(translation)
- def speak(text): 함수 부분
1.tts = gTTS(text=text, lang='ko') <-- 텍스트를 음성(한국어)로 변환
2.tts.save(filename) <-- 파일을 만들고,
3.playsound.playsound(filename) <-- 해당 음성파일을 실행(즉, 음성을 말함)
4.os.remove(filename) <-- 생성된 파일 삭제(이부분이 빠지면 퍼미션 오류 발생함)
- def get_audio(): 함수 부분
5.tts = gTTS(text=text, lang='en') <-- 나중에 번역 후 말을 할때는 영어로 해야 하므로 lang='en'으로 설정
6.r = sr.Recognizer() <--음성인식 객체(r) 생성
7.with sr.Microphone() as source: <-- 음성 입력 시 마이크를 사용해야 하므로 음성입력을 위해 sr.Micorphone() 구문 사용
8.print("say something") <-- 이 문장 이후 말을 하도록 이해하기 쉽게 써준 것임
9.audio = r.listen(source) <-- 말한 내용(source)을 듣고(r.listen()), audio변수에 저장
10.said = r.recognize_google(audio, language="ko-KR") <-- 한국말로 음성을 입력(language="ko-KR"(대소문자 주의)) 하면 구글이 입력된 한국말(audio)을 한국어 텍스트로 번역
11.except Exception as e: <-- 에러 발생에 대비한 예외처리 부분
- 본문 내용
# 음성입력
12.text=get_audio() <-- 입력된 한국말이 한국어 텍스트로 변환
# 번역 부분(한글->영어로)
13.translator = Translator(from_lang="ko", to_lang="en") <-- 한국어 텍스트를 영문 텍스트로 변환하기 위한 부분
14.translation = translator.translate(text) <-- 번역기에 한국어 텍스트(text)를 넣으면 영문텍스트(translation)로 변환됨
# 음성 출력
15.speak2(translation) <-- 영문텍스트를 음성으로 변환
1.단순히 프로그램을 실행 시키고, 'say something' 문구가 나오면, 그때 말을 하면 영어로 번역하여 말을 해 줍니다.
추가적으로 영어->한국어로 번역해 주는 프로그램이나, 1개 언어가 아닌 여러개의 다양한 언어를 멀티플하게 적용해 보는 것도 생각해 볼 수 있을 것 같습니다.
위의 내용이 유익하셨다면, 좋아요와 구독 부탁드립니다.
감사합니다.