Python/TTS

TTS 라이브러리 MeloTTS로 한국어 음성 합성해보기

webnautes 2024. 11. 14. 19:02
반응형

TTS( text-to-speech ) 라이브러리인 MeloTTS를 사용하여 한국어 음성을 합성해봤습니다.  깃허브 주소는 https://github.com/myshell-ai/MeloTTS 입니다. 




2024. 7. 14  최초작성

2024. 11. 9  윈도우에서 실행시 python3 대신 python을 사용해야함. 디폴트 설치로는 파이토치가 CPU를 위해 설치됨

2024. 11. 10 cuda 사용하도록 pytorch 설치하여 테스트 진행

2024. 11. 14




Linux와 macOS, Windows에서 가능한 방법입니다.   최종 문서 작성시 테스트는 Windows에서 진행했습니다.



가급적이면 miniconda나 anaconda 환경에서 진행하세요. conda 환경 만드는 방법은 아래 링크를 참고하세요.

 

Visual Studio Code와 Miniconda를 사용한 Python 개발 환경 만들기( Windows, Ubuntu, WSL2)

https://webnautes.tistory.com/1842



다음 명령들을 차례로 실행해줍니다. 위 두 줄은 conda 환경을 사용할 경우에 필요한 명령어입니다.

 

$ conda create -n melotts python=3.10

$ conda activate melotts

$ git clone https://github.com/myshell-ai/MeloTTS.git

$ cd MeloTTS

$ pip install -e .

$ python -m unidic download



이제 예제코드를 실행해봅니다. 

출처 https://huggingface.co/myshell-ai/MeloTTS-Korean 

 

from melo.api import TTS

# Speed is adjustable
speed = 1.0
device = 'cpu' # or cuda:0

text = "안녕하세요! 오늘은 날씨가 정말 좋네요."
model = TTS(language='KR', device=device)
speaker_ids = model.hps.data.spk2id

output_path = 'kr.wav'
model.tts_to_file(text, speaker_ids['KR'], output_path, speed=speed)



모델 및 필요한 파일이 다운로드 된 후(처음에만 다운로드됩니다.), kr.wav 파일이 아래처럼 생성됩니다. 플레이해보면 코드안에 있는 "안녕하세요! 오늘은 날씨가 정말 좋네요." 말이 재생됩니다.  




두번째로 실행하면 추가 다운로드 없이 실행되지만  실시간으로 사용하기에는 무리가 있어보입니다.




CUDA가 가능하도록 Pytorch를 설치후 진행해봅니다. 설치 방법은 아래 포스트를 참고하세요. 현재 Python 가상 환경에 CUDA  사용가능하게 Pytorch를 설치해주면 됩니다.



Windows에 CUDA 사용할 수 있도록 PyTorch 설치하는 방법

https://webnautes.tistory.com/1850



Ubuntu 22.04에 CUDA 사용할 수 있도록 PyTorch 설치하는 방법

https://webnautes.tistory.com/1845




코드를 수정하여 진행합니다. device 항목에 cpu 대신에 cuda:0을 사용하도록 합니다. 

 

from melo.api import TTS

# Speed is adjustable
speed = 1.2
device = 'cuda:0'

text = "안녕하세요! 오늘은 날씨가 정말 좋네요."
model = TTS(language='KR', device=device)
speaker_ids = model.hps.data.spk2id

output_path = 'kr.wav'
model.tts_to_file(text, speaker_ids['KR'], output_path, speed=speed)



CUDA를 사용하도록 한 후, 실행 속도가 많이 개선 됩니다.




text 변수에 영어 문장을 추가해주면 현재 TTS가 사용하는 모델이  한국어를 말하는 모델이라서 한국 사람이 또박또박 영어를 말하는 듯하게 영어 문장을 발음합니다. 확인해보니 네이버의 클로바 더빙도 똑같더라구요. 




pyQt5를 사용하여 GUI를 제작하여 텍스트를 읽어주는 테스트 프로그램을 만들고 있습니다.



meloTTS +pyQT5 테스트

https://webnautes.tistory.com/2407







참고

[1] ​​https://github.com/myshell-ai/MeloTTS/blob/main/docs/install.md#linux-and-macos-install

 

[2] https://github.com/myshell-ai/MeloTTS/issues/126




반응형