지하철 안내방송 만들기 - jihacheol annaebangsong mandeulgi

이번시간엔 평소 놀러가거나 출퇴근 할때 타는 대중교통 중엔 지하철(전철)이 속해 있는데요! 우리가 평소에 듣는 지하철 TTS 안내방송! 어떻게 만드는지 지금부터 설명 들어갑니다!!

준비물 : 오캠 앱(자세하게 알려드리겠습니다), Demo 사이트, 환승음(얼씨구야), 코레일 ID송, 로고음

1. Demo 사이트 들어가기!

자세한 사이트 링크는!

https://www.vocalware.com/index/demo

1-1. 한국어 설정

한국어 설정은 매우 간단합니다~

Demo 사이트에 들어오셨으면 왼쪽 상단에 단어가 English(영어)로 설정되어 있습니다.

그 옆에는 삼각형 화살표가 있고요! 삼각형 화살표를 눌러 밑으로 내려가셔서 Korean(한국어) 상자를 눌러주시면 한국어로 설정됩니다!

1-2. 지하철 TTS 설정

이것도 매우 간단합니다! 아까 설정한 단어 오른쪽에는 TTS가 있는데요 마찬가지로 삼각형 화살표를 누르셔서 설정해주세요!

TTS는 일본어/중국어는 안하셔도 됩니다. 한국어 : Hyeryun / 영어 : Julie(US) * 영어는 변경없이 그대로 해주세요 *

1-3. 단어 입력

단어는 동그란 카톡 채팅모형과 같이 말풍선이 있습니다~ 그걸 눌러주셔서 원하는 역을 하시면 됩니다!

*입력은 이렇게 해주세요 *

ex) 한국어 : 이번역은, 봉명. 봉명 역입니다. 내리실문은, 왼쪽입니다.(오른쪽입니다.)

ex) 영어 : This stop is, Bong-myeong. Bong-myeong. The station number is P 1 7 0. The doors are on your left.(right.) 또는

This stop is Bong myeong. Bong myeong. The staation number is P 1 7 0. The doors are on your left.(right.)

환승역은?

위와 똑같이 입력한 후에

ex) 한국어 : 9호선으로 갈아타실 고객께서는, 이번역에서 내리시기 바랍니다.

ex) 영어 : You can transfer to the line number 9.(신분당선, 경강선 등등은 : Bundang line. 이런식으로 해주세요)

KTX/일반열차 공통역은?

You can also transfer to the fast and convenient KTX or other rail services. Thank you.

환승과 KTX/일반열차 안내방송 설정은?

환승 안내방송 뒤에 위와 똑같이 입력하시면 됩니다!

1-4. 발음 설정

자세한 설명은

https://www.youtube.com/watch?v=JhTvsEG1lIQ&lc=z22uspep5t3lehooq04t1aokg2zp3vnuyikht2oglb5grk0h00410

이 영상을 참고해주세요! 참고로 이 영상의 소유권은 영차이철덕님이시며 제가 아니므로 허락없이 영상을 재업로드 하는 행위는 엄연하 범죄 행위입니다. 공유는 유튜브 링크로 공유해주시고요. 사용시에 영차님께 허락을 맡고 사용하시기 바랍니다.

* 저도 허락맡고 사용하는 겁니다 *

2. 녹음하기

녹음은 https://ohsoft.net/kor/ocam/download.php?cate=1002 이 링크를 들어가셔서 밑으로 내리시고 ZIP/EXE가 있는데 둘 중 아무거나 하셔도 깔끔하게 녹음됩니다!

2-1. 오캠 들어가기!

깔린 오캠 앱을 더블 클릭하셔서 들어가시고요

화면 녹화/게임 녹화/ 소리 녹음이 있는데요

오늘은 녹음 관련된것이니 소리 녹음 누르세요!

