728x90
728x90
파이썬 gtts 모듈을 이용한 텍스트 음성 변환 방법
구글, 네이버, 카카오 등 여러 IT 회사에서 텍스트를 음성으로 변환하는 모듈(Module), SDK를 제공하고 있다.
- 구글 : gtts(Google Text-to-Speech)
- 네이버 : 클로버(Clova) API
- 카카오 : 카카오 음성 API
이중 이번에는 구글에서 만든 gtts(Google Text-to-Speech)라는 파이썬 모듈을 이용하여 텍스트를 음성으로 변환하는 방법에 대해서 알아보도록 하자.
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
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
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.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
자세한 사용 방법은 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 혹은 댓글로 남겨주면 답변 하도록 하겠다.
728x90
728x90
🌵댓글