Efficientspeech 、またはES略して、効率的な神経テキストから音声(TTS)モデルです。 RPI4の104(MRTF)または104秒の音声でMELスペクトログラムを生成します。その小さなバージョンには、わずか266kのパラメーターのフットプリントがあります。これは、Mixerttsなどの現代のTTSの約1%のみです。 6秒の音声を生成すると、90 Mflopsのみが消費されます。
efficientspeechは、U-netに似た浅い(2ブロック!)ピラミッド変圧器です。アップサンプリングは、転置された深さの分離可能な畳み込みによって行われます。
インストール
ESは現在、Pytorch 2.0およびLightning 2.0に移行しています。不安定な機能を期待してください。
pip install -r requirements.txt
コンパイルされたオプションは、トレーニングまたは推論中に--compileを使用してサポートされています。トレーニングのために、熱心なモードはより速いです。小さなバージョンのトレーニングは、A100で約17時間です。推論の場合、コンパイルされたバージョンはより高速です。理由は未知の理由で、コンパイルオプションは--infer-device cudaの場合にエラーを生成しています。
デフォルトでは、Pytorch 2.0は128のCPUスレッド(AMD、RPI4で4)を使用して、推論中に減速を引き起こします。推論中は、それをより低い数に設定することをお勧めします。例: --threads 24 。
Pytorch 2.0はRPI4で遅くなります。デモリリースとICASSP2023モデルの重みを使用してください。
Pytorch 2.0のRTFは〜1.0です。 Pytorch 1.12のRTFは〜1.7です。
または、ONNXバージョンを使用してください。
python3 demo.py --checkpoint https://github.com/roatienza/efficientspeech/releases/download/pytorch2.0.1/tiny_eng_266k.onnx
--infer-device cpu --text "the primary colors are red, green, and blue." --wav-filename primary.wav
固定入力音素長のみをサポートします。必要に応じて、パディングまたは切り捨てが適用されます。 --onnx-insize=<desired value>を使用して変更します。デフォルトの最大音素の長さは128です。たとえば、:
python3 convert.py --checkpoint tiny_eng_266k.ckpt --onnx tiny_eng_266k.onnx --onnx-insize 256
データセットフォルダーを選択します:eg <data_folder> = /data/tts -Directoryデータセットが保存される場合。
カスタムKSSデータセットをダウンロード:
cd efficientspeech
mkdir ./data/kss
カスタムKSSデータセットをこちらからダウンロードしてください
データセットを準備: <parent_folder> -efficientspeechがgitクローン化された場所。
cd <parent_folder>/efficientspeech
config/LJSpeech/preprocess.yamlの編集:
>>>>>>>>>>>>>>>>>
path:
corpus_path: "./data/tts/kss"
lexicon_path: "lexicon/korean-lexicon.txt"
raw_path: "./data/tts/kss/wavs"
preprocessed_path: "./preprocessed_data/kss"
>>>>>>>>>>>>>>>>
/data/tts <data_folder>に置き換えます。
ここからAlignmentデータをpreprocessed_data/KSS/TextGridにダウンロードします。
データセットを準備します:
python prepare_align.py config/kss/preprocess.yaml
python preprocess.py config/kss/preprocess.yaml
これには1時間ほどかかります。
詳細については、データセットを準備するためのFastSpeech2実装。
小さなes
デフォルト:
--precision=16 。その他のオプション: "bf16-mixed", "16-mixed", 16, 32, 64 。--accelerator=gpu--infer-device=cuda--devices=1utils/tools.pyのその他のオプションをご覧ください python3 train.py
小さなes
python3 train.py --n-blocks 3 --reduction 2
ベースES
python3 train.py --head 2 --reduction 1 --expansion 2 --kernel-size 5 --n-blocks 3 --block-depth 3
python3 demo.py --checkpoint ./lightning_logs/version_2/checkpoints/epoch=4999-step=485000.ckpt --text "그는 괜찮은 척하려고 애 쓰는 것 같았다." --wav-filename base.wav
ES対FS2対PartaSpeech vs Lightspeech
詳細については、次のリポジトリを参照してください。
synthesize.py 、韓国のtext2phoneme関数を修正[✅]この作業が便利だと思う場合は、引用してください。
@inproceedings{atienza2023efficientspeech,
title={EfficientSpeech: An On-Device Text to Speech Model},
author={Atienza, Rowel},
booktitle={ICASSP 2023-2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
pages={1--5},
year={2023},
organization={IEEE}
}