Groq Audio API

The Audio API from Groq — 3 operation(s) for audio.

OpenAPI Specification

groq-audio-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: GroqCloud Audio API
  description: Specification of the Groq cloud API
  termsOfService: https://groq.com/terms-of-use/
  contact:
    name: Groq Support
    email: support@groq.com
  version: '2.1'
servers:
- url: https://api.groq.com
security:
- api_key: []
tags:
- name: Audio
paths:
  /openai/v1/audio/speech:
    post:
      operationId: createSpeech
      tags:
      - Audio
      summary: Generates audio from the input text.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSpeechRequest'
      responses:
        '200':
          description: OK
          headers:
            Transfer-Encoding:
              schema:
                type: string
              description: chunked
          content:
            audio/wav:
              schema:
                type: string
                format: binary
      x-groq-metadata:
        returns: Returns an audio file in `wav` format.
        examples:
        - title: Default
          request:
            curl: "curl https://api.groq.com/openai/v1/audio/speech \\\n  -H \"Authorization: Bearer $GROQ_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"playai-tts\",\n    \"input\": \"I love building and shipping new features for our users!\",\n    \"voice\": \"Fritz-PlayAI\",\n    \"response_format\": \"wav\"\n  }'\n"
            py: "import os\nfrom groq import Groq\n\nclient = Groq(api_key=os.environ.get(\"GROQ_API_KEY\"))\n\nspeech_file_path = \"speech.wav\"\nmodel = \"playai-tts\"\nvoice = \"Fritz-PlayAI\"\ntext = \"I love building and shipping new features for our users!\"\nresponse_format = \"wav\"\n\nresponse = client.audio.speech.create(\n    model=model,\n    voice=voice,\n    input=text,\n    response_format=response_format\n)\n\nresponse.write_to_file(speech_file_path)\n"
            js: "import fs from \"fs\";\nimport path from \"path\";\nimport Groq from 'groq-sdk';\n\nconst groq = new Groq({\n  apiKey: process.env.GROQ_API_KEY\n});\n\nconst speechFilePath = \"speech.wav\";\nconst model = \"playai-tts\";\nconst voice = \"Fritz-PlayAI\";\nconst text = \"I love building and shipping new features for our users!\";\nconst responseFormat = \"wav\";\n\nasync function main() {\n  const response = await groq.audio.speech.create({\n    model: model,\n    voice: voice,\n    input: text,\n    response_format: responseFormat\n  });\n\n  const buffer = Buffer.from(await response.arrayBuffer());\n  await fs.promises.writeFile(speechFilePath, buffer);\n}\n\nmain();\n"
  /openai/v1/audio/transcriptions:
    post:
      operationId: createTranscription
      tags:
      - Audio
      summary: Transcribes audio into the input language.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateTranscriptionRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateTranscriptionResponseJson'
      x-groq-metadata:
        returns: Returns an audio transcription object.
        examples:
        - title: Default
          request:
            curl: "curl https://api.groq.com/openai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $GROQ_API_KEY\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -F file=\"@./sample_audio.m4a\" \\\n  -F model=\"whisper-large-v3\"\n"
            py: "import os\nfrom groq import Groq\n\nclient = Groq()\nfilename = os.path.dirname(__file__) + \"/sample_audio.m4a\"\n\nwith open(filename, \"rb\") as file:\n    transcription = client.audio.transcriptions.create(\n      file=(filename, file.read()),\n      model=\"whisper-large-v3\",\n      prompt=\"Specify context or spelling\",  # Optional\n      response_format=\"json\",  # Optional\n      language=\"en\",  # Optional\n      temperature=0.0  # Optional\n    )\n    print(transcription.text)\n"
            js: "import fs from \"fs\";\nimport Groq from \"groq-sdk\";\n\nconst groq = new Groq();\nasync function main() {\n  const transcription = await groq.audio.transcriptions.create({\n    file: fs.createReadStream(\"sample_audio.m4a\"),\n    model: \"whisper-large-v3\",\n    prompt: \"Specify context or spelling\", // Optional\n    response_format: \"json\", // Optional\n    language: \"en\", // Optional\n    temperature: 0.0, // Optional\n  });\n  console.log(transcription.text);\n}\nmain();\n"
          response: "{\n  \"text\": \"Your transcribed text appears here...\",\n  \"x_groq\": {\n    \"id\": \"req_unique_id\"\n  }\n}\n"
  /openai/v1/audio/translations:
    post:
      operationId: createTranslation
      tags:
      - Audio
      summary: Translates audio into English.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateTranslationRequest'
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                $ref: '#/components/schemas/CreateTranslationResponseJson'
      x-groq-metadata:
        returns: Returns an audio translation object.
        examples:
        - title: Default
          request:
            curl: "curl https://api.groq.com/openai/v1/audio/translations \\\n  -H \"Authorization: Bearer $GROQ_API_KEY\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -F file=\"@./sample_audio.m4a\" \\\n  -F model=\"whisper-large-v3\"\n"
            py: "# Default\nimport os\nfrom groq import Groq\n\nclient = Groq()\nfilename = os.path.dirname(__file__) + \"/sample_audio.m4a\"\n\nwith open(filename, \"rb\") as file:\n    translation = client.audio.translations.create(\n      file=(filename, file.read()),\n      model=\"whisper-large-v3\",\n      prompt=\"Specify context or spelling\",  # Optional\n      response_format=\"json\",  # Optional\n      temperature=0.0  # Optional\n    )\n    print(translation.text)\n"
            js: "// Default\nimport fs from \"fs\";\nimport Groq from \"groq-sdk\";\n\nconst groq = new Groq();\nasync function main() {\n  const translation = await groq.audio.translations.create({\n    file: fs.createReadStream(\"sample_audio.m4a\"),\n    model: \"whisper-large-v3\",\n    prompt: \"Specify context or spelling\", // Optional\n    response_format: \"json\", // Optional\n    temperature: 0.0, // Optional\n  });\n  console.log(translation.text);\n}\nmain();\n"
          response: "{\n  \"text\": \"Your translated text appears here...\",\n  \"x_groq\": {\n    \"id\": \"req_unique_id\"\n  }\n}\n"
