ProjectTech4DevAI / ProjectTech4DevAI/kaapi-backend

TTS: Normalize input text handling

Open
#1,088 0 comments 0 reactions 1 assignee View on GitHub

@Prajna1999 is already working on this.

Since Jul 28, 2026.

Dominant language
Python
Stars
18
Forks
10
Avg merge
2d 20h
Merged PRs (30d)
14

Description

Is your feature request related to a problem?
The same payload for TTS sometimes succeeds and sometimes fails with a misleading config error. This causes confusion, especially when dealing with Marathi/Devanagari text that includes emojis, markdown, and new line escapes.

Describe the solution you'd like

  • Normalize/sanitize text before TTS calls.
  • Investigate with the provider regarding the issues.
  • Explore if rule-based emoji stripping could affect speech quality since emojis might provide tonal context.
Original issue

Describe the current behavior
Same payload sometimes succeeds, sometimes fails with a misleading config error. Text is Marathi/Devanagari with emojis, markdown, and \n escapes.

eg

Getting the Failure message for TTS

[KAAPI] Invalid or unexpected parameter in Config: 'NoneType' object is not subscriptable. Review the completion config; one of the parameters does not match the provider's expected signature.

This is the payload:
{"voice":"Kore","text":"ЁЯО▓ **рдЕрдВрдХ рдореЛрдЬрдгреА рд╕рд╛рдареА TLM**\n\nЁЯзТ **рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдк 1: рд▓реЗрдЯрд░ рдмрд┐рдВрдЧреЛ** \n- **рд╕рд╛рд╣рд┐рддреНрдп:** \n - рдХрд╛рд░реНрдбрдмреЛрд░реНрдб \n - рдП4 рдХрд╛рдЧрдж \n - рд╕реНрдХреЗрд▓ \n - рд╕реНрдХреЗрдЪ рдкреЗрди \n\n- **рдХрд╛рдп рдХрд░рд╛рдпрдЪреЗ?** \n 1. рдХрд╛рд░реНрдбрдмреЛрд░реНрдбрд╡рд░ рдЕрдХрд╛рд░рд╛рдВрдЪреЗ рдмрд┐рдВрдЧреЛ рдЦреЗрд│рдгреНрдпрд╛рдЪреЗ рдЧреНрд░рд┐рдб рддрдпрд╛рд░ рдХрд░рд╛. \n 2. рдкреНрд░рддреНрдпреЗрдХ рдмреЙрдХреНрд╕рдордзреНрдпреЗ рдПрдХ рдЕрдХреНрд╖рд░ рд▓рд┐рд╣рд╛. \n 3. рдореБрд▓рд╛рдВрдирд╛ рдбрд╛рдПрд╕ рдХрд┐рдВрд╡рд╛ рдмрд┐рдВрдЧреЛ рдЪрд┐рдареНрдареНрдпрд╛ рджреЗрдКрди рдЦреЗрд│рд╡рд╛. \n 4. рдЬреЛ рдкрд╣рд┐рд▓рд╛ рдмрд┐рдВрдЧреЛ рдкреБрд░реНрдг рдХрд░рддреЛ, рддреЛ рд╡рд┐рдЬреЗрддрд╛ рдард░рд╛рд╡рд╛. \n\nЁЯМ▒ **рд╢рд┐рдХреНрд╖рдгрд╛рдЪрд╛ рдлрд╛рдпрджрд╛** \nрдЕрдХреНрд╖рд░рд╛рдВрдЪреА рдУрд│рдЦ, рдЖрд╡рд╛рдЬрд╛рдЪреА рдУрд│рдЦ, рдЖрдгрд┐ рд╕рд╛рдорд╛рдЬрд┐рдХ рд╕рдВрд╡рд╛рдж рдХреМрд╢рд▓реНрдпреЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ.\n\nЁЯзТ **рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдк 2: рдкрд╛рдгреНрдпрд╛рдЪреНрдпрд╛ рд╢реНрд░реЛрдд рдкрд░реА** \n- **рд╕рд╛рд╣рд┐рддреНрдп:** \n - рдкрд╛рдгреНрдпрд╛рдд рдЬрд╛рдд рдЕрд╕рд▓реЗрд▓реЗ рдЧреЛрдЯреЗ рд╡рд╛ рдЪреАрдХ \n\n- **рдХрд╛рдп рдХрд░рд╛рдпрдЪреЗ?** \n 1. рдореБрд▓рд╛рдВрдирд╛ рдкрд╛рдгреНрдпрд╛рдд рдЧреЛрдЯреЗ рдлреЗрдХрд╛рдпрд▓рд╛ рд╕рд╛рдВрдЧрд╛. \n 2. рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрдЯреНрдпрд╛рдордзреНрдпреЗ рд╕рдВрдЦреНрдпрд╛ рд▓рд┐рд╣рд╛. \n 3. рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЧреЛрдЯреНрдпрд╛рдВрд╡рд░реВрди рд╕рдВрдЦреНрдпрд╛ рдУрд│рдЦрд╛рдпрд▓рд╛ рд╕рд╛рдВрдЧрд╛. \n 4. рдЧреЛрдЯреЗ рдЧреЛрд│рд╛ рдХрд░рдгреНрдпрд╛рдЪреА рд╕реНрдкрд░реНрдзрд╛ рдЖрдпреЛрдЬрд┐рдд рдХрд░рд╛. \n\nЁЯМ▒ **рд╢рд┐рдХреНрд╖рдгрд╛рдЪрд╛ рдлрд╛рдпрджрд╛** \nрд╕рдВрдЦреНрдпрд╛рдВрдЪреА рдореЛрдЬрдгреА, рд╕реНрдкрд░реНрдзрд╛рддреНрдордХ рднрд╛рд╡рдирд╛, рдЖрдгрд┐ рд╢рд╛рд░реАрд░рд┐рдХ рдХреНрд░рд┐рдпрд╛ рдпрд╛рдВрдЪреЗ рд╕рдВрдЧрдо рд╣реЛрддреЗ.\n\nтЬи рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛ рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдкрд╛рдВрдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдорд╛рд╣рд┐рддреА рд╣рд╡реА рдХрд╛? ЁЯШК","provider":"google-native","organization_id":190,"model":"gemini-3.1-flash-tts-preview"}

Describe the enhancement you'd like
Normalize/sanitize text before TTS call. Follow-up = investigate with provider. Open question: Could rule-based emoji stripping hurt speech quality if emojis add tonal context? No confirmed case yet, but worth checking.

Additional context
Add any other context, metrics, screenshots, or examples about the enhancement here.
https://aistudio.google.com/learn/gemini-tts-prompt-guide-with-tags

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up тАФ it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.