본문 바로가기

Linux/function

[RPI/Python] 라즈베리파이(or 리눅스) TTS 음성 출력

728x90
반응형
SMALL

TTS: TextToSpeech, 즉 텍스트를 음성으로 출력해보겠습니다.

TTS 오픈소스는 다양하지만, 한글을 읽고 싶기 때문에 한국어를 지원해주는 eSpeak를 사용해보겠습니다.

 

  • 라즈베리파이 오디오 설정

오디오 단자에 스피커를 꽂고, 아무 소리나 재생했더니 소리가 나지 않았습니다.

알고보니 출력단자를 HDMI로 잡고 있었던 것.

디스플레이를 위해 사용한 HDMI는 소리가 나지 않으므로 출력 단자를 바꾸어 줍니다.

sudo raspi-config

위처럼 입력하여 설정화면 진입 후, System Options > Audio

그럼 위의 그림 처럼 HDMI1로 선택되어 있는 것을 Headphones로 바꾸어 줍니다.

 

소리가 잘 나오는 것을 확인 할 수 있습니다!

 

  • eSpeak 설치
sudo apt-get install espeak

 

  • TTS 실행
espeak -v ko "안녕하세요 반가워요"
espeak "Hello"

영어는 espeak ,

한글은 -v ko 를 붙여 실행하면 아주 올드한 목소리가 나오는것을 볼 수 있습니다.

 

espeak -s 160 -p 95 -a 200 -v ko+f3 "안녕하세요 반가워요"
  • -s 160 은 분당 160 단어의 속도를 나타냅니다. 범위는 80~260이며 기본값은 165입니다.
  • -p 95 는 pitch를 나타내고 범위는 0~99이며 기본갑은 50입니다.
  • -a 200 은 볼륨을 나타냅니다.범위는 0~200이며 기본값은 100입니다.
  • -v ko+f3 은 한국어(ko)의 3번째 목소리(f3)를 나타냅니다.

Command&Options 보기

 

espeak -f <text file>

위의 커맨드를 통해 text file을 읽을 수도 있습니다.

 

  • Python 실행
import os

def speak(option, msg) :
    os.system("espeak {} '{}'".format(option,msg))
    
option = '-s 160 -p 95 -a 200 -v ko+f3'
msg = '안녕하세요 반가워요'

print('espeak', option, msg)
speak(option,msg)

위와 같이 원하는 옵션과 메세지를 설정해 python으로 실행할 수 있습니다.

 

  • 실행 음성

eSpeak.mp3
0.03MB

tts 오픈소스는 많지만

한국어를 지원하는것을 찾으려니 한정되어 있습니다.

eSpeak를 사용해 목소리톤과 피치, 스피드를 변형해 출력해보았지만

아무래도 원하는 만큼의 느낌은 잘 안나오네요.

데이터 양이 많지 않으면 네이버나 구글 어시스턴스를 유료로 사용하는게 나을것 같다는 결론입니다.^^;;

 

728x90
반응형
LIST

'Linux > function' 카테고리의 다른 글

UDP 포트 포워딩 하기 ― Nginx 리버스 프록시  (0) 2022.12.26