components:
  schemas:
    CreateTranscriptionResponseJson:
      type: object
      description: Represents a transcription response returned by model, based on the provided input.
      properties:
        text:
          type: string
          description: The transcribed text.
      required:
      - text
    CreateSpeechRequest:
      type: object
      additionalProperties: false
      properties:
        model:
          description: 'One of the [available TTS models](/docs/text-to-speech).

            '
          anyOf:
          - type: string
          - type: string
            enum:
            - playai-tts
            - playai-tts-arabic
          example: playai-tts
        input:
          example: The quick brown fox jumped over the lazy dog
          type: string
          description: The text to generate audio for.
        voice:
          description: The voice to use when generating the audio. List of voices can be found [here](/docs/text-to-speech).
          type: string
          example: Fritz-PlayAI
        response_format:
          description: The format of the generated audio. Supported formats are `flac, mp3, mulaw, ogg, wav`.
          default: mp3
          type: string
          enum:
          - flac
          - mp3
          - mulaw
          - ogg
          - wav
        sample_rate:
          type: integer
          description: The sample rate for generated audio
          default: 48000
          example: 48000
          enum:
          - 8000
          - 16000
          - 22050
          - 24000
          - 32000
          - 44100
          - 48000
        speed:
          description: The speed of the generated audio.
          example: 1
          type: number
          default: 1
          minimum: 0.5
          maximum: 5
      required:
      - model
      - input
      - voice
    CreateTranslationResponseJson:
      type: object
      properties:
        text:
          type: string
      required:
      - text
    CreateTranslationRequest:
      type: object
      additionalProperties: false
      properties:
        file:
          description: 'The audio file object (not file name) translate, in one of these formats: flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm.

            '
          type: string
          format: binary
        url:
          description: 'The audio URL to translate/transcribe (supports Base64URL). Either file or url must be provided.

            When using the Batch API only url is supported.

            '
          type: string
        model:
          description: 'ID of the model to use. `whisper-large-v3` and `whisper-large-v3-turbo` are currently available.

            '
          example: whisper-large-v3-turbo
          anyOf:
          - type: string
          - type: string
            enum:
            - whisper-large-v3
            - whisper-large-v3-turbo
        prompt:
          description: 'An optional text to guide the model''s style or continue a previous audio segment. The [prompt](/docs/guides/speech-to-text/prompting) should be in English.

            '
          type: string
        response_format:
          description: 'The format of the transcript output, in one of these options: `json`, `text`, or `verbose_json`.

            '
          type: string
          enum:
          - json
          - text
          - verbose_json
          default: json
        temperature:
          description: 'The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use [log probability](https://en.wikipedia.org/wiki/Log_probability) to automatically increase the temperature until certain thresholds are hit.

            '
          type: number
          default: 0
      oneOf:
      - required:
        - file
      - required:
        - url
      required:
      - model
    CreateTranscriptionRequest:
      type: object
      additionalProperties: false
      properties:
        file:
          description: 'The audio file object (not file name) to transcribe, in one of these formats: flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm.

            Either a file or a URL must be provided. Note that the file field is not supported in Batch API requests.

            '
          type: string
          format: binary
        url:
          description: 'The audio URL to translate/transcribe (supports Base64URL).

            Either a file or a URL must be provided. For Batch API requests, the URL field is required since the file field is not supported.

            '
          type: string
        model:
          description: 'ID of the model to use. `whisper-large-v3` and `whisper-large-v3-turbo` are currently available.

            '
          example: whisper-large-v3-turbo
          anyOf:
          - type: string
          - type: string
            enum:
            - whisper-large-v3
            - whisper-large-v3-turbo
        language:
          description: 'The language of the input audio. Supplying the input language in [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format will improve accuracy and latency.

            '
          anyOf:
          - type: string
          - type: string
            enum:
            - en
            - zh
            - de
            - es
            - ru
            - ko
            - fr
            - ja
            - pt
            - tr
            - pl
            - ca
            - nl
            - ar
            - sv
            - it
            - id
            - hi
            - fi
            - vi
            - he
            - uk
            - el
            - ms
            - cs
            - ro
            - da
            - hu
            - ta
            - 'no'
            - th
            - ur
            - hr
            - bg
            - lt
            - la
            - mi
            - ml
            - cy
            - sk
            - te
            - fa
            - lv
            - bn
            - sr
            - az
            - sl
            - kn
            - et
            - mk
            - br
            - eu
            - is
            - hy
            - ne
            - mn
            - bs
            - kk
            - sq
            - sw
            - gl
            - mr
            - pa
            - si
            - km
            - sn
            - yo
            - so
            - af
            - oc
            - ka
            - be
            - tg
            - sd
            - gu
            - am
            - yi
            - lo
            - uz
            - fo
            - ht
            - ps
            - tk
            - nn
            - mt
            - sa
            - lb
            - my
            - bo
            - tl
            - mg
            - as
            - tt
            - haw
            - ln
            - ha
            - ba
            - jv
            - su
            - yue
        prompt:
          description: 'An optional text to guide the model''s style or continue a previous audio segment. The [prompt](/docs/speech-text) should match the audio language.

            '
          type: string
        response_format:
          description: 'The format of the transcript output, in one of these options: `json`, `text`, or `verbose_json`.

            '
          type: string
          enum:
          - json
          - text
          - verbose_json
          default: json
        temperature:
          description: 'The sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use [log probability](https://en.wikipedia.org/wiki/Log_probability) to automatically increase the temperature until certain thresholds are hit.

            '
          type: number
          default: 0
        timestamp_granularities:
          description: 'The timestamp granularities to populate for this transcription. `response_format` must be set `verbose_json` to use timestamp granularities. Either or both of these options are supported: `word`, or `segment`. Note: There is no additional latency for segment timestamps, but generating word timestamps incurs additional latency.

            '
          type: array
          items:
            type: string
            enum:
            - word
            - segment
          default:
          - segment
      oneOf:
      - required:
        - file
      - required:
        - url
      required:
      - model
  securitySchemes:
    api_key:
      type: http
      scheme: bearer
      bearerFormat: apiKey