그다음! 소리 녹음을 누르시고 마이크 모양의 소리를 누르셔서 마이크 녹화 안하시거나 잡음이 안나고 깔끔하게 녹음하실 분들은 마이크 녹음 안함 해주세요!

2-2. TTS 안내방송 듣기/녹음 시작 단계

TTS 안내방송은 모두 다 입력 후, 오른쪽 하단에 주황색 버튼이 있습니다! 그걸 누르시고 들어보세요

그다음 오캠은 녹음 준비가 완료되면 녹화를 눌러주시고, 주황색 버튼도 빠르고 눌러주시면 나오는 TTS 안내방송이 오캠 녹음이 됩니다!

2-3. 마무리 단계

노선별 풀버전을 하실 분은 녹화 후 일시정지를 누르시면서 녹음해주세요, 그리고 시작할땐 코레일 ID송 녹화 후 시작하시면 됩니다!

역마다 녹화하실분들은 환승역은 얼씨구야 녹화 후 해당역 안내방송 녹화하시고 중지를 눌러주세요!

이상 편집없이 TTS 안내방송 만드는법을 알려주었습니다!

다음 시간에는 수도권 지하철 8호선 TTS 안내방송을 드리겠습니다!(잘 못한 부분도 있어요 ㅜㅜ)

이상 타루의 대중교통 블로그 였습니다! 봐주셔서 감사합니다!

(태그가 깨져 재업합니다 ㅜ)

딥러닝 기반 수도권전철 안내방송 TTS (음성합성시스템) 구축 (0 - 소개)

Team DeepRAIL (Railroad Announcement Improvement with Deep Learning)

(* 스압주의 - 스크롤 내리면 세줄 요약 있음)

0.

이번에 코레일 안내방송 개정이 상당히 말이 많은 상황입니다.

아시다시피 강희선 성우의 기존 안내방송을 TTS로 바꾸면서 상당히 발음이 부정확하고, 불편한 억양의 결과물이 나오게 되었는데요,

저희 팀에서는 일반에 무료로 공개되어 있는

- 서울교통공사 1/2/3/4 호선 안내방송 자료 (Link)

- 국립국어원 <서울말 낭독체 발화 말뭉치> (2007) (Link)

만을 활용하여

기존 코레일 안내방송을 최대한 재현하는 TTS(음성합성 시스템)을 딥러닝 기반으로 구축하는 프로젝트를 최근 시작하였습니다.

아직 초기단계지만, 꽤 유의미한 결과가 나와 이렇게 공유합니다.

차후 연재글을 통해 신경망 구축 및 훈련 방법, 그리고 관련 자료를 공유하도록 하겠습니다.

1. 현재까지의 결과

먼저, 결과는 다음과 같습니다.

2. 타 안내방송과의 비교

디지털미디어시티(경의중앙선) 역에서의 기존 안내방송, 딥러닝으로 합성한 안내방송, 그리고 코레일 2018.7 개정 TTS 안내방송 (동대문역)을 비교해 보았습니다.

한편 코레일에서는 최근 TTS 개정을 3가지 이유를 들면서 옹호했는데요 

