> ## Documentation Index
> Fetch the complete documentation index at: https://platform.perso.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Normalize Text

> Apply text normalization rules to prepare text for TTS.

## What It Does

Text normalization converts text into a format optimized for speech synthesis:
- Expands abbreviations (e.g., "Dr." → "Doctor")
- Converts numbers to words (e.g., "123" → "one hundred twenty-three")
- Handles special characters and symbols
- Applies locale-specific pronunciation rules

## Request Parameters

| Parameter | Required | Description |
|-----------|----------|-------------|
| `text` | Yes | The text to normalize |
| `locale` | No | Target locale for normalization (e.g., `ko`, `en`, `ja`) |

## Example

Select **"NormalizeTextRequest"** from the **Examples** dropdown to see the request format.




## OpenAPI

````yaml /specs/openapi-interactive.json post /api/v1/settings/text_normalization_config/{config_id}/normalize/
openapi: 3.0.3
info:
  title: Perso Interactive API
  version: 0.0.0
servers:
  - url: https://platform.perso.ai
security: []
tags:
  - name: Embed
paths:
  /api/v1/settings/text_normalization_config/{config_id}/normalize/:
    post:
      tags:
        - Session Operations
      summary: Normalize Text
      description: >
        Apply text normalization rules to prepare text for TTS.


        ## What It Does


        Text normalization converts text into a format optimized for speech
        synthesis:

        - Expands abbreviations (e.g., "Dr." → "Doctor")

        - Converts numbers to words (e.g., "123" → "one hundred twenty-three")

        - Handles special characters and symbols

        - Applies locale-specific pronunciation rules


        ## Request Parameters


        | Parameter | Required | Description |

        |-----------|----------|-------------|

        | `text` | Yes | The text to normalize |

        | `locale` | No | Target locale for normalization (e.g., `ko`, `en`,
        `ja`) |


        ## Example


        Select **"NormalizeTextRequest"** from the **Examples** dropdown to see
        the request format.
      operationId: v1_settings_text_normalization_config_normalize_create
      parameters:
        - in: path
          name: config_id
          schema:
            type: string
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TextNormalizationNormalizeRequestRequest'
            examples:
              NormalizeTextRequest:
                value:
                  text: Hello 안녕하세요
                  locale: ko
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TextNormalizationNormalizeRequestRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TextNormalizationNormalizeRequestRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TextNormalizationNormalizeResponse'
          description: ''
        '400':
          description: Bad Request - Invalid input data or parameters.
        '401':
          description: Unauthorized - Invalid or missing authentication credentials.
        '403':
          description: Forbidden - You do not have permission to perform this action.
        '404':
          description: Not Found - The requested resource could not be found.
        '500':
          description: Internal Server Error - An unexpected error occurred.
      security:
        - PersoPlatform-APIKey: []
        - {}
components:
  schemas:
    TextNormalizationNormalizeRequestRequest:
      type: object
      properties:
        text:
          type: string
          minLength: 1
          description: >-
            Raw text to normalize. The config's regex rules are applied in
            `order` (lowest first) to rewrite patterns into spoken-form text
            (e.g. `20℉` → `화씨 20도`).
        locale:
          type: string
          default: ''
          description: >-
            Locale code (e.g. `ko-KR`). When set, locale-agnostic rules plus
            rules matching this locale run; when omitted, only locale-agnostic
            rules run.
      required:
        - text
    TextNormalizationNormalizeResponse:
      type: object
      properties:
        normalized_text:
          type: string
      required:
        - normalized_text
  securitySchemes:
    PersoPlatform-APIKey:
      type: apiKey
      in: header
      name: PersoPlatform-APIKey

````