Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added support for model_info in CLI #1623

Merged
merged 19 commits into from
Jun 20, 2022
Merged

added support for model_info in CLI #1623

merged 19 commits into from
Jun 20, 2022

Conversation

p0p4k
Copy link
Contributor

@p0p4k p0p4k commented Jun 5, 2022

added support for model_info #1586
model info can be called using either model_info_by_name or model_info_by_idx. Both return basic information from the .models.json file along with description and default_vocoder (in case of tts_models). If not present, "description" will print "coming soon" and "default_vocder" will print "None". The .models.json file can be updated in future to add additional info in the description field.

Usage :

tts --model_info_by_name "<model_type>/<language>/<dataset>/<model_name>"
The model_info_by_name uses the name as it from the --list_models.
eg.

$ tts --model_info_by_name tts_models/tr/common-voice/glow-tts
> model type : tts_models
> language supported : tr
> dataset used : common-voice
> model name : glow-tts
> description : Turkish GlowTTS model using an unknown speaker from the Common-Voice dataset.
> default_vocoder : vocoder_models/tr/common-voice/hifigan

tts --model_info_by_idx "<model_type>/<model_query_idx>"
The model_query_idx uses the corresponding idx from --list_models.
eg.

$ tts --model_info_by_idx tts_models/3 
> model type : tts_models
> language supported : en
> dataset used : ljspeech
> model name : tacotron2-DDC
> description : Tacotron2 with Double Decoder Consistency.
> default_vocoder : vocoder_models/en/ljspeech/hifigan_v2

Then, we can query the vocoder model by name as follows,

$ tts --model_info_by_name vocoder_models/en/ljspeech/hifigan_v2
> model type : vocoder_models
> language supported : en
> dataset used : ljspeech
> model name : hifigan_v2
> description : HiFiGAN_v2 LJSpeech vocoder from https://arxiv.org/abs/2010.05646.

In case of out of index for model_info_by_idx,

$ tts --model_info_by_idx tts_models/45
model query idx exceeds the number of available models [32] 

In case of not in dict.key for model_info_by_name,

$ tts --model_info_by_name tts_models/tr/common-voice/flow-tts
> model flow-tts does not exist for tts_models/tr/common-voice.

@p0p4k p0p4k mentioned this pull request Jun 5, 2022
@erogol
Copy link
Member

erogol commented Jun 5, 2022

Nice PR!!

I'd suggest to print the default vocoder for the tts models as well

@p0p4k
Copy link
Contributor Author

p0p4k commented Jun 5, 2022

Nice PR!!

I'd suggest to print the default vocoder for the tts models as well

Done. Please re-check the pull and the edited pull description.
Thanks.

@erogol
Copy link
Member

erogol commented Jun 8, 2022

@p0p4k there are some linter issues. Once you fix those we can merge this 🌟PR🌟

You can check the linter by running make lint locally

@p0p4k p0p4k marked this pull request as draft June 8, 2022 22:36
@p0p4k
Copy link
Contributor Author

p0p4k commented Jun 9, 2022

@erogol Right now the failing test seems to be really minor code issue (which can be ignored). I think I fixed the remaining lint stuff and added an extra edge case to catch not integer error when using index.
Thanks.

@p0p4k p0p4k closed this Jun 9, 2022
@p0p4k p0p4k reopened this Jun 9, 2022
@p0p4k p0p4k marked this pull request as ready for review June 9, 2022 01:11
@p0p4k p0p4k marked this pull request as draft June 9, 2022 16:40
@p0p4k p0p4k marked this pull request as ready for review June 10, 2022 12:42
@erogol
Copy link
Member

erogol commented Jun 17, 2022

@p0p4k we are still getting out of linter

