음성 번역 프로그램 구현

Jae·2025년 1월 12일
0

개요

회사에서 일을 하다가 회의 녹음 파일을 stt기능을 이용하여 회의록을 만드는 걸 보며 너무 놀랐고, 파파고를 숨쉬듯이 돌리고, 갤럭시에 내장된 번역 기능에 놀라던 저는 음성 번역 기능이 생각보다 쉬울 수도라는 생각을해서 만들기로 하였습니다.

프로세스

  1. 음성파일을 stt기능을 이용해서 텍스트로 변환한다.
  2. 텍스트를 번역한다.

사용한 라이브러리

googletrans 사용

  • 번역기
  • 구글 번역기로 손쉽게 파이썬에 적용 가능

SpeechRecognition

  • STT
  • google, microsoft 등 다양한 서비스와 호환성이 높다.
  • 마이크 입력, 오디오 파일 처리를 지원한다.

gTTS

  • TTS
  • Google Text-to-Speech API로 다양한 언어와 발음을 지원한다.
  • API 사용이 간편
    ** TTS는 멀티턴을 위해 사용

pip install googletrans
pip install SpeechRecognition
pip install gTTS

stt(speech to text) 실습

import speech_recognition as sr

r = sr.Recognizer()

with sr.Microphone() as source:
    print("-- 듣는 중 --")
    audio = r.listen(source)

try:
    text = r.recognize_google(audio, language='ko-KR')
    print(text)

except sr.UnknownValueError:
    print('인식 실패')

except sr.RequestError as e:
    print('요청 실패: {0}'.format(e))

tts(text to speech) 실습

from gtts import gTTS
from playsound import playsound

text = '스피치 테스트'

ttsk = gTTS(text, lang='ko')

file_name = 'sample.mp3'
ttsk.save(file_name)
playsound(file_name)

파일도 생성이 된다.

발생 이슈

  1. pyautio가 없어서 에러가 초반에 발생함.
  2. 그래도 안 되어서 brew install portaudio 설치함
  3. 가상환경 학습 : venv display
  4. pip install pyobjc --user\n
  5. pip install vosk
    6.AttributeError: 'coroutine' object has no attribute 'text'
    googletrans 라이브러리의 translate() 메서드가 비동기적으로 동작하는 함수가 되면서 비동기 에러 발생.
    비동기 함수로 동작하기 때문에 await 키워드를 사용하여 호출해야하고 async def를 이용하여 비동기 함수를 만들어서 await 키워드를 통하여 결과 반환을 기다려야 한다.
  6. "종료" 단어가 입력되면 에러 발생

repository

https://github.com/jaeeunjeong/Speech2Text2Speech

참고

https://wikidocs.net/234592
https://wikidocs.net/234593

0개의 댓글