x-groq-metadata:
  groups:
  - id: chat
    type: endpoints
    title: Chat
    description: ''
    sections:
    - type: endpoint
      key: createChatCompletion
      path: create
  - id: responses
    type: endpoints
    title: Responses (beta)
    description: ''
    sections:
    - type: endpoint
      key: createResponse
      path: create
  - id: audio
    type: endpoints
    title: Audio
    description: ''
    sections:
    - type: endpoint
      key: createTranscription
      path: transcription
    - type: endpoint
      key: createTranslation
      path: translation
    - type: endpoint
      key: createSpeech
      path: speech
  - id: models
    type: endpoints
    title: Models
    description: ''
    sections:
    - type: endpoint
      key: listModels
      path: list
    - type: endpoint
      key: retrieveModel
      path: retrieve
  - id: batches
    type: endpoints
    title: Batches
    description: ''
    sections:
    - type: endpoint
      key: createBatch
      path: create
    - type: endpoint
      key: retrieveBatch
      path: retrieve
    - type: endpoint
      key: listBatches
      path: list
    - type: endpoint
      key: cancelBatch
      path: cancel
  - id: files
    type: endpoints
    title: Files
    description: ''
    sections:
    - type: endpoint
      key: uploadFile
      path: upload
    - type: endpoint
      key: listFiles
      path: list
    - type: endpoint
      key: deleteFile
      path: delete
    - type: endpoint
      key: retrieveFile
      path: retrieve
    - type: endpoint
      key: downloadFile
      path: download
  - id: fine-tuning
    type: endpoints
    title: Fine Tuning
    description: ''
    sections:
    - type: endpoint
      key: listFineTunings
      path: list
    - type: endpoint
      key: createFineTuning
      path: create
    - type: endpoint
      key: getFineTuning
      path: get
    - type: endpoint
      key: deleteFineTuning
      path: delete