[样品1] [样品2] [ONNX模型] [Flutter App]
TTS模型(Tacotron2,FastPitch),接受了Nawar Halabi的阿拉伯语语音语料库的培训,其中包括用于直接TTS推理的Hifi-Gan Vocoder。

文件:
tacotron2 |天然TTS合成通过调节MEL谱图预测(ARXIV)上的象征
FastPitch | FastPitch:与音调预测(ARXIV)的平行文本对语音通话(ARXIV)
hifi-gan | HIFI-GAN:生成的对抗网络,可高效和高保真语音综合(ARXIV)
您可以在这里收听一些音频样本。
MultiSpeaker重量可用于FastPitch型号。目前,添加了另一种男性声音和两个女性声音。音频样本可以在这里找到。在这里下载权重。此模型也存在一个ONNX版本。
通过将数据与Coqui的XTTS-V2模型合成数据,并从Tunisian_MSA数据集中合成多种声音来创建多孔数据集。
如论文中所述,对模型进行了MSE损失训练。我还使用其他对抗性损失(ADV)训练了模型。区别不大,但我认为(ADV)版本通常听起来有些清晰。您可以自己比较它们。
运行python download_files.py将下载所有预审预定的权重:
下载用于Tacotron2型号(MSE | ADV)的预算权重。
下载FastPitch型号(MSE | ADV)的预算权重。
下载Hifi-Gan Vocoder重量(链接)。将它们放入pretrained/hifigan-asc-v1中,或在configs/basic.yaml中编辑以下行。
# vocoder
vocoder_state_path : pretrained/hifigan-asc-v1/hifigan-asc.pth
vocoder_config_path : pretrained/hifigan-asc-v1/config.json此存储库包括Shakkala和Shakkelha的大气压模型。
权重可以在这里下载。还有一个单独的回购和包装。
- >或者,下载所有型号,然后将ZIP文件的内容放入pretrained文件夹中。
torch torchaudio pyyaml
〜用于培训: librosa matplotlib tensorboard
〜对于演示应用程序: fastapi "uvicorn[standard]"
Tacotron2 / FastPitch from models.tacotron2 / models.fastpitch是简化文本与梅尔推断的包装器。 Tacotron2Wave / FastPitch2Wave模型包括用于直接文本到语音推理的Hifi-Gan Vocoder。
text = "اَلسَّلامُ عَلَيكُم يَا صَدِيقِي."
wave = model . tts (
text_input = text , # input text
speed = 1 , # speaking speed
denoise = 0.005 , # HifiGAN denoiser strength
speaker_id = 0 , # speaker id
batch_size = 2 , # batch size for batched inference
vowelizer = None , # vowelizer model
pitch_mul = 1 , # pitch multiplier (for FastPitch)
pitch_add = 0 , # pitch offset (for FastPitch)
return_mel = False # return mel spectrogram?
) from models . tacotron2 import Tacotron2
model = Tacotron2 ( 'pretrained/tacotron2_ar_adv.pth' )
model = model . cuda ()
mel_spec = model . ttmel ( "اَلسَّلامُ عَلَيكُم يَا صَدِيقِي." ) from models . fastpitch import FastPitch
model = FastPitch ( 'pretrained/fastpitch_ar_adv.pth' )
model = model . cuda ()
mel_spec = model . ttmel ( "اَلسَّلامُ عَلَيكُم يَا صَدِيقِي." ) from models . tacotron2 import Tacotron2Wave
model = Tacotron2Wave ( 'pretrained/tacotron2_ar_adv.pth' )
model = model . cuda ()
wave = model . tts ( "اَلسَّلامُ عَلَيكُم يَا صَدِيقِي." )
wave_list = model . tts ([ "صِفر" , "واحِد" , "إِثنان" , "ثَلاثَة" , "أَربَعَة" , "خَمسَة" , "سِتَّة" , "سَبعَة" , "ثَمانِيَة" , "تِسعَة" , "عَشَرَة" ]) from models . fastpitch import FastPitch2Wave
model = FastPitch2Wave ( 'pretrained/fastpitch_ar_adv.pth' )
model = model . cuda ()
wave = model . tts ( "اَلسَّلامُ عَلَيكُم يَا صَدِيقِي." )
wave_list = model . tts ([ "صِفر" , "واحِد" , "إِثنان" , "ثَلاثَة" , "أَربَعَة" , "خَمسَة" , "سِتَّة" , "سَبعَة" , "ثَمانِيَة" , "تِسعَة" , "عَشَرَة" ])默认情况下,阿拉伯字母使用Buckwalter音译转换,也可以直接使用。
wave = model . tts ( ">als~alAmu Ealaykum yA Sadiyqiy." )
wave_list = model . tts ([ "Sifr" , "wAHid" , "<i^nAn" , "^alA^ap" , ">arbaEap" , "xamsap" , "sit~ap" , "sabEap" , "^amAniyap" , "tisEap" , "Ea$arap" ]) text_unvoc = "اللغة العربية هي أكثر اللغات السامية تحدثا، وإحدى أكثر اللغات انتشارا في العالم"
wave_shakkala = model . tts ( text_unvoc , vowelizer = 'shakkala' )
wave_shakkelha = model . tts ( text_unvoc , vowelizer = 'shakkelha' )python inference.py
# default parameters:
python inference.py --list data/infer_text.txt --out_dir samples/results --model fastpitch --checkpoint pretrained/fastpitch_ar_adv.pth --batch_size 2 --denoise 0测试模型运行:
python test.py
# default parameters:
python test.py --model fastpitch --checkpoint pretrained/fastpitch_ar_adv.pth --out_dir samples/test此存储库使用Nawar Halabi的阿拉伯语phonetiser,但简化了结果,从而忽略了不同的上下文(请参阅text/symbols.py )。此外,两倍的辅音表示为辅音 +加倍。
tacotron2模型有时可能会在句子以未经vocalized的辅音结束时发音。如果一个人在末端附加单词分离器令牌并使用对齐权重切除( models.networks中的详细信息),则发音更可靠。此选项是通过设置postprocess_mel=False可以禁用的默认后处理步骤实现的。
在培训之前,必须重新采样音频文件。使用scripts/preprocess_audio.py预处理文件后,对该模型进行了训练。
用配置文件运行中指定的选项训练模型:
python train.py
# default parameters:
python train.py --config configs/nawar.yamlWeb应用程序使用FastAPI库。要运行该应用程序,您需要以下软件包:
FastApi:对于后端API | UVICORN:为应用程序服务
使用: pip install fastapi "uvicorn[standard]"
运行: python app.py
预览:

我提到了NVIDIA的TACOTRON2实现,以了解模型培训的详细信息。
FastPitch文件源于Nvidia的深度学习示例