SynthV Translator — Sing in German, French, Italian & More

Hi everyone,

I’d like to share a tool I’ve been working on: SynthV Translator — a command-line utility that lets you make Synthesizer V voices sing in languages they weren’t originally designed for.

It works by converting text from languages like German, French, Italian, Portuguese, and Russian into phoneme sequences that SynthV can render, using a combination of eSpeak NG for IPA conversion and custom mapping files that map IPA phonemes to SynthV’s existing phoneme sets (English, Spanish, Japanese, etc.). The tool automatically picks the best-matching voice language for each phoneme and handles syllable boundaries, so you get output you can use right away.

Key features:

  • Supports German, French, Italian, Portuguese, and Russian as input languages
  • Extensible to any language supported by eSpeak NG
  • Automatic syllabification and phoneme alignment
  • Weighted alternative pronunciations so you can pick what sounds best
  • Language switching optimization to minimize unnatural voice switches within syllables
  • Includes a JS script for SynthV that lets you paste the translator output and apply phonemes and language overrides to selected notes directly in the piano roll — no manual copying per note

Quick example:

Input: python synthv_translator.py "Guten Morgen"

Output:
<spanish> g u - t e n
<spanish> m o r - g e n

The output tells you which voice language to use for each phoneme. The included inserter script handles all of that for you automatically.

The tool is open source and available on GitHub. It also contains extensive documentation to get you started right away.

Adding new languages is straightforward — you just need to create a JSON mapping file. Contributions are welcome!

Let me know your thoughts.

Best regards,
Martin

8 Likes

Hi Martin, thank you so much for sharing your translator.
I installed the scripts according to your instructions, and everything worked perfectly right away (in German for me).

However, the initial results aren’t quite as impressive; it seems there aren’t many more possibilities with the existing phoneme vocabulary of the voices.

Just as an example:
the German word “Frühling” (spring) is translated as
<spanish> f rr i u - <english> l ih ng
and that sounds very strange.

But I’ll continue testing, especially the variations.

In any case, your project is a huge help for anyone planning to use the currently available voices with their individual languages.

Thx again, Andreas

Can you make for indonesian too?

nice work. I have not yet tested the results of it, but already a very litttle PR for you so that one can easyly use this tool in UNIX like environemnts or WSL2. If you like I can also describe isntallation steps for those that uses WSL2. But I think most WSL2 users will not require additional explanations ;-).

<mandarin> f x y - <cantonese> l I N would be better

1 Like

Hi @ZLY_CZLOWIEK, thank you for the suggestion.

Yes, the Mandarin phoneme “y” is the closest to the German “ü”; I’ve noticed that too.
However, I can’t find a consonant among the Mandarin phonemes that corresponds to the German “r”. The “x” doesn’t work at all; the Spanish “rr” is a better match.
For me, the best compromise at present is the Spanish phoneme sequence “f rr u i”
(and not f rr i u, as stored in the mapping file de.json).

<cantonses> l I N for the German “ling” actually fits very well, thank you!

1 Like

Hi @ZLY_CZLOWIEK ,thanks again for your effort!

Since I want to perform “Frühling” in a choral arrangement, I’m currently focusing on Choir #2.
Following up on your suggestion, I think the phoneme sequence f 7 y works even better, and that’s without changing the default Phoneme Timing settings.
It might be different with other voices. Which voice(s) did you try it with?

Mo Chen - a Chinese voicebank

Okay, I don’t have that voice and therefore can’t compare it.
But as I said, <mandarin> f 7 y is my preferred option so far.

@honki-bobo
A question for the developer of the translate tool:
Would it be conceivable that phoneme sequences found by the user for certain syllables or words (as in my example case <mandarin> f 7 y - <cantonese> l I N for “Früh-ling”) could be listed as preferred alternatives in the future?

By the way:
The following message came from the developer of Cantai, which may be of interest to those who work with Dorico or Sibelius.

Cantai

Since we opened pre-orders for the professional notation versions of Cantai, our development sprint has been focused on one goal: making Cantai a truly universal tool for the global composer community.
Today, we are thrilled to announce that the upcoming Dorico and Sibelius releases will launch with a massive expansion of our linguistic engine. We are moving beyond our initial testing phase to support the “Big Seven” languages of the classical, liturgical, and contemporary vocal repertoire.

The “Big Seven” Languages: Included at Launch

We have rebuilt our phonemization engine to ensure native diction and precision for:
• English & Latin
• Japanese
• Spanish
• Italian & French
• German (Finalizing our core library now!)

From the foundational Latin of the choral tradition to modern art songs in Japanese or German, Cantai now provides the linguistic accuracy required for professional playback directly within your score.

French is likely coming soon

Hello everyone,

thanks for all the feedback so far, very much appreciated.

@l0b1 Thanks for contributing to the project. I’ve merged your changes. I definitely need to install and configure black formatter :wink:

@odod For now I will focus on improvements and new features. For new languages I rely on the community, especially for the ones I don’t speak myself, which is basically every language except German and English (and maybe a bit Latin).

@Pat That sounds like a very useful feature. I think I can add sections “word_prefs” and “syl_prefs” in the mapping file so users can define preferred phoneme sequences for certain words and syllables respectively. Then I can check the word_prefs before the syllabification, and the syl_prefs before the IPA transcription. It will take some time, but definitely doable.

Best regards,
Martin

4 Likes

Hello everyone,

well, it went faster than I anticipated, and now here’s the update: Custom phoneme preferences are now supported!

Thanks to the great feedback from @Pat and @ZLY_CZLOWIEK — you can now store your own preferred phoneme sequences directly in the mapping file. If you’ve found a combination that sounds better than the automatic translation for a specific word or syllable, you can save it so it’s used automatically every time.

Two new options in the mapping JSON:

  • word_prefs — override the entire phoneme output for a specific word (e.g. “Frühling” → <mandarin> f 7 y - <cantonese> l I N)
  • syl_prefs — override individual syllables globally, so they sound right wherever they appear

Both are case-insensitive and completely optional — existing setups continue to work without any changes. See the MAPPING_GUIDE for details.

Grab the latest version on GitHub.

Best regards,
Martin

3 Likes

Hi Martin, that sounds interesting, and I’ll try it out this weekend.

Is it enough to copy the new files synthv_translator.py and de.json into the existing directories (overwriting the old files)?

I’m very interested in trying it out.

Are there any special steps for installing and using it on a Mac?

@Pat Updated files are synthv_translator.py, README.md, MAPPING_GUIDE.md and mappings/de.json

@AleDzMusicProd Just follow the steps for macOS in the installation section of the README

2 Likes

A short video tutorial would also be great :folded_hands:t2:

1 Like

Hy mate, I’m pretty sure that I’ve done all what is described in your README but it gives me everytime this output (as in the screenshot) that is saying “espeak-ng” is not installed on my system. Sure it has been tested on Mac systems?