> ## Documentation Index
> Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tạo âm thanh từ văn bản với Kling

> Sử dụng API Kling Text to Audio trong CometAPI để chuyển đổi prompt văn bản thành âm thanh với các tùy chọn điều khiển phong cách giọng nói, thời lượng và đầu ra sẵn sàng cho streaming.

Sử dụng endpoint này để tạo một đoạn âm thanh ngắn từ prompt văn bản thông qua Kling.

## Trước khi gọi

* Giữ `prompt` ngắn gọn và trực tiếp
* Bắt đầu với `duration` từ 3 đến 10 giây
* Xem `callback_url` và `external_task_id` là các công cụ hỗ trợ tích hợp tùy chọn, không phải yêu cầu cốt lõi

## Luồng tác vụ

<Steps>
  <Step title="Gửi tác vụ âm thanh">
    Gửi prompt văn bản và thời lượng, sau đó lưu task id được trả về.
  </Step>

  <Step title="Thăm dò tác vụ">
    Tiếp tục với [Lấy một tác vụ Kling](./individual-queries) bằng đường dẫn truy vấn âm thanh Kling cho đến khi tác vụ đạt trạng thái kết thúc.
  </Step>

  <Step title="Lưu trữ đầu ra âm thanh">
    Lưu trữ tài nguyên âm thanh cuối cùng nếu bạn cần dùng nó sau khoảng thời gian phân phối của nhà cung cấp.
  </Step>
</Steps>

<Tip>
  Để xem tài liệu tham khảo đầy đủ về tham số, hãy xem [tài liệu Kling chính thức](https://app.klingai.com/global/dev/document-api/apiReference/model/textToAudio).
</Tip>


## OpenAPI

````yaml api/openapi/video/kling/post-text-to-audio.openapi.json POST /kling/v1/audio/text-to-audio
openapi: 3.1.0
info:
  title: Text to Audio API
  version: 1.0.0
  description: Create a Kling audio-generation task from a text prompt.
servers:
  - url: https://api.cometapi.com
security:
  - bearerAuth: []
paths:
  /kling/v1/audio/text-to-audio:
    post:
      summary: Create a Kling text-to-audio task
      description: >-
        Submit a text prompt and duration, then poll the returned task id
        through the generic Kling query route.
      operationId: text_to_audio
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - prompt
                - duration
              properties:
                prompt:
                  type: string
                  description: >-
                    Text prompt describing the audio to generate. Max 200
                    characters.
                duration:
                  type: integer
                  description: >-
                    Duration of the generated audio in seconds. Range: 3.0–10.0,
                    supports one decimal place.
                external_task_id:
                  type: string
                  description: >-
                    Optional user-defined task ID for your own tracking. Does
                    not replace the system-generated task ID. Must be unique per
                    account.
                callback_url:
                  type: string
                  description: >-
                    Webhook URL for task status notifications. The server sends
                    a callback when the task status changes.
              default:
                prompt: Soft ambient ocean waves at sunrise.
                duration: 5
            examples:
              Validated request:
                summary: Validated request
                value:
                  prompt: Soft ambient ocean waves at sunrise.
                  duration: 5
      responses:
        '200':
          description: Task accepted.
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - message
                  - data
                properties:
                  code:
                    type: integer
                    description: |
                      Error code; specific error code definition
                  message:
                    type: string
                    description: |
                      Error message
                  data:
                    type: object
                    required:
                      - task_id
                      - task_status
                      - created_at
                      - updated_at
                    properties:
                      task_id:
                        type: string
                        description: |
                          Task ID, system-generated
                      task_status:
                        type: string
                        description: >
                          Task status, enum values: submitted, processing,
                          succeed, failed
                      created_at:
                        type: integer
                        description: |+
                          Task creation time, Unix timestamp, in ms

                      updated_at:
                        type: integer
                        description: |
                          Task update time, Unix timestamp, in ms
                example:
                  code: 0
                  message: SUCCEED
                  data:
                    task_id: '861254119619698760'
                    task_status: submitted
                    task_info: {}
                    created_at: 1773367502225
                    updated_at: 1773367502225
      x-codeSamples:
        - lang: Shell
          label: Default
          source: |
            curl https://api.cometapi.com/kling/v1/audio/text-to-audio \
              -H "Authorization: Bearer $COMETAPI_KEY" \
              -H "Content-Type: application/json" \
              -d '{
                  "prompt": "Soft ambient ocean waves at sunrise.",
                  "duration": 5
                }'
        - lang: Python
          label: Default
          source: >
            import os

            import requests


            response = requests.post(
                "https://api.cometapi.com/kling/v1/audio/text-to-audio",
                headers={"Authorization": "Bearer " + os.environ["COMETAPI_KEY"]},
                json={
                        "prompt": "Soft ambient ocean waves at sunrise.",
                        "duration": 5
                },
            )


            result = response.json()

            print(result["code"], result.get("data", {}).get("task_id"))  # code
            0 means submitted; poll the matching query endpoint until
            task_status is succeed
        - lang: JavaScript
          label: Default
          source: >
            const response = await
            fetch("https://api.cometapi.com/kling/v1/audio/text-to-audio", {
                method: "POST",
                headers: {
                    Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
                    "Content-Type": "application/json",
                },
                body: JSON.stringify({
                        "prompt": "Soft ambient ocean waves at sunrise.",
                        "duration": 5
                    }),
            });


            const result = await response.json();

            console.log(result.code, result.data?.task_id); // code 0 means
            submitted; poll the matching query endpoint until task_status is
            succeed
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token authentication. Use your CometAPI key.

````