Speech to text API with speaker names

Send an audio file, get back JSON: the text, who spoke, and their names where they said them aloud.

{
  "language": "en",
  "language_source": "detected",
  "duration": 16.8,
  "text": "Hi, I'm Maya Chen from support. Thanks Maya, this is Tom Becker. Our export keeps failing. Let's look at it together. Which file is it? The Q3 report, about two hours long. Sounds good, I can join that.",
  "speakers": [
    {
      "id": "A",
      "name": "Maya Chen"
    },
    {
      "id": "B",
      "name": "Tom Becker"
    },
    {
      "id": "C",
      "name": null
    }
  ],
  "segments": [
    {
      "start": 0.52,
      "end": 3.9,
      "speaker": "Maya Chen",
      "speaker_id": "A",
      "text": "Hi, I'm Maya Chen from support.",
      "words": [ … ]
    },
    {
      "start": 4.2,
      "end": 7.1,
      "speaker": "Tom Becker",
      "speaker_id": "B",
      "text": "Thanks Maya, this is Tom Becker. Our export keeps failing.",
      "words": [ … ]
    },
    {
      "start": 7.6,
      "end": 11.4,
      "speaker": "Maya Chen",
      "speaker_id": "A",
      "text": "Let's look at it together. Which file is it?",
      "words": [ … ]
    },
    {
      "start": 11.9,
      "end": 14.2,
      "speaker": "Tom Becker",
      "speaker_id": "B",
      "text": "The Q3 report, about two hours long.",
      "words": [ … ]
    },
    {
      "start": 14.6,
      "end": 16.3,
      "speaker": "C",
      "speaker_id": "C",
      "text": "Sounds good, I can join that.",
      "words": [ … ]
    }
  ]
}

Upload, then one call

Upload the file, start the job, read the result. Speaker names are one option on the request.

Read the reference
UP=$(curl -s -X POST https://api.meetwave.io/v1/uploads -H "Authorization: Bearer $MEETWAVE_API_KEY")
curl -s -X PUT --upload-file 'meeting.mp3' "$(echo "$UP" | jq -r .upload_url)"
curl -s https://api.meetwave.io/v1/transcriptions -H "Authorization: Bearer $MEETWAVE_API_KEY" -H "Content-Type: application/json" -d "{\"upload_id\": \"$(echo "$UP" | jq -r .id)\", \"speaker_names\": true}"

Uses jq. Then poll the job or pass a webhook — Reference

Real names, not Speaker 1

A speaker gets a name where it was said aloud in the audio. Where it was not, you get a letter, never a guess.

See the format
  • AMaya Chensaid aloud in the call
  • BTom Beckersaid aloud in the call
  • CCnever named, keeps its letter

Your audio is not kept

The file is deleted once it is processed. The transcript waits for you, then goes.

  • Audiodeleted after processing
  • Resultskept 72 hours, or until you delete them
  • Trainingnever used

Pay for the hours you send

Billed per second from prepaid API usage credits, with no plan and no monthly minimum. The first hour is free.

See pricing
  • Text$0.12 an hour
  • + Speakers$0.15 an hour
  • + Names$0.20 an hour

Questions

MP3, WAV, M4A, OGG, OPUS, FLAC, AAC, WMA, WEBM, MP4, MOV, MKV and AVI. Video files work too: only the sound is read.

Up to 3 hours and 350 MB per file. For longer recordings, split them and send the parts.

The language is detected automatically. The response tells you which one it found, and you can pass a code to fix it.

Yes. Pass a webhook URL with the request and we post to it when the job completes or fails. Or poll the job by its id. Transcriptions reference.

When someone says their name or is addressed by it, the speaker gets that name. Anyone never named keeps a letter: A, B, C. Transcript format.

Per second of audio, at the hourly price of the options you ask for, from your API usage credits. No minimum per file. Create a key.

Your first hour is on us

Create a key, send one file from your own code and read the speakers by name. Pay per second after that.

Get API key — first hour free