Voice100에는 신경 TTS/ASR 모델이 포함됩니다. Voice100의 추론은 모델이 작고 재귀가없는 CNN에만 의존하기 때문에 저렴한 비용입니다.
TTS 모델은 정렬 모델과 오디오 모델의 두 가지 하위 모델로 구성됩니다. 정렬 모델 예측 텍스트 정렬 텍스트가 주어진 텍스트 정렬. 정렬 된 텍스트는 텍스트와 텍스트 정렬에서 생성됩니다. 오디오 모델 예측 세계 기능 (F0, 스펙트럼 엔벨로프, 코딩 된 Aperiodicity)이 정렬 된 텍스트를 제공합니다.
정렬 네트워크
그래프 TD
[입력 텍스트] -> | hello | B (임베딩)
B-> C (1D 역 잔차 X4)
C-> D (Convolution)
D-> | H : 0,1 E : 0,2 L : 1,1 L : 1,1 O : 1,2 | e [정렬]
오디오 네트워크
그래프 TD
[정렬 된 텍스트] -> | _Hee_L_L_OO | B (임베딩)
B-> C (1D 역 잔차 X4)
C-> D (1D 전환 컨볼 루션)
d-> e (1D 역 잔차 X3)
e-> f (컨볼 루션)
f-> g [세계 매개 변수]
| Name | Type | Params
-----------------------------------------
0 | embedding | Embedding | 14.8 K
1 | layers | Sequential | 8.6 M
-----------------------------------------
8.6 M Trainable params
0 Non-trainable params
8.6 M Total params
17.137 Total estimated model params size (MB)
| Name | Type | Params
-------------------------------------------
0 | embedding | Embedding | 14.8 K
1 | decoder | VoiceDecoder | 11.0 M
2 | norm | WORLDNorm | 518
3 | criterion | WORLDLoss | 0
-------------------------------------------
11.1 M Trainable params
518 Non-trainable params
11.1 M Total params
22.120 Total estimated model params size (MB)
정렬 모델의 입력은 입력 텍스트의 토큰 시퀀스입니다. 입력 텍스트는 소문자이며 문자로 토큰 화되어 텍스트 인코더로 인코딩됩니다. 텍스트 인코더는 어휘에 28자가 있으며 여기에는 알파벳이 낮은 알파벳, 공간 및 묵시록이 포함됩니다. 어휘에서 찾을 수없는 모든 문자는 제거됩니다.
정렬 모델의 출력은 길이가 입력 토큰 수와 동일한 타이밍 쌍의 시퀀스입니다. 쌍에는 토큰 이전의 프레임 수와 토큰의 프레임 수의 두 값이 있습니다. 하나의 프레임은 20ms입니다. 정렬 된 텍스트는 입력 텍스트와 타이밍 쌍에서 생성됩니다. 정렬 된 텍스트의 길이는 오디오의 총 프레임 수입니다.
오디오 모델의 입력은 인코딩 된 정렬 된 텍스트이며, 원래 텍스트의 토큰 간격을 위해 어휘에 추가 된 토큰이 추가 된 것을 제외하고는 정렬 모델 사전 프로세싱과 동일한 방식으로 인코딩됩니다.
오디오 모델의 출력은 F0, F0 존재, 로그 스펙트럼 엔벨로프, 코딩 된 aperiodicity의 시퀀스입니다. F0 존재는 부울 값이며, F0이 그렇지 않으면 FALSE를 사용할 수있을 때 사실입니다. F0 존재가 거짓 일 때 F0은 0으로 강요됩니다. 하나의 프레임은 10ms입니다. 출력의 길이는 입력 길이보다 두 배입니다.
ASR 모델은 CTC 손실을 예측하도록 훈련 된 9 층 Mobilenet-like 역전 잔차입니다.
ASR 네트워크
그래프 TD
a [Mel Spectrogram] -> B (1D 역방향 잔차 x 12)
B-> C (Convolution)
c-> g [정렬 된 텍스트의 로짓]
| Name | Type | Params
----------------------------------------------------------------
0 | encoder | ConvVoiceEncoder | 11.6 M
1 | decoder | LinearCharDecoder | 14.9 K
2 | loss_fn | CTCLoss | 0
3 | batch_augment | BatchSpectrogramAugumentation | 0
----------------------------------------------------------------
11.6 M Trainable params
0 Non-trainable params
11.6 M Total params
23.243 Total estimated model params size (MB)
정렬 모델은 MFCC 오디오 기능의 정렬 된 텍스트를 예측하도록 훈련 된 2 층의 양방향 LSTM입니다. 정렬 모델은 데이터 세트가 TTS 모델을 훈련시키기위한 정렬 된 텍스트를 준비하는 데 사용됩니다.
| Name | Type | Params
----------------------------------------------------------------
0 | conv | Conv1d | 24.7 K
1 | lstm | LSTM | 659 K
2 | dense | Linear | 7.5 K
3 | loss_fn | CTCLoss | 0
4 | batch_augment | BatchSpectrogramAugumentation | 0
----------------------------------------------------------------
691 K Trainable params
0 Non-trainable params
691 K Total params
1.383 Total estimated model params size (MB)
voice100-prepare-dataset
--dataset ljspeech
--language en
--use_phone
voice100-prepare-dataset
--dataset librispeech
--language en
--use_phone
voice100 fit
--config config/asr_en_phone_base.yaml
--trainer.accelerator gpu
--trainer.devices 1
--trainer.precision 16
--trainer.default_root_dir ./outputs/asr_en_phone_base 이것은 정렬 된 텍스트를 data/${DATASET}-phone-align.txt 로 생성합니다.
voice100-align-text
--batch_size 4
--dataset ljspeech
--language en
--use_phone
--checkpoint asr_en_phone_small-20230309.ckptvoice100 fit --config voice100/config/align_en_phone_base.yaml
--trainer.accelerator gpu
--trainer.devices 1
--trainer.precision 16
--trainer.default_root_dir=./outputs/align_en_phone_base 이것은 통계를 data/${DATASET}-stat.pt 로 생성합니다.
voice100-calc-stat
--dataset ljspeech
--language en
--output data/audio-stat.pyvoice100 fit --config voice100/config/tts_en_phone_base.yaml
--trainer.accelerator gpu
--gpus 1
--precision 16
--trainer.default_root_dir=./outputs/tts_en_phone_basevoice100-export-onnx
--checkpoint model/ ${MODEL} /lightning_logs/version_0/checkpoints/last.ckptCMU 모델은 G2P_EN의 출력을 원시 텍스트 대신 텍스트 표현으로 사용하는 모델입니다.
이 명령은 데이터 세트의 텍스트를 ./data/[dataset]-phone-[split].txt 로 변환합니다. 그런 다음 --use-phone 으로 voice100-train-[model] 실행하십시오.
voice100-prepare-dataset
--dataset ljspeech
voice100-prepare-dataset
--dataset librispeech
--split train
voice100-prepare-dataset
--dataset librispeech
--split valCMU 멀티 태스킹 모델은 입력이 정렬 된 텍스트이며 출력은 월드 보코더 매개 변수 및 CMU 전화입니다. CMU 멀티 태스킹 모델을 훈련 시키려면 영어 및 CMU 전화에 대한 정렬 데이터가 필요합니다.
./data/ljspeech-align-train.txt./data/ljspeech-phone-align-train.txt그런 다음 실행하십시오
MODEL=ttsaudio_en_mt_conv_base
voice100-train-ttsaudio-mt
--gpus 1
--dataset ${DATASET}
--language ${LANGUAGE}
--batch_size 32
--precision 16
--max_epochs 150
--default_root_dir ./model/ ${MODEL} Voice100 런타임을 사용하고 ONNX 파일을 내 보냅니다.
| 이름 | 모델 클래스 | 데이터 세트 | 다운로드 |
|---|---|---|---|
| ASR_EN_SMALL-20230225 | AudiotoalignText | Librispeech, LJ Speech 1.1 | 다운로드 |
| ASR_EN_BASE-20230319 | AudiotoalignText | Librispeech, LJ Speech 1.1 | 다운로드 |
| ASR_EN_PHONE_SMALL-20230309 | AudiotoalignText | Librispeech, LJ Speech 1.1 | 다운로드 |
| ASR_EN_PHONE_BASE-20230314 | AudiotoalignText | Librispeech, LJ Speech 1.1 | 다운로드 |
| ASR_JA_PHONE_SMALL-20230104 | AudiotoalignText | 일반적인 목소리 12.0 JA | 다운로드 |
| ASR_JA_PHONE_BASE-20230104 | AudiotoalignText | 일반적인 목소리 12.0 JA | 다운로드 |
| align_en_base-20230401 | TextToAlignText | LJ 연설 1.1 | 다운로드 |
| TTS_EN_BASE-20230407 | AlignTextToAudio | LJ 연설 1.1 | 다운로드 |
| align_en_phone_base-20230407 | TextToAlignText | LJ 연설 1.1 | 다운로드 |
| tts_en_phone_base-20230401 | AlignTextToAudio | LJ 연설 1.1 | 다운로드 |
| align_ja_phone_base-20230203 | TextToAlignText | 코코로 연설 v1.2 큰 | 다운로드 |
| tts_ja_phone_base-20230204 | AlignTextToAudio | 코코로 연설 v1.2 큰 | 다운로드 |
| ASR_EN_BASE-20210628 (더 이상 사용되지 않음) | Audioalignctc | LJ 연설 1.1 | 다운로드 |
| align_en_lstm_base_ctc-20210628 (더 이상 사용되지 않음) | Audioalignctc | LJ 연설 1.1 | 다운로드 |
| align_en_phone_lstm_base_ctc-20220103 (더 이상 사용되지 않음) | Audioalignctc | LJ 연설 1.1 | 다운로드 |
| align_ja_lstm_base_ctc-20211116 (더 이상) | Audioalignctc | 코코로 연설 v1.1 작은 | 다운로드 |
| align_ja_phone_lstm_base_ctc-20221230 (더 이상 사용되지 않음) | Audioalignctc | 코코로 연설 v1.1 작은 | 다운로드 |
| TTSALIGN_EN_CONV_BASE-20220409 (더 이상 사용되지 않음) | TextToAlignTextModel | LJ 연설 1.1 | 다운로드 |
| TTSALIGN_EN_PHONE_CONV_BASE-20220409 (더 이상 사용되지 않음) | TextToAlignTextModel | LJ 연설 1.1 | 다운로드 |
| TTSALIGN_JA_CONV_BASE-20220411 (더 이상 사용되지 않음) | TextToAlignTextModel | 코코로 연설 v1.1 작은 | 다운로드 |
| ttsaudio_en_conv_base-20220107 (더 이상 사용되지 않음) | aligntexttoaudiomodel | 코코로 연설 v1.1 작은 | 다운로드 |
| ttsaudio_en_phone_conv_base-20220105 (더 이상) | aligntexttoaudiomodel | LJ 연설 1.1 | 다운로드 |
| ttsaudio_ja_conv_base-20220416 (더 이상 사용되지 않음) | aligntexttoaudiomodel | 코코로 연설 v1.1 작은 | 다운로드 |
| ttsaudio_en_mt_conv_base-20220316 (더 이상 사용되지 않음) | AlignTextToAudiomultitaskModel | LJ 연설 1.1 | 다운로드 |
| ASR_EN_CONV_BASE_CTC-20220126 (더 이상 사용되지 않음) | Audiototextctc | librispeech | 다운로드 |
| ASR_EN_PHONE_CONV_BASE_CTC-20220107 (더 이상 사용되지 않음) | Audiototextctc | librispeech | 다운로드 |
| STT_JA_CONV_BASE_CTC-20211127 (더 이상 사용되지 않음) | Audiototextctc | 일반적인 목소리 6.1 JA | 다운로드 |
| ASR_JA_PHONE_CONV_BASE_CTC-20221225 (더 이상 사용되지 않음) | Audiototextctc | 일반적인 목소리 6.1 JA | 다운로드 |