음성합성(TTS)를 사용하기

우분투 9.04를 기준으로 TTS를 설정하고 사용하는 방법을 소개해 보겠습니다.
여자 목소리 나옵니다.!! 그럼 고고!! :)

free TTS 인 festival을 사용해 쉽게 텍스트파일을 목소리로 들어볼 수 있습니다.
현재는 영문만 읽어 주지만, 추후 -자유로운- 한글 TTS의 등장을 기대합니다.

[b:dpwrzcsd]1. festival 설치[/b:dpwrzcsd]

[code:dpwrzcsd]$ sudo apt-get install festival[/code:dpwrzcsd]
이제 테스트 해 봅시다

[code:dpwrzcsd]$ echo "Hey! listen mr. boy." | festival --tts[/code:dpwrzcsd]
이렇게 간단하게 TTS를 체험해 볼 수 있습니다… 만, 이효리에게 뺨 맞을 멍청한 남자 목소리를 들으실 수 있으실 겁니다.
이제 목소리들을 추가해 보겠습니다.

[b:dpwrzcsd]2. 추가 -외부- 음성 설치[/b:dpwrzcsd]
우분투 패키지로 몇 종류의 목소리 들이 있지만, 품질이 좋은 목소리들은 제외되어 있다고 합니다. [url=http://ubuntuforums.org/showthread.php?t=677277:dpwrzcsd]이 링크[/url:dpwrzcsd]에서 MonkeeSage가 보여준 대로 Nitech HTS voices들을 설치해 보겠습니다.

아래 내용을 instNitechVoices.sh 로 저장한 뒤:

[code:dpwrzcsd]#!/bin/bash
mkdir hts_tmp
cd hts_tmp/
wget http://hts.sp.nitech.ac.jp/archives/2.0.1/festvox_nitech_us_awb_arctic_hts-2.0.1.tar.bz2
wget http://hts.sp.nitech.ac.jp/archives/2.0.1/festvox_nitech_us_bdl_arctic_hts-2.0.1.tar.bz2
wget http://hts.sp.nitech.ac.jp/archives/2.0.1/festvox_nitech_us_clb_arctic_hts-2.0.1.tar.bz2
wget http://hts.sp.nitech.ac.jp/archives/2.0.1/festvox_nitech_us_rms_arctic_hts-2.0.1.tar.bz2
wget http://hts.sp.nitech.ac.jp/archives/2.0.1/festvox_nitech_us_slt_arctic_hts-2.0.1.tar.bz2
wget http://hts.sp.nitech.ac.jp/archives/2.0.1/festvox_nitech_us_jmk_arctic_hts-2.0.1.tar.bz2
for t in ls festvox_nitech_us_* ; do tar xvf $t ; done
mkdir /usr/share/festival/voices/us
mv lib/voices/us/nitech_us_* /usr/share/festival/voices/us/
mv lib/hts.scm /usr/share/festival/hts.scm
cd ../
rm -rf hts_tmp/[/code:dpwrzcsd]
루트 권한으로 실행합니다.

[code:dpwrzcsd]$ sudo bash instNitechVoices.sh[/code:dpwrzcsd]
6종류의 고품격 목소리들이 설치 되었지만 여전히 기본 목소리가 나오죠. 이제 설치한 목소리들을 들어보겠습니다.

[b:dpwrzcsd]3. 목소리 바꿔 들어보기[/b:dpwrzcsd]
아래와 같이 festival 쉘을 실행합니다.

[code:dpwrzcsd]$ festival[/code:dpwrzcsd]
프롬프트에서 (voice.list)를 입력해 보면 설치된 목소리들을 보실 수 있습니다. festival의 명령어들은 괄호로 시작해 괄호로 끝납니다.

[code:dpwrzcsd]festival> (voice.list)
(kal_diphone
nitech_us_rms_arctic_hts
nitech_us_jmk_arctic_hts
nitech_us_bdl_arctic_htskal_diphone
nitech_us_clb_arctic_hts
nitech_us_slt_arctic_hts
nitech_us_awb_arctic_hts)[/code:dpwrzcsd]
목소리 설정은 다음과 같이 "voice_"를 접두어로 붙여 입력합니다.

[code:dpwrzcsd]festival> (voice_nitech_us_slt_arctic_hts)[/code:dpwrzcsd]
이제 들어보죠.

[code:dpwrzcsd]festival> (intro) [/code:dpwrzcsd]
저는 개중 이 여자 목소리가 맘에 드네요. 이제 이 목소리를 기본 목소리로 바꾸어 보겠습니다.

[b:dpwrzcsd]4. 기본 목소리 설정[/b:dpwrzcsd]
festival의 설정파일은 자동으로 생성되지 않습니다. 새로 만들어

[code:dpwrzcsd]$ sudo vi /etc/festival.scm [/code:dpwrzcsd]
다음과 같이 내용을 추가해 줍니다. 역시 괄호를 포함해 주세요.

[code:dpwrzcsd](set! voice_default 'voice_nitech_us_slt_arctic_hts)[/code:dpwrzcsd]

설정을 마쳤습니다. 이제 다시 들어봅시다.

[code:dpwrzcsd]$ echo "Hey! listen mr. boy." | festival --tts[/code:dpwrzcsd]

[b:dpwrzcsd]5. 응용! 스크립트로 듣기[/b:dpwrzcsd]
앞서 테스트용으로 사용한 festival 쉘의 문법대로 스크립트 파일을 만들어 철수와 영희가 대화하도록 해 보겠습니다.

[code:dpwrzcsd]
#!/usr/bin/env festival
(voice_nitech_us_slt_arctic_hts)
(SayText "Hello Chul-Su?")
(voice_nitech_us_rms_arctic_hts)
(SayText "Hello Young-Hee?")
(voice_nitech_us_slt_arctic_hts)
(SayText "How r u?")
(voice_nitech_us_rms_arctic_hts)
(SayText "fine thank you. and you?")
(voice_nitech_us_slt_arctic_hts)
(SayText "fine thank you.")
(exit)[/code:dpwrzcsd]
위 내용을 저장해 실행 속성을 주고 실행 해 보세요.

참고문서

http://ubuntuforums.org/showthread.php?t=751169 http://ubuntuforums.org/showthread.php?t=677277

와우!!! 예전에 분도님 엑스챗에서의 '강분도!'하는 게 탐나서 저도 만들어보다가 실패했는데…

이거 정말 좋은데요???

  • 오타 지적 ^^

instNitechVoices.sh 파일 내용 중

[quote:13n39ewa]#!/bin/bash
apt-get install [b:13n39ewa]festival[/b:13n39ewa]
mkdir hts_tmp[/quote:13n39ewa]

전 gedit instNitechVoices.sh 으로 편집 후 chmod 755 instNitechVoices.sh && sudo ./instNitechVoices.sh 로 실행했는데 권한은 수정하지 않아도 되나요???

+2 festival 쉘에서 나올 땐 (exit)하면 되네요… 조금 헤맨… ㅋㅋㅋ

아이쿠 오타지적 감사드립니다. 수정하겠습니다. -> 수정했습니다.

좋은 정보 감사합니다. 해봐야겠습니다.

아… 한글TTS가 빨리 나왔으면 좋겠습니다.

이젠 읽는 것도 귀찮…

음… 한글음성 TTS 보이스엔진에 탑재될 남성음성 3으로 등록되고 싶은 1ㅅ

TTS 프로그램 참 좋지요~!
특히 책한권을 통채로 mp3파일로 전환해서 mp3플레이어에 넣고 듣는거 재미 있어요

제대로된 한국어 TTS도 있었으면 좋을텐데 아쉽네요… -ㅅ-