Skip to content

Conversation

@MaizeShark
Copy link
Contributor

I added support for Piper TTS in the following languages: German, English (US and GB), Spanish, French and Italian for now. And also merged "Update tile URL for HERE traffic" from @omartijn so that the HERE API works too.

@k8ieone
Copy link

k8ieone commented May 9, 2025

omg, this would be amazing

How is the performance on phones?

@MaizeShark
Copy link
Contributor Author

omg, this would be amazing

How is the performance on phones?

I'm not sure, as I don't have a phone with Linux (only Android), so I only tried it on my PC.

Copy link
Owner

@rinigus rinigus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be good to get clarity regarding voice path and ppi used in HERE

@MaizeShark MaizeShark marked this pull request as draft October 22, 2025 12:13
@rinigus
Copy link
Owner

rinigus commented Jan 25, 2026

Please let me know when it is not Draft anymore

@MaizeShark
Copy link
Contributor Author

Please let me know when it is not Draft anymore

yeah i will do that, can i do PRs to flatpak as well? would you want to download the models before or on demand or smth, because the piper models are pretty big (together ~10gb)

also there is now an Python API which i should probably use

Did you thought about adding an menu to select which TTS model to use instead of auto selecting it?

@rinigus
Copy link
Owner

rinigus commented Jan 25, 2026

With flatpak PRs it would make sense to wait. I am working on Qt6 support and then it will all switch to that. Although, piper part is independent from it.

Re models: no, I don't think 10GB flatpak is a good idea. So, somehow models have to be downloaded

Re python API: that will add a dependency or we can load module via try/except to make it optional. OK, API use would be nice - just would have to separate it from current voice.py

Re model selection: while there is huge amount of settings already, I would prefer to avoid it. Let users get the best model/TTS available on their system and use that. If they already installed piper, no need to propose picotts.

@MaizeShark
Copy link
Contributor Author

@rinigus
When is your Plan to Release QT6 update? I am gonna add an Button for downloading Piper Models.

@rinigus
Copy link
Owner

rinigus commented Jan 28, 2026

No timeline yet. Right now it works on qtcontrols, will start looking into kirigami6.

As for voice downloads - I don't think its a part of Pure Maps to do so. Voice (TTS) is a part of system service and I prefer to have it configured elsewhere

@MaizeShark
Copy link
Contributor Author

Hi @rinigus,

I'm trying to find a practical path forward that respects your architectural preference for TTS as a system service, while also addressing the unique characteristics of Piper's model management and keeping it user Friendly.

My current implementation for Piper in voice.py uses a structure where I map a language and gender to a specific Piper model filename (e.g., de_DE-eva_k-x_low.onnx for German female). This is because, unlike Espeak or PicoTTS which take a simple, generic voice ID, Piper requires an explicit path to a specific .onnx model file to generate speech. It doesn't have a built-in system-wide mapping for generic 'English Male' to a particular model.

This brings up a significant challenge given your preference for Pure Maps not being responsible for model downloads or hardcoding paths. My primary concern isn't just the download method itself, but the scale and discoverability of Piper models:

  1. Manual Model Mapping: There are hundreds of Piper models, each with specific language, gender, and quality characteristics (e.g., en_US-amy-medium.onnx, en_US-bryce-medium.onnx, en_US-kathleen-high.onnx, etc.). For Pure Maps to use Piper effectively, it needs to know which specific .onnx file corresponds to a user's selection of 'English (US), Female'.
    • How do you envision Pure Maps handling this mapping? Expecting me to manually hardcode hundreds of model filenames into voice.py (for languages I may not speak, to determine gender/quality) is unsustainable and quickly becomes outdated.
  2. User Experience for Model Acquisition: If Pure Maps cannot provide any in-app mechanism (like a 'download selected model' button that uses piper.download_voices or simmilar internally) to acquire these specific .onnx files, how would a typical user:
    • Know which specific model file to download? (e.g., it_IT-paola-medium.onnx vs. it_IT-riccardo-x_low.onnx)
    • Know the exact command to run for each of these hundreds of possible choices (e.g., python3 -m piper.download_voices --download-dir ~/.config/piper it_IT-paola-medium)? This would require a very extensive, constantly updated external README or wiki, which is not user-friendly for a consumer application.
  3. Lack of System-level Model Discovery: Does a standard or system service for Piper (or for generic large-model TTS engines) exist that allows applications to discover available Piper models (along with their language, gender, and exact file paths) without Pure Maps needing to manage this mapping internally? Without such a service, Pure Maps must have some internal knowledge of which model files to use.

My goal is to integrate Piper's high-quality voices effectively and make them accessible to Pure Maps users. However, given Piper's design requiring explicit model paths and the sheer number of available models, I'm struggling to see a practical way forward that aligns with your philosophy of Pure Maps being completely uninvolved in model management or detailed model mapping while still being user friendly.

I'm keen to understand your perspective on these specific practical challenges of integrating Piper.

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.

4 participants