Cross-TTS on Cards

I want to use Google’s TTS for everything else except Georgian.
For Georgian, I have to use RHVoice because Google’s TTS doesn’t have Georgian.
However there doesn’t seem to be a clear way to make it so that for the Georgian deck, it uses RHVoice, but for everything else, it just uses the default TTS.
Is there a way?

You can specify the TTS voice field-by-field in your card templates – Field Replacements - Anki Manual. Are you using a specific note type that is only for your Georgian cards? If you do that, you can just edit the card templates to use that voice.

APP_MISSING_VOICE.
Seems to only work with the default app.

Have you followed the directions to see which services/voices are available? Do you have that service/voice installed on your device?

1 Like

I tried. Multiple times. Many many times to try to get this working.
But it just refused every time, always going to the default…
[Video of the troubles I am facing]

Your video doesn’t really help, because I don’t know what voices are the right ones or wrong ones. You’re also asking about the Georgian deck/voice in your question, while your video is about the Polish deck/voice. I don’t understand how the two are related. But it looks like, by the end, you used the voice-chooser and specified the voice in the correct way – did that work or not work?

It will be easier for folks to help you if you can explain this clearly like – when I choose voice X from service Y – and I use {{this}} correct tts command for it in my template – then Z happens.

Fair enough, giving a clear explaination:
The Georgian deck doesn’t have a Google TTS voice, so I went to the Polish deck to show you.
Plus, it’s the only other deck I want TTS on at all.
If you have Google TTS as the default, everything will work fine. However if you specify Google’s TTS, and then change the default to RHVoice, it uses the RHVoice one instead, ignoring your previous decision, because it can’t seem to go outside of the default.
If this were not the case, then Georgian’s TTS wouldn’t error out saying “APP_MISSING_VOICE” if I had Google as the default, even if I specifically specify RHVoice.

Also, no it didn’t work.

Also, what happened in the video was:

  1. RHVoice gets used despite me making a (probably bad) specification of Google’s Polish Voice 2
  2. I set my default to Google TTS and it goes to the English voice
  3. Reset languages
  4. I grab TTS specification for Voice 2 from {{tts-voices:}}
  5. I paste it in the place of my previous specification
  6. I set the default TTS to RHVoice
  7. RHVoice uses the wrong language (English)
  8. Reset languages (again)
  9. RHVoice is still being used despite my specifications

The narration helps make some sense of the video, but there are things missing. For instance, between 3 and 4 [0m43s in video], you actually had it working, right?

Instead of trying to trip it up by flipping back and forth, can you just choose one and try to get it working? Reset languages – use a specific installed TTS voice from an installed TTS service (these things might help make sure the voice is installed – FAQ · ankidroid/Anki-Android Wiki · GitHub ) – and get that working.

Then you can think about making incremental changes to get the other service/voice working.

I had it working, but in a different way. Looks like I left out too many details.
I said “Finally fixed…” in reference to the language. It took a few minutes for me to remember that I had to use “Reset Languages” to fix the TTS Language association. It was using English so I tried to fix it.
I was using Google TTS as the default. Yeah, my narraration was horribly incomplete.
So you know what, I’ll just start putting even more of what’s going on in text. For the rest of this message, assume I am on Google TTS except on the lines where I say Im not:

First I go to Georgian-4c0aa (the type with TTS), and then I change {{tts ka_GE:Georgian}} to {{tts ka_GE voices=com.github.olga_yakovleva.rhvoice.android-Georgian:Georgian}}. Doesn’t work. So I try {{tts ka voices=com.github.olga_yakovleva.rhvoice.android-Georgian:Georgian}}. Which also doesn’t work.
Then I try something slightly different and use the name of the voice I want to use: Michal.
So I try {{tts ka_GE voices=com.github.olga_yakovleva.rhvoice.android-Michal:Georgian}}
App Missing Voice.

So I switch to RHVoice for a little to do {{tts-voices:}}

And then I realise I’ve been on the wrong page on RHVoice so I said Michal when that was the Polish voice, but still that just means that I need to use Natia instead.
So I grab {{tts ka_GE voices=com.github.olga_yakovleva.rhvoice.android-Natia}} from tts-voices and place it in…
App. Missing. Voice.

This is so device&service&language&voice-specific. I’m not sure how much anyone can help you troubleshoot it from outside. But here are some “ideas that tend to generally help with issues like this” –

  • Have you checked the RHVoice app (as suggested in the AnkiDroid FAQ) to make sure that the voices you think you have are actually downloaded?

  • Have you restarted your device or at least Anki after switching the preferred TTS engine?

  • Have you tried using RHVoice as the preferred, but without naming a specific voice in your TTS tag?

I dunno how it’s super device, language and voice specific, but the service-specific part? May be.
And no, the stuff that generally seems to help doesn’t help here.
I asked on Reddit about the Turkmen deck to find a TTS for it on the Anki subreddit, one of the devs not only gave me a app I could use, but they also asked me if I needed to use two voices at the same time.

You need to use two different TTS engines at the same time?
(From David)

I said no at the time because I didn’t think I needed it and it would be fine.
I was wrong. I now need it more than ever with the Polish and Georgian decks living in the same roof. RHVoice pronounces W like W instead of V, which is how it’s supposed to be. Thus why I need Google TTS.

We don’t support generating audio from the non-default TTS engine, but I’ve set up TTS so this expansion is possible if there’s a need
(From David)

And now when I ask again, nothing, radio silence. Tried to go over here to see if you guys could help try to find some way to work around this limitation; seems not.