Programing/Python

[Python] gtts 모듈을 이용하여 텍스트를 음성으로 변환해보자 : 세기무민의 코딩일기

세기루민 2024. 5. 25. 16:20
728x90

오늘 전에 코딩 레슨했던 1기 수강생 분께서 음성 변환 관련하여 궁금한 사항을 물어보셨는데 

제가 텍스트를 음성으로 변환을 할 수 있는 방법에 대해 whisper openAPI만 알고 있었다가

우연히 gtts라는 모듈을 알게되어 포스팅을 해보려고 합니다.

 

오늘 다뤄볼 모듈은 gtts라는 텍스트를 음성으로 변환해주는 모듈입니다.

 

gTTS?

Google Text-to-Speech라는 의미로 구글 번역을 이용하여 텍스트 음성 변환 API와 인터페이스하는 Python 라이브러리 및 CLI 도구

즉, 텍스트 파일을 음성으로 변환하는 걸 지원해주는 파이썬 모듈 

 

gTTS 설치

pip install gTTS

 

gTTS 활용하여 텍스트를 음성으로 변환해보자

from gtts import gTTS

audio_file = "test.mp3"
language_type = 'ko'
text_value  = "안녕하세요, 저는 세기무민이라고 합니다."

speech = gTTS(
    lang=language_type,
    text=text_value,
    slow=False
)

speech.save(audio_file)

 

  • gTTS의 매개변수는 여러개가 있으나 위에서 사용한 매개변수를 설명하면 아래와 같습니다.
    • lang : 텍스트를 읽을 언어, 기본 값은 en(영어)
    • text : 음성으로 변환하기 위한 텍스트
    • slow : 텍스트를 느리게 읽을 것인지 선택(boolean)
  • save() 매서드를 이용하여 test.mp3 파일로 변환을 할 수 있습니다.

 

gTTS 활용한 음성 파일 > test.mp3 

test.mp3
0.02MB

 

 

 

위의 코드를 실행하면 mp3 파일로 변환할 수 있습니다.

mp3 파일을 들어보면 text_value에 입력한 값이 음성으로 변환된 것을 확인할 수 있습니다.

 

playsound

음성 변환 작업 시 계속 변환이 재대로 되었는지 확인하기 위해 파일을 실행시키는건 효율적이지 않겠죠?

그래서 playsound라는 모듈이 있습니다.

 

playsound 모듈은 파이썬에서 단순하게 오디오 파일을 재생할 수 있도록 해주는 라이브러리입니다.

 

gTTS  심화 활용

text_value라는 변수에 넣은 값 뿐만 아니라 txt 파일을 불러와서 파일을 만들고 직접 들어보는 코드를 만들어 보겠습니다.

 

우선 위와 같이 sample.txt 파일을 만들어 줍니다.

 

from gtts import gTTS
# 코드 실행 시 소리 출력
from playsound import playsound

audio_file = "test_read_file.mp3"
language_type = 'ko'
audio_read_file_name = 'sample.txt'

# 파일 읽기
with open(audio_read_file_name, 'r') as file:
    text_value = file.read()

speech = gTTS(
    lang=language_type,
    text=text_value,
    slow=False
)

speech.save(audio_file)
playsound(audio_file)
  • 파일을 만들었기 때문에 파일을 read 해주고 gTTS > text 매개 변수에 넣어주면 끝입니다.
  • 그리고 playsound를 이용하여 파일 생성 전에 음성이 정상적으로 변환되었는지 확인해볼 수 있습니다.

gTTS 활용한 음성 파일 > test_read_file.mp3

test_read_file.mp3
0.02MB

 

 

 

sample.txt 파일에 있던 내용을 정상적으로 음성 변환된 것을 확인할 수 있습니다.

 

마무리

원래는 과외 수강생에게 도움을 드리려고 해당 모듈을 학습한건데 저도 활용을 많이 할 수 있을꺼 같다는 생각이 들었네요 

제가 문서 정리를 많이 하는 편인데 가끔은 눈으로 보는 것보다 음성 파일로 들고 다니고 싶다는 생각이 들었거든요 

gTTS 모듈이 생각보다 좋은 모듈이라는 걸 이번에 알게 되었네요 ㅎㅎ 

 

 

github 코드를 보고 싶다면?

 

python_module_study/2. gtts(Google Text-To-Speech) at main · sg-moomin/python_module_study

Contribute to sg-moomin/python_module_study development by creating an account on GitHub.

github.com

 

 

참고 

 

Module (gtts) — gTTS documentation

For a given language, Google Translate text-to-speech can speak in different local ‘accents’ depending on the Google domain (google. ) of the request, with some examples shown in the table below. Note The default tld is com which will use the local lan

gtts.readthedocs.io

 

 

728x90