Python으로 macOS Text to Speech 엔진 (NSSpeechSynthesizer) 사용해보기

로봇이든 다른 분야에서든 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 항목으로 들어가면 각 나라별 목소리 리스트와 다운로드 받을 수 있는 체크박스가 존재한다.

끝.

2 Replies to “Python으로 macOS Text to Speech 엔진 (NSSpeechSynthesizer) 사용해보기”

  1. 안녕하세요?
    좋은 글 유심히 잘 읽었습니다.
    궁금한게… 어떤 환경이든지 Python이 구동되면 macOS Text to Speech 엔진 (NSSpeechSynthesizer)을 이용할 수 있나요?
    예를 들어 라즈베리파이 리눅스 환경에서 macOS Text to Speech 엔진 (NSSpeechSynthesizer)을 이용하여 한글 텍스트를 음성으로 서비스하는것이 가능한가요?

    감사합니다.

    1. 당연히 안됩니다. macOS에서 제공하는 엔진을 사용하는 것이기 때문에 다른 운영체제에선 동작하지 않습니다. 라즈베리파이나 리눅스 환경에서 TTS를 사용하시려면, 클라우드 엔진을 추천드립니다.

Leave a Reply to byeongkyuCancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.