"멀티 모달 합성을위한 기간 정보주의 네트워크"(https://arxiv.org/pdf/1909.01700.pdf) 논문의 구현.
상태 : 릴리스
Durian은 텍스트 음성 합성 작업을위한 인코더 디코더 아키텍처입니다. Tacotron 2와 같은 이전 아키텍처와 달리주의 메커니즘을 배우지 않지만 Phoneme Durations 정보를 고려합니다. 물론이 모델을 사용하려면 음성화되고 지속 기간이 정렬 된 데이터 세트가 있어야합니다. 그러나 ljspeech dataset (CMU dict)에서 사전 연기 기간 모델을 사용하려고 시도 할 수 있습니다. 아래 링크가 제공됩니다.
Durian 모델은 백본 신시사이저와 지속 시간 예측기의 두 가지 모듈로 구성됩니다. 다음은 종이에 설명 된 Durian과 가장 주목할만한 차이점입니다.
백본 신시사이저 및 지속 시간 모델은 모두 동시에 훈련됩니다. 구현의 경우 단순화 기간 모델은 고정 최대 프레임 수에 대한 정렬을 예측합니다. 이 출력을 BCE 문제로 배울 수 있으며 프레임 축에 대해 합산하거나 두 손실을 모두 사용하여 MSE 문제 (이 손실을 테스트하지 않음)를 config.json 에 설정할 수 있습니다. 실험에 따르면 BCE 버전의 최적화 프로세스는 더 긴 텍스트 시퀀스로 불안정하다는 것을 보여 주었으므로 MSE+BCE 또는 JUST-MSE를 사용하는 것이 좋습니다 (Tensorboard에서 잘못된 정렬을 얻는 경우 신경 쓰지 마십시오).
demo 폴더 (중고 웨이브 글로우 보코더)에서 합성 데모 웨이브 파일 (수렴 전에 많이 얻음)을 확인할 수 있습니다.
우선, pip install --upgrade -r requirements.txt 사용하여 모든 패키지를 설치했는지 확인하십시오. 코드는 pytorch==1.5.0 사용하여 테스트됩니다
저장소를 복제하십시오 : git clone https://github.com/ivanvovk/DurrIAN
종이 기반 Durian 버전 교육을 시작하려면 python train.py -c configs/default.json 실행합니다. python train.py -c configs/baseline.json --baseline 으로 기준선 모델을 훈련하도록 지정할 수 있습니다.
지역 환경에서 모든 것이 잘 작동하는지 확인하려면 python <test_you_want_to_run.py> 에 의해 tests 폴더에서 단위 테스트를 실행할 수 있습니다.
이 구현은 BCE 기간 손실 최소화와 함께 음운화 된 지속 시간 정렬 LJSpeech 데이터 세트를 사용하여 교육을 받았습니다. 이 링크를 통해 찾을 수 있습니다.
이 모델의 주요 단점은 지속 시간 조정 데이터 세트가 필요합니다. filelists 폴더에서 현재 구현 교육에 사용되는 구문 분석 LJSpeech FilleList를 찾을 수 있습니다. 데이터를 사용하려면 LJSpeech와 같은 방식으로 FilleList를 구성했는지 확인하십시오. 그러나 뇌의 시간과 뉴런을 절약하기 위해 내 모델 체크 포인트 (시도하지 않음)에서 LJSpeech 지속 시간 모델을 사용하여 시간을 조정하지 않고 데이터 세트에서 모델을 훈련하려고 시도 할 수 있습니다. 그러나 개인 데이터 세트 정렬에 관심이 있으시면 다음 섹션을주의 깊게 따르십시오.
실험에서 나는 LJSpeech를 Montreal 강제 정렬 도구와 정렬했습니다. 여기에 무언가가 불분명하다면 툴킷의 문서에 대한 지침을 따르십시오. 우선, 알고리즘 정렬에는 몇 가지 단계가 있습니다.
데이터 세트를 올바르게 구성하십시오. MFA는 단일 구조 폴더 {Utterance_id.lab, Utterance_id.wav}의 단일 폴더에 있어야합니다. 모든 텍스트가 .lab 형식인지 확인하십시오.
이 링크를 통해 MFA 릴리스를 다운로드하고 설치 지침을 따르십시오.
MFA로 완료되면 전화 전사가있는 데이터 세트 단어 사전이 필요합니다. 여기에는 몇 가지 옵션이 있습니다.
bin/mfa_generate_dictionary /path/to/model_g2p.zip /path/to/data dict.txt 를 사용하여 MFA 전기 모델 목록에서 사전 간 G2P 모델로 사전을 생성 할 수 있습니다. 기본 MFA 설치는 자동으로 귀하가 사용할 수있는 영어 사전 모델을 제공합니다. 데이터를 준비하고 사전 및 G2P 모델을 준비하면 이제 정렬 할 준비가되었습니다. bin/mfa_align /path/to/data dict.txt path/to/model_g2p.zip outdir 명령을 실행하십시오. 끝날 때까지 기다리십시오. outdir 폴더에는 wavs 정렬이 저장되는 .TextGrid 형식의 특수 파일이있는 폴더가 포함 된 어휘 단어 목록과 폴더가 포함됩니다.
이제 최종 FilleList를 얻기 위해이 텍스트 그리드 파일을 처리하려고합니다. 여기에서 Python 패키지 TextGrid 유용 할 수 있습니다. pip install TextGrid 사용하여 설치하십시오. 여기에서 사용 방법 :
import textgrid
tg = textgrid.TextGrid.fromFile('./outdir/data/text0.TextGrid')
이제 tg 두 개의 객체 세트입니다. 첫 번째 객체에는 정렬 된 단어가 포함되어 있고 두 번째는 정렬 된 음소를 포함합니다. 두 번째가 필요합니다. 획득 된 .TextGrid 파일 filelists 반복하여 전체 데이터 세트에 tg 지속 시간 추출 (프레임!
여러 정렬기에 대한 개요를 찾았습니다. 어쩌면 도움이 될 것입니다. 그러나 MFA를 가장 정확한 정렬 자 중 하나이므로 가장 잘 알고 있으므로 MFA를 사용하는 것이 좋습니다.