로봇이든 다른 분야에서든 TTS (Text To Speech) 엔진이 필요할 때가 있는데, 보통은 오픈 소스로 공개된 저품질의 엔진이나, 클라우드 엔진을 사용하곤 한다. 물론 요즘 딥러닝 기술이 많이 발전하여 학습 후 실제 목소리와 비슷한 소리를 내는 것도 가능하다곤 하지만, 그건 논외로 하고….
macOS에는 NSSpeechSynthesizer라는 훌륭한 품질의 TTS 엔진 – 그것도 거의 모든 나라의 목소리가 포함되어 있는 – 이 내장되어 있다. 이를 사용하기 위해선 Swift나 ObjectC를 사용할 수도 있지만, 사용하기 쉬운 Python을 이용해서 사용도 가능하다.
먼저 필요한 패키지를 설치한다. 이를 위해 Python3, pip3가 설치되어 있어야 한다. Homebrew (https://docs.brew.sh/Installation)를 이용하면 쉽게 설치 가능하다.
$ pip3 install -U pyobjc
pyobjc 모듈은 Python과 ObjC 간 연결을 위한 것이다. pyobjc는 메타모듈로 이를 설치하면 사용에 필요한 거의 모든 모듈을 다 설치한다.
이제 Python3를 이용하여 다음의 스크립트를 실행해본다.
from AppKit import NSSpeechSynthesizer
speech = NSSpeechSynthesizer.alloc().initWithVoice_("com.apple.speech.synthesis.voice.yuna.premium")
speech.startSpeakingString_(u'안녕? 만나서 반가워요.')
한국어 유나의 목소리로 맑은 음성을 들려줄 것이다. 이외에도 제어를 위한 다양한 함수들이 존재한다.
speech.isSpeaking()
speech.stopSpeaking()
사용 가능한 목소리 리스트를 확인하려면 다음과 같이 입력한다.
>> NSSpeechSynthesizer.availableVoices()
고품질의 목소리를 미리 다운로드 받아야 한다. System Preferences > Accessibility > Speech 에서 System Voice를 선택, Customize 항목으로 들어가면 각 나라별 목소리 리스트와 다운로드 받을 수 있는 체크박스가 존재한다.
끝.