OpenVoiceOS / OpenVoiceOS/ovos-plugin-manager

Include voice among the 'online' configs for tts

Open
#343 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
14
Forks
13
Avg merge
2d 19h
Merged PRs (30d)
9

Description

Right now the template TTS is still running:

if "voice" not in kwargs:
    kwargs["voice"] = self.voice

The issue is that using something like ovos_tts_server_plugin, the kwargs are always empty and language/voice information can only be retrieved by message context. While the language retrieval is implemented fully:

if message and "lang" not in kwargs:
            sess = SessionManager.get(message)
            kwargs["lang"] = sess.lang

the "voice" stays fixed to the one loaded from the mycroft.conf directly. Since most voices sound terrible when used for a different language than the one they were designed with, this causes a lot of nuisances when there's the need to handle multiple languages with the same core deployment.

Right now the only solution that avoids touching the code is to deploy a tts_proxy, that reads the language parameter and adds the requested voice among the query parameters, but it would be nice to avoid these kind of approaches.

If the plugin manager needs not to be touched, then there is the need to update the ovos_tts_server in order for it to auto-download a proper model based on the recieved language, instead of keeping the default one for all of them

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the template TTS logic shown in the issue and compare its fixed voice handling with the existing SessionManager language lookup. Determine whether the change belongs in ovos-plugin-manager or ovos_tts_server, then verify that an empty kwargs call using message context selects the requested language's voice without requiring a tts_proxy.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
audio-video-rtc, backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.