본문 바로가기
Development/Python

[Python] 파이썬 gtts 모듈을 이용한 텍스트 음성 변환 방법

by 선인장 🌵 2022. 6. 6.
728x90
728x90

파이썬 gtts 모듈을 이용한 텍스트 음성 변환 방법

구글, 네이버, 카카오 등 여러 IT 회사에서 텍스트를 음성으로 변환하는 모듈(Module), SDK를 제공하고 있다.

  • 구글 : gtts(Google Text-to-Speech)
  • 네이버 : 클로버(Clova) API
  • 카카오 : 카카오 음성 API

gTTS — gTTS documentation

© Copyright 2014-2021 Pierre Nicolas Durette. Revision 3d6cfc9d.

gtts.readthedocs.io

네이버 클로바

인공지능 플랫폼 클로바와 함께 당신의 일상이 더욱 편리해집니다.

clova.ai

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

이중 이번에는 구글에서 만든 gtts(Google Text-to-Speech)라는 파이썬 모듈을 이용하여 텍스트를 음성으로 변환하는 방법에 대해서 알아보도록 하자.

[Python] 파이썬 gtts 모듈을 이용한 텍스트 음성 변환 방법

1. gtts 모듈 설치

우선 사용을 하기 위해서는 gtts 모듈을 설치해야 한다.

pip 명령어를 통해서 설치해보도록 하자.

  • $ pip install gtts
# pip를 이용한 gtts 설치

$ pip install gtts
Collecting gtts
  Using cached gTTS-2.2.4-py3-none-any.whl (26 kB)
Collecting requests
  Using cached requests-2.27.1-py2.py3-none-any.whl (63 kB)
Collecting click
  Using cached click-8.1.3-py3-none-any.whl (96 kB)
Collecting six
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting urllib3<1.27,>=1.21.1
  Using cached urllib3-1.26.9-py2.py3-none-any.whl (138 kB)
Collecting charset-normalizer~=2.0.0
  Using cached charset_normalizer-2.0.12-py3-none-any.whl (39 kB)
Collecting idna<4,>=2.5
  Using cached idna-3.3-py3-none-any.whl (61 kB)
Collecting certifi>=2017.4.17
  Using cached certifi-2022.5.18.1-py3-none-any.whl (155 kB)
Installing collected packages: urllib3, six, idna, click, charset-normalizer, certifi, requests, gtts
Successfully installed certifi-2022.5.18.1 charset-normalizer-2.0.12 click-8.1.3 gtts-2.2.4 idna-3.3 requests-2.27.1 six-1.16.0 urllib3-1.26.9

1. gtts 모듈 설치
1. gtts 모듈 설치

728x90

해당 모듈이 잘 설치되어 있는지 한번 살펴보도록 하자.

  • $ pip freeze
# pip를 이용한 설치된 모듈 확인

$ pip freeze      
certifi==2022.5.18.1
charset-normalizer==2.0.12
click==8.1.3
gTTS==2.2.4
idna==3.3
requests==2.27.1
six==1.16.0
urllib3==1.26.9

1. gtts 모듈 설치
1. gtts 모듈 설치

2. gtts 모듈을 이용한 변환 하기

2.1 Python Code

이제 gtts 모듈을 설치했으면 간단하게 파이썬 코드를 이용해서 음성(MP3) 파일을 생성해보도록 하자.

# Python Example Code

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gtts import gTTS

if __name__ == '__main__':
    tts = gTTS(
        text='안녕하세요',
        lang='ko', slow=False
    )
    tts.save('ex_ko.mp3')

    tts1 = gTTS(
        text='Hello',
        lang='en', slow=False
    )
    tts1.save('ex_en.mp3')

2.1 Python Code
2.1 Python Code

2.2 CLI Mode

gtts 모듈을 설치하면 파이썬 코드를 작성하지 않아도 간단한 내용은 CLI Mode를 통해서 바로 사용이 가능하다.

  • $ gtts-cli '안녕' -l ko --output ko2.mp3
  • $ gtts-cli 'hello' -l en --output en2.mp3
  • $ gtts-cli -f input.txt -l en -o output.mp3
