TTS – language codes in last part of message file names?

I am successfully using local TTS through Wyoming and the Piper add on.
The generated message files are stored in the local config → tts folder when the Caching option is enabled, so that the same message can be repeated without re-generating it again.
This is working fine.
As I understand it, the first part of the message file names is a hash value generated from the message contents.
But where is the added language code in the last part of the mp3 file names meant for?
This are some examples of mp3 message files in the config → tts folder:

I think that this language code is fixed for a specific period, but when the Home Assistant server is rebooted another language code is used.
And it seems arbitrary which code is chosen?
This are some examples of these language codes that I currently have in the config → tts folder:

  • de-de German
  • en-us English US
  • hu-hu Hungarian
  • nl-be Dutch
  • sr-rs Serbian
  • sw-cd Swahili
  • ne-np Nepali
  • vi-vn Vietnamese

However, I am only using TTS in the Netherlands (Dutch) language, with the Piper voice nl_BE-nathalie-medium.
So nl-be would be a logic language code extension in my case, but then why are all these other language codes used?
Any change in language code also means that with exactly the same message the message files are re-generated, with exactly the same hash value but a different language code extension.
There are two examples of this shown in the list above.

Is this functional, or is this a bug?

Who knows more about this?

Well…

I use Elevenlabs and PicoTTS for my voices, and I get:

So it looks like different services are encoded differently. The languages are correct though.

Hmm… so this is only happening with Piper TTS?
I have this same issue on two separate installs of Home Assistant, but with both only using Piper TTS.
Is there anyone who also uses Piper not seeing this effect?