* refactor(punctuation): remove orphan code for handling lone punctuation
The case of lone punctuation is already handled at the top of restore(). The
removed if statement would never be called and would in fact raise an
AttributeError because the _punc_index named tuple doesn't have the attribute
`mark`.
* refactor(punctuation): remove unused argument
* fix(punctuation): correctly handle initial punctuation
Stripping and restoring initial punctuation didn't work correctly because the
string-splitting caused an additional empty string to be inserted in the text
list (because `".A".split(".")` => `["", "A"]`). Now, an initial empty string is
skipped and relevant test cases are added.
Fixes#3333
* Moved Dockerfile, COPY at the end
This change should prevent re-installation of the dependencies upon
every change of the repository's contents. Typically if Docker detects
that something changed in a layer, all downstream layers are invalidated
and rebuilt.
* Moved Dockerfile back to main directory
Main dockerfile in a separate directory can cause issues with the
current CI/CD setup. This can be a good change for later.
* Introduced Dockerfile.dev, updated CONTRIBUTING
Dockerfile.dev can be used as a separate development environment for
anyone that does not wish to install the dependencies locally.
* Revert "fix for issue 3067"
This reverts commit 041b4b6723.
Fixes#3143. The original issue (#3067) was people trying to use
tts.tts_with_vc_to_file() with XTTS and was "fixed" in #3109. But XTTS has
integrated VC and you can just do tts.tts_to_file(..., speaker_wav="..."), there
is no point in passing it through FreeVC afterwards. So, reverting this commit
because it breaks tts.tts_with_vc_to_file() for any model that doesn't have
integrated VC, i.e. all models this method is meant for.
* fix: support multi-speaker models in tts_with_vc/tts_with_vc_to_file
* fix: only compute spk embeddings for models that support it
Fixes#1440. Passing a `speaker_wav` argument to regular Vits models failed
because they don't support voice cloning. Now that argument is simply ignored.
Previously, the text was wrapped in an additional set of quotes that was passed
to Espeak. This could result in different phonemization in certain edges and
caused the insertion of an initial separator "_" that had to be removed.
Compare:
$ espeak-ng -q -b 1 -v en-us --ipa=1 '"A"'
_ˈɐ
$ espeak-ng -q -b 1 -v en-us --ipa=1 'A'
ˈeɪ
Fixes#2619
In multilingual models, the target language is specified via the
`--language_idx` argument. However, the `tts` CLI also accepts a `--language`
argument for use with Coqui Studio, so it is easy to choose the wrong one,
resulting in the following confusing error at synthesis time:
```
AssertionError: ❗ Language None is not supported. Supported languages are
['en', 'es', 'fr', 'de', 'it', 'pt', 'pl', 'tr', 'ru', 'nl', 'cs', 'ar',
'zh-cn', 'hu', 'ko', 'ja']
```
This commit adds a better error message when `--language` is passed for a
non-studio model.
Fixes#3270, fixes#3291