Text Normalization for Numbers in Vapi
# support
h
@Vapi @Vapi Support Bot I'm working on an assistant that needs to handle various text elements like numbers in a more natural, human-like way. For example: - "123" should be spoken as "one hundred twenty-three" - "2024" could be "twenty twenty-four" or "two thousand twenty-four" ## The Question Does Vapi provide any built-in settings or features for text normalization that converts these elements into their spoken equivalents? I'm looking for something that would automatically handle this conversion without having to manually define every possible case. I am using 11labs. Different TTS engines seem to handle this differently, and I'm wondering if there's a Vapi-specific way to control this behavior.
v
Yes, Vapi has built-in text normalization for numbers. To control how numbers are spoken (e.g., "123" → "one hundred twenty-three"), use the
numberToDigitsCutoff
setting in your assistant's configuration. For example:
Copy code
json
"voice": {
  "chunkPlan": {
    "formatPlan": {
      "enabled": true,
      "numberToDigitsCutoff": 2025
    }
  }
}
Numbers below the cutoff are spelled out; numbers above are read as digits. See the [Vapi voice formatting plan documentation](https://docs.vapi.ai/assistants/voice-formatting-plan) for details. Source: - [Voice formatting plan documentation](https://docs.vapi.ai/assistants/voice-formatting-plan)
s
Hi, thanks for reaching out.
We're looking into this and will soon get back to you
Hi, Vapi doesn’t currently provide a built‑in text‑normalization feature that automatically converts numbers into spoken words. With ElevenLabs in particular, the most reliable approach is to control the text before it reaches the TTS engine.
Here are your best options: 1. Add a prompt instruction (recommended) Ask the assistant to spell out numbers in natural spoken English. This consistently produces the correct output with ElevenLabs. Example: "Always convert numbers into their spoken English form (e.g., 123 → ‘one hundred twenty‑three’, 2024 → ‘twenty twenty‑four’, $50 → ‘fifty dollars’)."
OR Use formatPlan (automatic text replacements) You can use chunkPlan.formatPlan to apply regex replacements before the text goes to TTS. This works well for simple patterns, though full numeric conversion gets complex. Note: ElevenLabs does not support SSML number formats like , so SSML won’t help for this.