피치 트론

- 훈련 DB가 평범한 사람들의 중립적 인 목소리이지만 세련된 연설을 할 수있는 Prosody Transfer Toolkit.
- 우리는 한국의 방언 (Kyongsang, Cheolla)과 감동적인 프로 소디와 중립적 대화를 옮길 수 있습니다.
- Hard Pitchtron은 Prosody를 엄격하게 전송하여 참조 오디오 및 대상 문장의 문장 구조가 더 잘 일치합니다.
- Soft Pitchtron은 자연스러운 사운드 프로 코디 전송을 추구합니다. 참조 오디오와 대상 문장조차도 내용이 완전히 다릅니다.
- 이 프로젝트로 출시중인 DB는 감정 _tts에서 사용할 수 있습니다.
- 오디오 샘플은 http://jsh-tts.tistory.com/entry/pitchtron에서 제공됩니다
- Pitchtron Paper : https://arxiv.org/abs/2005.10456
세 가지의 차이
- 여기에 제공된 세 가지 지점은 모두 번영 전달을위한 것입니다.
- 원하는 스타일, 문장 및 목소리의 연설을 생성 할 수 있습니다.
- 참조 오디오 스피커는 누구나 될 수 있으며 그 사람은 교육 데이터에 포함될 필요가 없습니다.
- 대상 스피커 (합성 오디오의 음성)는 교육 데이터에 포함되어야합니다.
- 단단하고 부드러운 피치 토른을 사용하여 모델이 평범하고 중립적 인 연설로만 훈련 된 경우에도 'Kyongsang'방언 'Cheolla'방언 및 정서적 스타일을 종합 할 수 있습니다.
- 반면, 글로벌 스타일 토큰의 경우 훈련 시간 동안 원하는 스타일의 DB가 필요합니다.
- 나는 한국의 콩산 anc cheolla 방언에서 말하기 위해이 피치 트론을 제안했다.
- 이 방언의 DB는 매우 제한적이며 '피치 윤곽'은 자연스럽게 참조하는 데 중요합니다. 이것은 또한 다른 많은 피치에 따른 언어 (일본어), 톤 랑우지 (중국어) 및 감정적 말하기 스타일에도 해당됩니다.
| 시간적 해결 | 선형 제어 | 보컬 범위 조정 | 비 평면 참조 | 보이지 않는 스타일 지원 | 치수 분석 요구 사항 |
|---|
| GST | 엑스 | 엑스 | 엑스 | 영형 | 엑스 | 영형 |
| 소프트 피치 트론 | 영형 | * | 영형 | 영형 | 영형 | 엑스 |
| 하드 피치 트론 | 영형 | 영형 | 영형 | ** | 영형 | 엑스 |
- *: 소프트 피치 트론을 사용하면 자연스럽게 들릴 수있는 한 피치를 제어 할 수 있습니다. 대상 스피커의 보컬을 벗어난 경우 자연스러운 소리를 내기 위해 잘립니다.
- ** : Hard Pitchtron은 제한된 비 평면 참조를 허용합니다.
- 제한이없는 비율 : 텍스트는 다를 수 있지만 문장의 구조는 일치해야합니다.
| 문장 |
|---|
| 참조 | "그짝허고 그짝허고지는지는 이야기허고 싶지 않아요 않아요" |
| 목표 | "친구허고 친구허고 갸는 갸는 나들이가고 싶은것 같아요 같아요" |
- 시간 해상도 : 타임 스텝으로 스타일을 다르게 제어 할 수 있습니까?
- 선형 제어 : 피치 (참고)가 어떤 양을 확장 할 것인지 정확히 제어 할 수 있습니까? 입력이 변경됨에 따라 임베딩 치수의 척도 변화를 파악하기 위해 임베딩 공간을 탐색 할 필요가 없습니까?
- 보컬 범위 조정 : 참조 스피커와 대상 스피커의 보컬 범위가 크게 다른 경우 대상 스피커의 보컬 범위에서 자연스럽게 참조 할 수 있습니까?
- 비 평면 참조 : 참조 문장과 대상 문장이 다른 경우 자연스럽게 합성 할 수 있습니까?
- 보이지 않는 스타일 지원 : 원하는 참조 오디오가 훈련 중에 본 적이없는 스타일 인 경우 자연스럽게 전송할 수 있습니까?
- 치수 분석 요구 사항 :이 모델을 제어 할 수있는 어떤 토큰/치수 제어가 있는지 분석해야합니까?
1. 소프트 피치 트론
- 이 지점은 평행 한 제한된 비 평행 및 비 평행 문장의 감독되지 않은 프로 시브 전달을 제공합니다.
- 병렬 : 참조 오디오 문장 및 대상 합성 문장 일치.
- 제한된 비 평선 : 위에서 언급했습니다.
- 비 임금 : 참조 오디오 문장 및 대상 합성 문장은 일치 할 필요가 없습니다.
- 글로벌 스타일 토큰과 유사하지만 몇 가지 장점이 있습니다.
- 훈련 중에 보이지 않는 스타일에 훨씬 더 강력합니다.
- 제어하기가 훨씬 쉽습니다.
- 각 토큰이하는 일을보기 위해 토큰이나 치수를 분석 할 필요가 없습니다.
- 참조 오디오의 피치 범위를 대상 스피커의 피치 범위에 맞게 확장하여 성별 간 전송이 더 자연 스럽습니다.
- 모든 음소 입력에 대한 피치를 제어 할 수도 있습니다
- 참조 오디오의 피치 범위는 대상 스피커에 맞게 확장되어 성별 간 전송이 더 자연 스럽습니다.
- 피치에 대한 귀하의 제어는 그렇게 엄격하지 않아 자연스러운 양으로 만 확장됩니다.
2. 하드 피치 트론
- 이 지점은 감독되지 않은 병렬 및 '제한된 비 평행'이 감독되지 않은 번영 전달을 제공합니다.
- 대신 리듬과 피치는 참조 오디오와 정확히 동일합니다.
- 참조 오디오의 피치 범위는 대상 스피커에 맞게 확장되어 성별 간 전송이 더 자연 스럽습니다.
- 당신은 피치 범위를 엄격하게 제어 할 수 있습니다. 부 자연스러운 사운드가 발생하더라도 확장되는 양까지.
3. 글로벌 스타일 토큰
- 글로벌 스타일 토큰 구현. 글로벌 스타일 토큰
- Pitchtron과 달리 글로벌 스타일 토큰은 훈련 단계에서 볼 수있는 스타일에만 잘 작동하는 경향이 있습니다.
- 피치 범위를 조정할 수 없으므로 참조 오디오가 대상 스피커의 보컬 범위를 벗어난 경우 시끄러운 사운드가 발생합니다.
- 훈련 중에 보이지 않는 새로운 스타일에는 강력하지 않기 때문에 때로는 너무 큰 에너지 또는 너무 긴 일시 정지로 말이 발생합니다.
멀티 스피커 한국 TTS를위한 전처리 단계
python preprocess.py --dataset={following keywords}
순서대로 실행하십시오. 필요에 따라 일부 부품을 선택할 수 있습니다.
- selvas_multispeaker_pron
- public_korean_pron
- integrate_dataset
- check_file_integrity
- generate_mel_f0
1. Selvas_multispeaker_pron
- 각 스피커 아래에서 원시 PCM에서 WAV_22050
- src : '{data_root}/{speaker}/raw/*. pcm'
- dst : '{data_root}/{speaker}/wav_22050/*. Wav'
- 25 상단 DB로 다듬습니다
- 데이터 분할 : 400 오디오마다 평가 및 테스트를 위해 동일하게 만드십시오.
- 기차 : 33194 Wavs
- 평가 : 83 Wavs
- 테스트 : 84 Wavs
- Phoneme에있는 스크립트로 메타 파일 생성 *filelists/single_language_selvas/train_file_list_pron.txt
2. public_korean_pron
- 다운로드 장소 : 서울말 download 발화 말뭉치
- 샘플링 속도를 22050 Hz로 정규화합니다 (이 DB는 불규칙한 SR이 있습니다)
- 상위 25dB로 트림
- 원천:
- Wav_16000/{speaker}/*. wav
- pron/{speaker}/t **. txt
- 스크립트에서 제외 :
- wavs를 wav_16000으로 옮기고 옮기기위한 스크립트는 포함되어 있지 않습니다. 이 형태로 직접 만들어야합니다
- 모든 스피커에 대한 텍스트 파일은이 DB에서 동일 하므로이 공유 스크립트를 문학별로 나누었습니다.
- 또한 G2P 스크립트도 포함되지 않습니다
- 이 DB의 추가 오류가 있습니다
1. Missing speaker: fy15, mw12
2. Wrong data format: mw13_t01_s11.wav, mw13_t01_s12.wav, mw02_t10_s08.wav
3. Overlapping files and naming mistakes: mv11_t07_s4' (==mv11_t07_s40), fy17_t15_s18(==fy17_t16_s01), fv18_t07_s63(==fv18_t07_s62)
- DST : WAV_22050/{SPEITER}/*. WAV
3. Integrate_dataset
- 나는 두 명의 한국 DBS를 통합합니다.
- 이것은 여러 언어의 여러 DB가있는 다국어 TTS로 일반화 될 수 있습니다.
- 따라서 각 DB에 대한 언어 코드는이 단계에서 생성 된 통합 메타 텍스트 파일에 추가됩니다.
- 방법
- 소스 파일 목록 ( 'train_file_lists', 'eval_file_lists', 'test_file_lists') 및 대상 파일 목록 (target_train_file_list, target_eval_file_list, target_test_file_list)에서 대상 파일 목록을 수정하십시오.
- 각 DB의 언어 코드를 지정하기 위해 _integrate () 메소드를 수정할 수 있습니다. 지금은 하드 코드가되어 죄송합니다.
- preprocess.py를 실행하십시오
python preprocess.py --dataset=integrate_dataset
4. check_file_integrity
- 이 단계는 읽을 수없는 WAV 경로가있는 메타 파일을 생성합니다.
- 최종 파일리스트에서 제거하거나 조사를 거치고 싶을 수도 있습니다. 그것은 당신에게 있습니다. 이 단계에서는 FilELIST에서 이러한 감지 된 파일을 제거하지 않습니다.
- 아웃 : expluatic_merge_korean_pron _ {}. txt
5. Generate_Mel_F0 (선택 사항)
- 이 단계는 선택 사항입니다. 이 단계는 훈련 기능을 추출하고 파일로 저장합니다.
- SRC : WAV_22050/*. WAV
- DST : Mel/*. Pt 및 F0/*. Pt
6. 단일 스피커 DB로 처음 몇 개의 에포크를 초기화하십시오
- 단일 스피커를위한 별도의 열차, 유효한 파일리스트를 준비하십시오
- 단일 스피커 교육 및 유효성 검사를위한 파일은 멀티 스피커 파일리스트에도 포함되어 있습니다.
- 나는 단일 스피커 DB로 초기 30 개의 에포크를 훈련하는 것을 실험했으며 인코더 디코더 정렬을 많이 학습하는 데 도움이되었습니다.
훈련하는 방법?
1. 명령
python train.py {program arguments}
2. 프로그램 논쟁
| 옵션 | 필수적인 | 목적 |
|---|
| -영형 | 영형 | 체크 포인트를 저장하는 디렉토리 경로. |
| -기음 | 엑스 | 로드 할 예정인 체크 포인트의 경로. |
| -엘 | 영형 | Tensorboard의 로그를 드롭하는 로그 디렉토리. |
3. 사방 모델
*사전 치료 된 모델은 음소에 대해 훈련됩니다. 그들은 합성 할 텍스트를 줄 때 음소를 입력으로 기대합니다.
| 모델 | 사전 검사 점 | 일치하는 과다 모수 |
|---|
| 소프트 피치 트론 | 소프트 피치 트론 | 구성 |
| 하드 피치 트론 | 하드 피치 트론 | 구성 |
| 글로벌 스타일 토큰 | GST | 구성 |
| 웨이브 글로우 보코더 | 웨이브 글로우 | - |
합성 방법?
1. 소프트 피치 트론
python inferent_soft_pitchtron.py
2. 하드 피치 트론
python inference_hard_pitchtron.py
3. GST
python inference_gst_tts.py
팁!
- 크래킹 소리를 방지하려면 참조 오디오 보컬 범위를 대상 스피커 보컬 범위로 조정해야합니다.
- 이 부분은 우리 코드에서 구현되지만 대상 스피커 보컬 범위는 10 개의 오디오를 샘플링하고 최대 Min을 분산으로 취함으로써 거칠게 계산됩니다.
- 대상 스피커 보컬 범위에 더 정확한 통계를 사용하면 훨씬 더 나은 사운드를 얻을 수 있습니다.
감사의 말
- 이 자료는 산업 기술 혁신 프로그램 (No. 10080667, 사운드 소스 다각화를 통해 로봇의 감정과 성격을 표현하기위한 대화 연설 합성 기술 개발)에서 무역 산업 및 에너지 (Motie, Korea)가 지원하는 작업을 기반으로합니다.
- 이 멋진 남자의 음소 표지에 대한 그래프에 관한 도움을 받았습니다 => jeongpil_lee
- 이 저장소는 다음 paper => (pitchtron) https://arxiv.org/abs/2005.10456의 저자 구현입니다.
- 참조 된 저장소
| 기부금 | URL |
|---|
| 타코 트론 2 | https://github.com/nvidia/tacotron2 |
| 멜로트론 | https://github.com/nvidia/mellotron |
| 웨이브 글로우 | https://github.com/nvidia/waveglow |
| 한국 텍스트 처리 | https://github.com/keithito/tacotron |