LocalAI Audio API

The audio API from LocalAI — 14 operation(s) for audio.

Operations 15

GET /api/voice-profiles List voice profiles #
POST /api/voice-profiles Create a voice profile #
DELETE /api/voice-profiles/{id} Delete a voice profile #
GET /api/voice-profiles/{id}/audio Preview voice profile audio #
POST /audio/transform Transform audio (echo cancellation, noise suppression, voice conversion, etc.) #
POST /audio/transformations Transform audio (echo cancellation, noise suppression, voice conversion, etc.) #
GET /audio/transformations/stream Bidirectional realtime audio transform over WebSocket #
POST /tts Generates audio from the input text #
POST /v1/audio/classification Classify sound events in audio (audio tagging) #
POST /v1/audio/diarization Identify speakers in audio (who spoke when) #
POST /v1/audio/speech Generates audio from the input text #
POST /v1/audio/transcriptions Transcribes audio into the input language #
POST /v1/sound-generation Generates audio from the input text #
POST /v1/text-to-speech/{voice-id} Generates audio from the input text #
POST /vad Detect voice fragments in an audio stream #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/localai-audio-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

localai-audio-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: The LocalAI Rest API.
  title: LocalAI Audio API
  contact:
    name: LocalAI
    url: https://localai.io
  license:
    name: MIT
    url: https://raw.githubusercontent.com/mudler/LocalAI/master/LICENSE
  version: 2.0.0
servers:
- url: /
tags:
- name: Audio
paths:
  /api/voice-profiles:
    get:
      description: List saved voice-cloning references without exposing filesystem paths.
      tags:
      - Audio
      summary: List voice profiles
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/localai.VoiceProfileListResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schema.ErrorResponse'
      operationId: getApiVoiceProfiles
      x-operation-id-source: derived
    post:
      description: Save a consent-confirmed PCM WAV reference clip and exact transcript for voice cloning. Admin-only.
      tags:
      - Audio
      summary: Create a voice profile
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/voiceprofile.Profile'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schema.ErrorResponse'
        '413':
          description: Request Entity Too Large
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schema.ErrorResponse'
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Display name
                description:
                  type: string
                  description: Optional description
                language:
                  type: string
                  description: Optional language tag
                transcript:
                  type: string
                  description: Exact transcript of the reference clip
                consent_confirmed:
                  type: boolean
                  description: Confirms authorization to clone the voice
                audio:
                  type: string
                  description: 16-bit PCM WAV, preferably mono 24 kHz, 1-120 seconds, up to 50 MiB
                  format: binary
              required:
              - name
              - transcript
              - consent_confirmed
              - audio
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Display name
                description:
                  type: string
                  description: Optional description
                language:
                  type: string
                  description: Optional language tag
                transcript:
                  type: string
                  description: Exact transcript of the reference clip
                consent_confirmed:
                  type: boolean
                  description: Confirms authorization to clone the voice
                audio:
                  type: string
                  description: 16-bit PCM WAV, preferably mono 24 kHz, 1-120 seconds, up to 50 MiB
                  format: binary
              required:
              - name
              - transcript
              - consent_confirmed
              - audio
      operationId: postApiVoiceProfiles
      x-operation-id-source: derived
  /api/voice-profiles/{id}:
    delete:
      description: Permanently remove a saved voice-cloning profile. Admin-only.
      tags:
      - Audio
      summary: Delete a voice profile
      parameters:
      - description: Voice profile UUID
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schema.ErrorResponse'
      operationId: deleteApiVoiceProfilesById
      x-operation-id-source: derived
  /api/voice-profiles/{id}/audio:
    get:
      description: Stream the saved reference WAV for an authenticated TTS user.
      tags:
      - Audio
      summary: Preview voice profile audio
      parameters:
      - description: Voice profile UUID
        name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            audio/x-wav:
              schema:
                type: string
        '404':
          description: Not Found
          content:
            audio/x-wav:
              schema:
                $ref: '#/components/schemas/schema.ErrorResponse'
      operationId: getApiVoiceProfilesByIdAudio
      x-operation-id-source: derived
  /audio/transform:
    post:
      description: Runs an audio-in / audio-out transform conditioned on an optional auxiliary reference signal. Concrete transforms include AEC + noise suppression + dereverberation (LocalVQE), voice conversion (reference = target speaker), and pitch shifting. The backend determines the operation; pass model-specific tuning via repeated `params[]=` form fields.
      tags:
      - Audio
      summary: Transform audio (echo cancellation, noise suppression, voice conversion, etc.)
      responses:
        '200':
          description: transformed audio file
          content:
            audio/x-wav:
              schema:
                type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                model:
                  type: string
                  description: model
                audio:
                  type: string
                  description: primary input audio file
                  format: binary
                reference:
                  type: string
                  description: auxiliary reference audio (loopback for AEC, target voice for conversion, etc.)
                  format: binary
                response_format:
                  type: string
                  description: wav | mp3 | ogg | flac
                sample_rate:
                  type: integer
                  description: desired output sample rate in Hz; omit for the backend's own rate, otherwise 8000-192000
              required:
              - model
              - audio
      operationId: postAudioTransform
      x-operation-id-source: derived
  /audio/transformations:
    post:
      description: Runs an audio-in / audio-out transform conditioned on an optional auxiliary reference signal. Concrete transforms include AEC + noise suppression + dereverberation (LocalVQE), voice conversion (reference = target speaker), and pitch shifting. The backend determines the operation; pass model-specific tuning via repeated `params[]=` form fields.
      tags:
      - Audio
      summary: Transform audio (echo cancellation, noise suppression, voice conversion, etc.)
      responses:
        '200':
          description: transformed audio file
          content:
            audio/x-wav:
              schema:
                type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                model:
                  type: string
                  description: model
                audio:
                  type: string
                  description: primary input audio file
                  format: binary
                reference:
                  type: string
                  description: auxiliary reference audio (loopback for AEC, target voice for conversion, etc.)
                  format: binary
                response_format:
                  type: string
                  description: wav | mp3 | ogg | flac
                sample_rate:
                  type: integer
                  description: desired output sample rate in Hz; omit for the backend's own rate, otherwise 8000-192000
              required:
              - model
              - audio
      operationId: postAudioTransformations
      x-operation-id-source: derived
  /audio/transformations/stream:
    get:
      description: 'Streams binary PCM frames in (interleaved stereo: ch0=audio, ch1=reference) and out (mono). The model must support the audio_transform use case. Any-to-any models such as liquid-audio use the OpenAI Realtime API instead. The first message must be a JSON `session.update` envelope describing model + sample format + frame size + backend params. Server emits binary PCM on the same cadence.'
      tags:
      - Audio
      summary: Bidirectional realtime audio transform over WebSocket
      responses: {}
      operationId: getAudioTransformationsStream
      x-operation-id-source: derived
  /tts:
    post:
      tags:
      - Audio
      summary: Generates audio from the input text
      responses:
        '200':
          description: generated audio/wav file
          content:
            audio/x-wav:
              schema:
                type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schema.TTSRequest'
        description: query params
        required: true
      operationId: postTts
      x-operation-id-source: derived
  /v1/audio/classification:
    post:
      tags:
      - Audio
      summary: Classify sound events in audio (audio tagging)
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schema.SoundClassificationResult'
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                model:
                  type: string
                  description: model
                file:
                  type: string
                  description: audio file
                  format: binary
                top_k:
                  type: integer
                  description: number of top tags to return (0 = backend default)
                threshold:
                  type: number
                  description: drop tags scoring below this value
              required:
              - model
              - file
      operationId: postV1AudioClassification
      x-operation-id-source: derived
  /v1/audio/diarization:
    post:
      tags:
      - Audio
      summary: Identify speakers in audio (who spoke when)
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/schema.DiarizationResult'
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                model:
                  type: string
                  description: model
                file:
                  type: string
                  description: audio file
                  format: binary
                num_speakers:
                  type: integer
                  description: exact speaker count (>0 forces; 0 = auto)
                min_speakers:
                  type: integer
                  description: lower bound when auto-detecting
                max_speakers:
                  type: integer
                  description: upper bound when auto-detecting
                clustering_threshold:
                  type: number
                  description: clustering distance threshold when num_speakers is unknown
                min_duration_on:
                  type: number
                  description: discard segments shorter than this (seconds)
                min_duration_off:
                  type: number
                  description: merge gaps shorter than this (seconds)
                language:
                  type: string
                  description: audio language hint (only meaningful for backends that bundle ASR)
                include_text:
                  type: boolean
                  description: include per-segment transcript when the backend supports it
                response_format:
                  type: string
                  description: json (default), verbose_json, or rttm
              required:
              - model
              - file
      operationId: postV1AudioDiarization
      x-operation-id-source: derived
  /v1/audio/speech:
    post:
      tags:
      - Audio
      summary: Generates audio from the input text
      responses:
        '200':
          description: generated audio/wav file
          content:
            audio/x-wav:
              schema:
                type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schema.TTSRequest'
        description: query params
        required: true
      operationId: postV1AudioSpeech
      x-operation-id-source: derived
  /v1/audio/transcriptions:
    post:
      tags:
      - Audio
      summary: Transcribes audio into the input language
      responses:
        '200':
          description: Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                model:
                  type: string
                  description: model
                file:
                  type: string
                  description: file
                  format: binary
                temperature:
                  type: number
                  description: sampling temperature
                timestamp_granularities:
                  type: array
                  items:
                    type: string
                  description: timestamp granularities (word, segment)
                stream:
                  type: boolean
                  description: stream partial results as SSE
              required:
              - model
              - file
      operationId: postV1AudioTranscriptions
      x-operation-id-source: derived
  /v1/sound-generation:
    post:
      tags:
      - Audio
      summary: Generates audio from the input text
      responses:
        '200':
          description: Response
          content:
            application/json:
              schema:
                type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schema.ElevenLabsSoundGenerationRequest'
        description: query params
        required: true
      operationId: postV1SoundGeneration
      x-operation-id-source: derived
  /v1/text-to-speech/{voice-id}:
    post:
      tags:
      - Audio
      summary: Generates audio from the input text
      parameters:
      - description: Account ID
        name: voice-id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Response
          content:
            application/json:
              schema:
                type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schema.TTSRequest'
        description: query params
        required: true
      operationId: postV1TextToSpeechByVoiceId
      x-operation-id-source: derived
  /vad:
    post:
      tags:
      - Audio
      summary: Detect voice fragments in an audio stream
      responses:
        '200':
          description: Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/proto.VADResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/schema.VADRequest'
        description: query params
        required: true
      operationId: postVad
      x-operation-id-source: derived
components:
  schemas:
    voiceprofile.Profile:
      type: object
      properties:
        audio:
          $ref: '#/components/schemas/voiceprofile.AudioMetadata'
        consent_confirmed_at:
          type: string
        created_at:
          type: string
        description:
          type: string
        id:
          type: string
        language:
          type: string
        name:
          type: string
        transcript:
          type: string
        updated_at:
          type: string
        voice:
          type: string
    voiceprofile.AudioMetadata:
      type: object
      properties:
        bit_depth:
          type: integer
        channels:
          type: integer
        duration_ms:
          type: integer
        mime_type:
          type: string
        sample_rate:
          type: integer
        size_bytes:
          type: integer
    proto.VADSegment:
      type: object
      properties:
        end:
          type: number
        start:
          type: number
    schema.APIError:
      type: object
      properties:
        code: {}
        message:
          type: string
        param:
          type: string
        type:
          type: string
    schema.DiarizationSegment:
      type: object
      properties:
        end:
          type: number
        id:
          type: integer
        label:
          type: string
        speaker:
          type: string
        start:
          type: number
        text:
          type: string
    schema.TTSRequest:
      description: TTS request body
      type: object
      properties:
        backend:
          description: backend engine override
          type: string
        input:
          description: text input
          type: string
        instructions:
          description: 'Instructions is a free-form, per-request style/voice description. It maps to

            the OpenAI `instructions` field and is forwarded to the backend so expressive

            TTS models (e.g. Qwen3-TTS CustomVoice/VoiceDesign) can vary tone or designed

            voice per request instead of only via the static YAML option.'
          type: string
        language:
          description: (optional) language to use with TTS model
          type: string
        model:
          type: string
        params:
          description: 'Params carries optional, backend-specific per-request generation parameters

            (LocalAI extension, e.g. Chatterbox exaggeration/cfg_weight/temperature).'
          type: object
          additionalProperties:
            type: string
        response_format:
          description: (optional) output format
          type: string
        sample_rate:
          description: (optional) desired output sample rate
          type: integer
        speed:
          description: 'Speed is the OpenAI `speed` field (0.25-4.0). It is a pointer so an

            explicit `"speed": 0` (invalid, rejected with 400) is distinguishable

            from an omitted field (left at the backend default). It is normalised

            into Params["speed"] so it reaches the backend over the same channel as

            the other per-request generation parameters.'
          type: number
        stream:
          description: (optional) enable streaming TTS
          type: boolean
        voice:
          description: voice audio file or speaker id
          type: string
    schema.VADRequest:
      description: VAD request body
      type: object
      properties:
        audio:
          description: raw audio samples as float32 PCM
          type: array
          items:
            type: number
        model:
          type: string
    localai.VoiceProfileListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/voiceprofile.Profile'
    schema.DiarizationResult:
      type: object
      properties:
        duration:
          type: number
        language:
          type: string
        num_speakers:
          type: integer
        segments:
          type: array
          items:
            $ref: '#/components/schemas/schema.DiarizationSegment'
        speakers:
          type: array
          items:
            $ref: '#/components/schemas/schema.DiarizationSpeaker'
        task:
          type: string
    schema.ElevenLabsSoundGenerationRequest:
      type: object
      properties:
        bpm:
          type: integer
        caption:
          type: string
        do_sample:
          type: boolean
        duration_seconds:
          type: number
        instrumental:
          description: 'Simple mode: use text as description; optional instrumental / vocal_language'
          type: boolean
        keyscale:
          type: string
        language:
          type: string
        lyrics:
          type: string
        model_id:
          type: string
        prompt_influence:
          type: number
        text:
          type: string
        think:
          description: Advanced mode
          type: boolean
        timesignature:
          type: string
        vocal_language:
          type: string
    schema.SoundClassification:
      type: object
      properties:
        index:
          type: integer
        label:
          type: string
        score:
          type: number
    schema.DiarizationSpeaker:
      type: object
      properties:
        id:
          type: string
        label:
          type: string
        segment_count:
          type: integer
        total_speech_duration:
          type: number
    schema.ErrorResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/schema.APIError'
    proto.VADResponse:
      type: object
      properties:
        segments:
          type: array
          items:
            $ref: '#/components/schemas/proto.VADSegment'
    schema.SoundClassificationResult:
      type: object
      properties:
        detections:
          type: array
          items:
            $ref: '#/components/schemas/schema.SoundClassification'
        model:
          type: string
  securitySchemes:
    BearerAuth:
      type: apiKey
      name: Authorization
      in: header