Improve Punjabi pronunciation through diacritic-aware Latin transliteration or G2P

Author: selsieCreated Aug 10, 2026Updated Sep 10, 2026
Labelsenhancementstale

Self Checks

  • I have thoroughly reviewed the project documentation (installation, training, inference) but couldn't find any relevant information that meets my needs. English 中文 日本語 Portuguese (Brazil)
  • I have searched for existing issues search for existing issues, including closed ones.
  • I confirm that I am using English to submit this report (我已阅读并同意 Language Policy).
  • [FOR CHINESE USERS] 请务必使用英文提交 Issue,否则会被关闭。谢谢!:)
  • Please do not modify this template :) and fill in all the required fields.

1. Is this request related to a challenge you're experiencing? Tell us your story.

I am testing Fish Speech for Punjabi TTS using a native Punjabi speaker reference recording.

During testing, I found a substantial difference in pronunciation depending on how the same Punjabi sentence is represented.

I compared:

  1. Punjabi in Gurmukhi
  2. Plain Latin transliteration
  3. Latin transliteration with explicit diacritics and consonant gemination

The plain Latin transliteration loses several pronunciation distinctions because spellings such as a, aa, d, dh, etc. can be ambiguous without additional information.

Interestingly, a diacritic-aware Latin representation produces substantially more natural Punjabi pronunciation in my listening tests.

For example, I tested the following sentence:

Ajj mausam bahut vadhīā hai, tē tuhāḍē nāl gall karke merā dil khuś hō giā.

Compared with:

Ajj mausam bahut waddiya hai, te tuhade naal gal karke mera dil khush ho gya.

the diacritic-aware version consistently sounded much closer to natural Punjabi pronunciation.

I generated the diacritic-based version approximately ten times, and the pronunciation was consistently noticeably better.

This is particularly relevant for Punjabi because Latin transliteration can easily lose information represented in Gurmukhi, including vowel distinctions, retroflex consonants, consonant gemination and nasalization.

For example:

ਗੱਲ

is represented more explicitly as:

gall

rather than:

gal

Similarly, a form such as:

tuhāḍē

contains substantially more pronunciation information than:

tuhade

The current situation makes it difficult to obtain consistently natural Punjabi pronunciation when users cannot or do not want to provide phonologically explicit input.

2. What is your suggested solution?

I would suggest adding better Punjabi-specific text normalization / grapheme-to-phoneme support.

Ideally, Fish Speech could support Punjabi Gurmukhi directly while preserving the phonological information represented by the script.

A second useful option would be documented support for a standardized, diacritic-aware Latin transliteration for Punjabi.

Possible improvements could include:

  • Punjabi-specific G2P processing for Gurmukhi
  • Punjabi-aware text normalization before tokenization
  • Correct handling of vowel length and vowel distinctions
  • Correct handling of retroflex consonants
  • Correct handling of consonant gemination represented by addak ()
  • Appropriate handling of Punjabi nasalization markers
  • Optional support for a documented diacritic-based Latin transliteration

The goal would be that equivalent Punjabi text produces broadly comparable pronunciation regardless of whether it is supplied in Gurmukhi or an unambiguous phonological transliteration.

A language-specific preprocessing/G2P layer would also make Fish Speech considerably easier to use for Punjabi speakers who need high-quality pronunciation.

3. Additional context or comments

Test environment

  • Fish Speech: current development/test version
  • GPU: NVIDIA GeForce RTX 5090 Laptop GPU
  • PyTorch: 2.8.0+cu128
  • CUDA: 12.8
  • Python: 3.12
  • OS: Windows 11 25H2, Build 26200.8875
  • Backend: Fish Speech API server with --compile
  • Deployment: Self Hosted (Source)

Test sentence

Gurmukhi:

ਅੱਜ ਮੌਸਮ ਬਹੁਤ ਵਧੀਆ ਹੈ, ਤੇ ਤੁਹਾਡੇ ਨਾਲ ਗੱਲ ਕਰਕੇ ਮੇਰਾ ਦਿਲ ਖੁਸ਼ ਹੋ ਗਿਆ।

Plain Latin transliteration:

Ajj mausam bahut waddiya hai, te tuhade naal gal karke mera dil khush ho gya.

Diacritic-aware Latin transliteration:

Ajj mausam bahut vadhīā hai, tē tuhāḍē nāl gall karke merā dil khuś hō giā.

The three versions produce noticeably different pronunciations.

The diacritic-aware version produced the best result in repeated listening tests.

I would be happy to provide additional Punjabi test sentences or help create a small pronunciation test set if this feature is of interest.

4. Can you help us with this feature?

  • I am interested in contributing to this feature.