************* Module TTS.bin.synthesize
TTS/bin/synthesize.py:245:8: R0[9](https://github.com/coqui-ai/TTS/runs/6830909909?check_suite_focus=true#step:8:10)16: Too many boolean expressions in if statement (7/5) (too-many-boolean-expressions)
------------------------------------
Your code has been rated at [10](https://github.com/coqui-ai/TTS/runs/6830909909?check_suite_focus=true#step:8:11).00/10

@p0p4k
Copy link
Contributor Author

p0p4k commented Jun 18, 2022

@erogol There is a final lint error. Any idea how to fix this? Rest of the code from my PR is alright, I believe.

Run make lint
pylint tests TTS notebooks recipes
------------------------------------
Your code has been rated at 10.00/10
black tests TTS notebooks recipes --check
Skipping .ipynb files as Jupyter dependencies are not installed.
You can fix this by running ``pip install black[jupyter]``
would reformat TTS/bin/synthesize.py
would reformat TTS/utils/manage.py
Oh no! 💥 💔 💥
2 files would be reformatted, 297 files would be left unchanged.
make: *** [Makefile:47: lint] Error 1
Error: Process completed with exit code 2.

@erogol
Copy link
Member

erogol commented Jun 18, 2022

you need to run at the root path. If you have installed dev requirements then it should do it automatically

make style

@erogol erogol merged commit 71281ff into coqui-ai:dev Jun 20, 2022
@p0p4k
Copy link
Contributor Author

p0p4k commented Jun 20, 2022

you need to run at the root path. If you have installed dev requirements then it should do it automatically

make style

Thanks a lot for adding the final touches. I really could not get pylint working right on my Windows machine at home. Was gonna try to do stuff at my work Linux pc and saw that you fixed it already.
Ill be careful about following proper code pattern next time. Lots to learn, lots to learn..

@erogol
Copy link
Member

erogol commented Jun 21, 2022

No worries. Thanks for the ✨ PR.

erogol pushed a commit that referenced this pull request Aug 1, 2022
* Update README.md

- minor PR
- added model_info usage guide based on #1623 in README.md .

* "added tqdm bar for model download"

* Update manage.py

* fixed style

* fixed style

* sort imports
noranraskin pushed a commit to noranraskin/TTS that referenced this pull request Aug 3, 2022
* Update README.md

- minor PR
- added model_info usage guide based on coqui-ai#1623 in README.md .

* "added tqdm bar for model download"

* Update manage.py

* fixed style

* fixed style

* sort imports
erogol added a commit that referenced this pull request Aug 22, 2022
* Fix checkpointing GAN models (#1641)

* checkpoint sae step crash fix

* checkpoint save step crash fix

* Update gan.py

updated requested changes

* crash fix

* Fix the --model_name and --vocoder_name arguments need a <model_type> element (#1469)

Co-authored-by: Eren Gölge <erogol@hotmail.com>

* Fix Publish CI (#1597)

* Try out manylinux

* temporary removal of useless pipeline

* remove check and use only manylinux

* Try --plat-name

* Add install requirements

* Add back other actions

* Add PR trigger

* Remove conditions

* Fix sythax

* Roll back some changes

* Add other python versions

* Add test pypi upload

* Add username

* Add back __token__ as username

* Modify name of entry to testpypi

* Set it to release only

* Fix version checking

* Fix tokenizer for punc only (#1717)

* Remove redundant config field

* Fix SSIM loss

* Separate loss tests

* Fix BCELoss adressing  #1192

* Make style

* Add durations as aux input for VITS (#1694)

* Add durations as aux input for VITS

* Make style

* Fix tts_tests

* Fix test_get_aux_input

* Make lint

* feat: updated recipes and lr fix (#1718)

- updated the recipes activating more losses for more stable training
- re-enabling guided attention loss
- fixed a bug about not the correct lr fetched for logging

* Implement VitsAudioConfig (#1556)

* Implement VitsAudioConfig

* Update VITS LJSpeech recipe

* Update VITS VCTK recipe

* Make style

* Add missing decorator

* Add missing param

* Make style

* Update recipes

* Fix test

* Bug fix

* Exclude tests folder

* Make linter

* Make style

* Fix device allocation

* Fix SSIM loss correction

* Fix aux tests (#1753)

* Set n_jobs to 1 for resample script

* Delete resample test

* Set n_jobs 1 in vad test

* delete vad test

* Revert "Delete resample test"

This reverts commit bb7c846.

* Remove tests with resample

* Fix for FloorDiv Function Warning (#1760)

* Fix for Floor Function Warning

Fix for Floor Function Warning

* Adding double quotes to fix formatting

Adding double quotes to fix formatting

* Update glow_tts.py

* Update glow_tts.py

* Fix type in download_vctk.sh (#1739)

typo in comment

* Update decoder.py (#1792)

Minor comment correction.

* Update requirements.txt (#1791)

Support for #1775

* Update README.md (#1776)

Fix typo in different and code sample

* Fix & update WaveRNN vocoder model (#1749)

* Fixes KeyError bug. Adding logging to dashboard.

* Make pep8 compliant

* Make style compliant

* Still fixing style

* Fix rand_segment edge case (input_len == seg_len - 1)

* Update requirements.txt; inflect==5.6 (#1809)

New inflect version (6.0) depends on pydantic which has some issues irrelevant to 🐸 TTS. #1808 
Force inflect==5.6 (pydantic free) install to solve dependency issue.

* Update README.md; download progress bar in CLI. (#1797)

* Update README.md

- minor PR
- added model_info usage guide based on #1623 in README.md .

* "added tqdm bar for model download"

* Update manage.py

* fixed style

* fixed style

* sort imports

* Update wavenet.py (#1796)

* Update wavenet.py

Current version does not use "in_channels" argument. 
In glowTTS, we use normalizing flows and so "input dim" == "ouput dim" (channels and length). So, the existing code just uses hidden_channel sized tensor as input to first layer as well as outputs hidden_channel sized tensor. 
However, since it is a generic implementation, I believe it is better to update it for a more general use.

* "in_channels -> hidden_channels"

* Adjust default to be able to process longer sentences (#1835)

Running `tts --text "$text" --out_path …` with a somewhat longer
sentences in the text will lead to warnings like “Decoder stopped with
max_decoder_steps 500” and the sentences just being cut off in the
resulting WAV file.

This happens quite frequently when feeding longer texts (e.g. a blog
post) to `tts`. It's particular frustrating since the error is not
always obvious in the output. You have to notice that there are missing
parts. This is something other users seem to have run into as well [1].

This patch simply increases the maximum number of steps allowed for the
tacotron decoder to fix this issue, resulting in a smoother default
behavior.

[1] mozilla/TTS#734

* Fix language flags generated by espeak-ng phonemizer (#1801)

* fix language flags generated by espeak-ng phonemizer

* Style

* Updated language flag regex to consider all language codes alike

* fix get_random_embeddings --> get_random_embedding (#1726)

* fix get_random_embeddings --> get_random_embedding

function typo leads to training crash, no such function

* fix typo

get_random_embedding

* Introduce numpy and torch transforms (#1705)

* Refactor audio processing functions

* Add tests for numpy transforms

* Fix imports

* Fix imports2

* Implement bucketed weighted sampling for VITS (#1871)

* Update capacitron_layers.py (#1664)

crashing because of dimension miss match   at line no. 57
[batch, 256] vs [batch , 1, 512]
enc_out = torch.cat([enc_out, speaker_embedding], dim=-1)

* updates to dataset analysis notebooks for compatibility with latest version of TTS (#1853)

* Fix BCE loss issue (#1872)

* Fix BCE loss issue

* Remove import

* Remove deprecated files (#1873)

- samplers.py is moved
- distribute.py is replaces by the 👟Trainer

* Handle when no batch sampler (#1882)

* Fix tune wavegrad (#1844)

* fix imports in tune_wavegrad

* load_config returns Coqpit object instead None

* set action (store true) for flag "--use_cuda"; start to tune if module is running as the main program

* fix var order in the result of batch collating

* make style

* make style with black and isort

* Bump up to v0.8.0

* Add new DE Thorsten models (#1898)

- Tacotron2-DDC
- HifiGAN vocoder

Co-authored-by: manmay nakhashi <manmay.nakhashi@gmail.com>
Co-authored-by: camillem <camillem@users.noreply.github.com>
Co-authored-by: WeberJulian <julian.weber@hotmail.fr>
Co-authored-by: a-froghyar <adamfroghyar@gmail.com>
Co-authored-by: ivan provalov <iprovalo@yahoo.com>
Co-authored-by: Tsai Meng-Ting <sarah13680@gmail.com>
Co-authored-by: p0p4k <rajiv.punmiya@gmail.com>
Co-authored-by: Yuri Pourre <yuripourre@users.noreply.github.com>
Co-authored-by: vanIvan <alfa1211@gmail.com>
Co-authored-by: Lars Kiesow <lkiesow@uos.de>
Co-authored-by: rbaraglia <baraglia.r@live.fr>
Co-authored-by: jchai.me <jreus@users.noreply.github.com>
Co-authored-by: Stanislav Kachnov <42406556+geth-network@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants