# Deep Voice2 음성합성 및 KALDI 음성인식 환경 구축 - 최초 작성일: 2021년 8월 6일(금) ## 목차 [TOC] <!-- ## 의뢰 내용 1. Multi-Speaker Tacotron in TensorFlow TensorFlow implementation of Deep Voice 2: Multi- Speaker Neural Text-to-Speech. (이하 : 딥러닝 음성합성) 의 환경 구축 및 학습, 합성 시스템 구현 2. 학습 데이터를 확보하기 위해 KALDI 란 음성인식 모델로 특정 화자의 일부 음성과 TEXT 데이터로 음성을 학습시킨 후, 해당 화자의 나머지 모든 음성데이터는 해당 음성 인식기 (STT) 로 TEXT 를 뽑아내어 최종 음성합성 데이터로 확보하는 방법을 위해, KALDI 음성 인식 개발 환경 구현하기(http://nblog.syszone.co.kr/archives/9788) 를 참조하여 환경 구축 ## 희망 결과물 - https://github.com/carpedm20/multi-Speaker-tacotron-tensorflow 구동 가능한 전체 환경(학습 환경)을 구축 요청드립니다. - 전처리 및 학습, 딥러닝 음성합성 과정에 대한 설명(사용방법) - python 3.6 과 cuda 8.0, cudnn 6.0, tensorflow 혹은 tensorflow-gpu 1.3.0 환경등, 동작 환 경(설치 및 사용) 구축 - 변경해야 하는 파라미터에 대한 정리 및 적용 - 기본 제공되지 않는 임의의 화자의 음성 데이터를 학습하여 딥러닝 음성합성이 가능하도 록 구축. (학습데이터는 형식을 요청하면 의뢰자가 제공, 단, KALDI 음성 인식 개발 환경을 수주 개발자가 적용하여 어느정도 자동화가 되어야 상호 업무가 빨리 끝남) - 상기 환경을 구축하기 위해 GPU 가 탑재된 하드웨어가 필요할 경우 업무 시작전 협의하 에 SSH 또는 원격 접속 환경 지원 해드립니다.(NVIDIA JETSON AGX XAVIER) --> ## 구축 내용 개요 ### Deep Voice2 음성합성 1. https://github.com/carpedm20/multi-Speaker-tacotron-tensorflow 구동 가능환경 구축 2. python 3.6 과 cuda 8.0, cudnn 6.0, tensorflow 혹은 tensorflow-gpu 1.3.0 환경등, 동작 환 경(설치 및 사용) 구축 3. 변경해야 하는 파라미터에 대한 정리 및 적용 4. 전처리 및 학습, 딥러닝 음성합성 과정에 대한 설명(사용방법) ### KALDI 음성인식 환경 구축 1. https://github.com/kaldi-asr/kaldi.git 구동 가능환경 구축 - http://nblog.syszone.co.kr/archives/9788 블로그 참조 ## 필요사항 - 구글 STT를 사용할 수 있는 api key - 학습/추론에 필요한 GPU - 외부에서 ssh로 접근가능하도록 방화벽이 열려 있어야함. - Deep Voice 2 음성학습을 위한 학습 데이터 제공 필요 ## 사전 테스트 예시 ### Deep Voice2 음성합성 ![](https://i.imgur.com/jqebKfO.png) <!-- ## Dockerfile ``` FROM lablup/common-tensorflow:1.3-py36-cuda8 as tf-binary FROM nvidia/cuda:8.0-cudnn6-runtime-ubuntu16.04 MAINTAINER Mario Cho "m.cho@lablup.com" RUN apt-get update && \ apt-get install -y \ ca-certificates \ wget curl git-core \ vim-tiny zip unzip \ libssl-dev \ libmpdec2 \ proj-bin libproj-dev \ libgeos-dev libgeos++-dev \ mime-support \ gcc g++ make \ xz-utils \ libsqlite3-dev && \ apt-get clean && \ rm -rf /var/lib/apt/lists/ #install Python 3 RUN curl https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz -o /opt/python.tar.xz && \ cd /opt && tar xvf python.tar.xz && \ cd /opt/*/ && ./configure && \ make && make install && \ ln -s -f /usr/local/bin/python3.6 /usr/bin/python RUN curl -fSsL -O https://bootstrap.pypa.io/get-pip.py && \ python get-pip.py && \ rm get-pip.py ENV PYTHONUNBUFFERED=1 \ LD_LIBRARY_PATH="/usr/local/cuda/lib64:/usr/local/nvidia/lib64" \ PATH="/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \ LANG=C.UTF-8 # Install CUDA-8.0 + cuDNN 6.0 RUN ln -s /usr/local/cuda-8.0 /usr/local/cuda && \ ln -s /usr/lib/x86_64-linux-gnu/libcudnn.so.6.0.21 /usr/local/cuda/lib64/libcudnn.so && \ ldconfig RUN apt-get -y update RUN apt-get -y upgrade RUN apt-get install -y ffmpeg ``` ## 설정 ``` export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/python361/lib ``` ## 실행 ``` docker run -it --rm --gpus all --name tts -v home/joonoh/바탕화면/kmong/tts:/ tts /bin/bash docker run -it --rm --gpus all --name tts -v /home/joonoh/desktop/kmong/tts:/home lablup/common-tensorflow:1.3-py36-cuda8 /bin/bash ``` ## 코드 수정 ``` loss_coeff = defaultdict(one) if config.metadata_path.endswith("json"): with open(config.metadata_path, 'r', encoding='utf8') as f: ``` ## 학습 ``` python3 train.py --data_path=datasets/LJSpeech_1_0 --checkpoint_interval 10 ``` ## 추론 ``` python3 synthesizer.py --load_path logs/LJSpeech_1_0_2021-08-04_14-13-15/model.ckpt-10 --text="Winter is coming." --is_korean=False ``` ![](https://i.imgur.com/zZ19KJP.png) 한글은 google stt를 사용해야하여, 영어 데이터로 테스트를 했습니다. -->