# gtts CLI Mode

$ gtts-cli '안녕' -l ko --output ko2.mp3 

$ gtts-cli 'hello' -l en --output en2.mp3

$ cat input.txt                          
Hello                                                                                                                                                                                                                                                                                                                    (venv) ➜  gtts (main) ✗ gtts-cli -f input.txt -l en -o output.mp3

$ gtts-cli -f input.txt -l en -o output.mp3

2.2 CLI Mode
2.2 CLI Mode

자세한 사용 방법은 Help 내용을 보면 쉽게 사용이 가능하다.

  • $ gtts-cli -h
# gtts CLI Mode Help

$ gtts-cli -h                              
Usage: gtts-cli [OPTIONS] <text>

  Read <text> to mp3 format using Google Translate's Text-to-Speech API (set
  <text> or --file <file> to - for standard input)

Options:
  -f, --file <file>    Read from <file> instead of <text>.
  -o, --output <file>  Write to <file> instead of stdout.
  -s, --slow           Read more slowly.
  -l, --lang <lang>    IETF language tag. Language to speak in. List
                       documented tags with --all.  [default: en]
  -t, --tld <tld>      Top-level domain for the Google host, i.e
                       https://translate.google.<tld>  [default: com]
  --nocheck            Disable strict IETF language tag checking. Allow
                       undocumented tags.
  --all                Print all documented available IETF language tags and
                       exit.
  --debug              Show debug information.
  --version            Show the version and exit.
  -h, --help           Show this message and exit.

3. gtts에서 지원하는 언어

태그명 언어명
af Afrikaans
ar Arabic
bn Bengali
bs Bosnian
ca Catalan
cs Czech
cy Welsh
da Danish
de German
el Greek
en-au English (Australia)
en-ca English (Canada)
en-gb English (UK)
en-gh English (Ghana)
en-ie English (Ireland)
en-in English (India)
en-ng English (Nigeria)
en-nz English (New Zealand)
en-ph English (Philippines)
en-tz English (Tanzania)
en-uk English (UK)
en-us English (US)
en-za English (South Africa)
en English
eo Esperanto
es-es Spanish (Spain)
es-us Spanish (United States)
es Spanish
et Estonian
fi Finnish
fr-ca French (Canada)
fr-fr French (France)
fr French
gu Gujarati
hi Hindi
hr Croatian
hu Hungarian
hy Armenian
id Indonesian
is Icelandic
it Italian
ja Japanese
jw Javanese
km Khmer
kn Kannada
ko Korean
la Latin
lv Latvian
mk Macedonian
ml Malayalam
mr Marathi
my Myanmar (Burmese)
ne Nepali
nl Dutch
no Norwegian
pl Polish
pt-br Portuguese (Brazil)
pt-pt Portuguese (Portugal)
pt Portuguese
ro Romanian
ru Russian
si Sinhala
sk Slovak
sq Albanian
sr Serbian
su Sundanese
sv Swedish
sw Swahili
ta Tamil
te Telugu
th Thai
tl Filipino
tr Turkish
uk Ukrainian
ur Urdu
vi Vietnamese
zh-cn Chinese (Mandarin/China)
zh-tw Chinese (Mandarin/Taiwan)
728x90

4. 예제 Code

이번에는 gtts 모듈을 이용하여 텍스트를 음성으로 변환하는 방법에 대해서 알아보았다.

위에 나온 예제 파일은 Github에 올려놓았다.

해당 내용에 대해서 문제가 있거나 궁금한 내용이 있다면 Github Issus 혹은 댓글로 남겨주면 답변 하도록 하겠다.

GitHub - happylie/python-example-code: Python Example Code

Python Example Code. Contribute to happylie/python-example-code development by creating an account on GitHub.

github.com

728x90
728x90


🌵댓글

 

loading