(출처 - https://gall.dcinside.com/board/view/?id=train&no=1018882 )

a. 즉시 원하는 문장 생성 가능

b. 공휴일/연휴에 맞춤식 안내방송 서비스 제공 가능

c. 비용 절감

이들은 더 열악한 환경에서 개발된 딥러닝 기반 시스템에서도 모두 만족되는 특성입니다.

a. 즉시 원하는 문장 생성 가능

딥러닝 기반 시스템이라도, 음성 합성 단계에서는 CPU만을 이용해서도 충분히 빠른 속도로 음성을 합성할 수 있습니다. 

(Intel I7-4790k 기준 58글자, 17단어 문장에서 5초 소모. 긴 문장에서는 약 10초 소모)

비록 신경망을 훈련하는데 사용한 안내방송 데이터는 매우 제한적인 틀에 박힌데다, 1~4호선 자료만 있어 매우 제한적(총합 약 40분)이지만, 본 프로젝트에서는 일반적인 안내방송이 아니더라도 음성을 어느정도 수준에서 합성하는데 성공하였습니다.

(사용한 기법에 대해서는 추후 연재에서 설명하도록 하겠습니다.)

b. 공휴일, 연휴에 맞춤식 안내방송 서비스 제공 가능

민원 답변에서 나온 "어린이날에 어린이 목소리로 정차역 안내방송"이 나온다는 말은, 상황에 따라 목소리의 성별과 연령을 변경 가능하다는 뜻 일겁니다.

본 시스템에서는 국립국어원 자료를 활용하여, 한 신경망에서 이론적으로 안내방송 성우 목소리를 포함한 118가지의 목소리를 구현할 수 있습니다. (남/여 20~70대)

필요할 때마다 다시 로딩할 필요 없이 그때 그때 목소리를 바꿀 수 있는 것입니다.

아래는 국립국어원 20대 여성/20대 남성화자 설정으로 합성된 음성입니다.

이 시스템은 특히 딥러닝 기반 시스템이라, 충분한 양과 질의 음성 데이터만 있다면 특정 사람의 목소리를 재현할 수 있습니다. 현재에도 종합운동장 안내방송은 선수 목소리로 이뤄지는 경우가 많은데, 딥러닝을 적용한다면 일반적인 멘트뿐만 아니라, 시즌 별로 경기 상황과 정보를 받아서 실시간으로 특정 선수 목소리로 안내방송을 할 수 있지 않을까요?

c. 비용절감

먼저, 이 결과물을 훈련하는데 사용한 데이터들은 위에서 말한것과 같이 각각 서울교통공사와 국립국어원에서 일반에 무료로 공개한 자료입니다.

또한, 본 신경망을 훈련하는데 쓰는 GPU는 NVIDIA GTX1060(6GB) 입니다. (음성합성 단계에서는 GPU가 없어도 무방합니다.) . 배그는 중옵으로 돌아가던가요? 제가 돌리는 PC는 좀 오래된 사양에 GPU만 추가한 것이라 중옵도 어려울 겁니다. :P

훈련 과정 자체는 약 3일 걸렸습니다.

3. 추후 계획

- 전반적으로 발생하는 ‘걸걸거리는 소리’의 경우 현재 사용하는 vocoder 알고리즘(Griffin-Lim)의 한계로, 이 파트도 딥러닝 기반 WaveNet을 적용하여 해결하는 작업이 진행중입니다. (다른 데이터세트에서는 유의미한 효과를 보았으나 이 작업을 위해 필요한 신경망 훈련만 해도 1주 넘게 걸립니다. 최근 계속 훈련 돌리고 있으니 조금 더 기다려주세요 ㅜㅜ)

- 특정 발음에서만 발생하는 기계음은 데이터 부족으로 생기는 현상입니다. 현재 공개되어 있는 안내방송 중 기존 코레일 안내방송 성우 분이 담당하신 노선은 서울교통공사 관할 1/2/3/4 호선밖에 없어 데이터가 상당히 부족한 상황입니다(보정 후 한글 데이터 기준 약 40분). 혹시라도 공개되었던 코레일 안내방송 자료를 가지고 계시면 공유해주시면 감사하겠습니다.

- 영문 파트의 경우 현재 한국어 역명을 정확하게 발음하도록 훈련하는 작업을 관련 학과 학생의 도움을 얻어 진행중입니다.

마지막으로 실험 삼아 만들어 본 자료입니다. :)

아직 많이 부족한 결과물이지만 끝까지 읽어주셔서 감사합니다.

5. 세줄요약

- 딥러닝으로 기존 서울교통공사(1~4호선) 안내방송 학습시켜서

- 기존 안내방송과 비슷하게 음성을 합성하는 시스템 제작 성공

Team DeepRAIL (engiecat, mecatos95d)*

* In alphabetical order