Speech Recognition

Speech recognition for the complexity of healthcare

Fast, accurate, and ready to handle clinical conversations. Power any voice-based healthcare workflow with the most accurate medical ASR accessible via API.

Built for developers and trusted by clinicians

Capture clinicial conversations

curl --request POST \
  --url https://api.{environment}.corti.app/v2/interactions/{id}/transcripts/ \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Tenant-Name: <tenant-name>' \
  --data '{
  "recordingId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "primaryLanguage": "en",
  "isDictation": true,
  "isMultichannel": true,
  "diarize": true,
  "participants": [
    {
      "channel": 123,
      "role": "doctor"
    }
  ],
  "modelName": "base"
}'
Copy
await client.transcripts.create("f47ac10b-58cc-4372-a567-0e02b2c3d479", {
    recordingId: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    primaryLanguage: "en",
    modelName: "base"
});
Copy
import requests

url = "https://api.{environment}.corti.app/v2/interactions/{id}/transcripts/"

payload = {
    "recordingId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "primaryLanguage": "en",
    "isDictation": True,
    "isMultichannel": True,
    "diarize": True,
    "participants": [
        {
            "channel": 123,
            "role": "doctor"
        }
    ],
    "modelName": "base"
}
headers = {
    "Tenant-Name": "<tenant-name>",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
Copy
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.{environment}.corti.app/v2/interactions/{id}/transcripts/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    'recordingId' => 'f47ac10b-58cc-4372-a567-0e02b2c3d479',
    'primaryLanguage' => 'en',
    'isDictation' => null,
    'isMultichannel' => null,
    'diarize' => null,
    'participants' => [
        [
                'channel' => 123,
                'role' => 'doctor'
        ]
    ],
    'modelName' => 'base'
  ]),
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer <token>",
    "Content-Type: application/json",
    "Tenant-Name: <tenant-name>"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
Copy
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.{environment}.corti.app/v2/interactions/{id}/transcripts/"

	payload := strings.NewReader("{\n  \"recordingId\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n  \"primaryLanguage\": \"en\",\n  \"isDictation\": true,\n  \"isMultichannel\": true,\n  \"diarize\": true,\n  \"participants\": [\n    {\n      \"channel\": 123,\n      \"role\": \"doctor\"\n    }\n  ],\n  \"modelName\": \"base\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Tenant-Name", "<tenant-name>")
	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
Copy
HttpResponse<String> response = Unirest.post("https://api.{environment}.corti.app/v2/interactions/{id}/transcripts/")
  .header("Tenant-Name", "<tenant-name>")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"recordingId\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n  \"primaryLanguage\": \"en\",\n  \"isDictation\": true,\n  \"isMultichannel\": true,\n  \"diarize\": true,\n  \"participants\": [\n    {\n      \"channel\": 123,\n      \"role\": \"doctor\"\n    }\n  ],\n  \"modelName\": \"base\"\n}")
  .asString();
Copy
import { CortiClient, CortiEnvironment } from "@corti/sdk";

const cortiClient = new CortiClient({
    tenantName: "YOUR_TENANT_NAME",
    environment: CortiEnvironment.BetaEu,
    auth: {
        accessToken: "YOUR_ACCESS_TOKEN"
    },
});

const transcribeSocket = await cortiClient.transcribe.connect();
Copy

Unmatched medical domain accuracy

Our speech recognition models are trained on one of the industry’s largest medical lexicons, covering over 150,000 terms. From drug names to anatomical terminology and specialty-specific language, Corti is optimized for precise recognition in real-world clinical settings.

By focusing exclusively on healthcare, our models achieve higher recall and accuracy than general-purpose systems, ensuring that every diagnosis, treatment, and detail is captured reliably, whether in general practice or highly specialized care.

150,000

Medical terms in our comprehensive training lexicon

35×

Faster than general purpose models

Speech recognition capabilities

Chat Two Bubbles Oval Streamline Icon: https://streamlinehq.com

Diarization

Separate speakers automatically, making each voice clear and easy to identify in transcripts.

Split Vertical Streamline Icon: https://streamlinehq.com

Multi-channel

Capture audio from each channel independently to produce cleaner and more accurate transcripts.

Notification Message Alert Streamline Icon: https://streamlinehq.com

Punctuation

Improve readability with automatic punctuation added consistently across the transcript.

Notification Application 2 Streamline Icon: https://streamlinehq.com

Voice commands

Allow users to speak or type short, predefined commands instead of navigating menus or typing manually.

Align Left Streamline Icon: https://streamlinehq.com

Formatting (beta)

Standardise spoken dates, times, and numbers into precise, structured medical notation.

Dictionary Language Book Streamline Icon: https://streamlinehq.com

Vocabulary (beta)

Expand medical term recognition to improve accuracy for specialised domains further.

Power any voice-based healthcare workflow

Pre-recorded or live

Stream live audio in real time with low latency or process recordings asynchronously, perfect for dictation, patient conversations, or high-volume documentation.

Capture medical language natively

Trained on real-world clinical conversations, Corti’s models handle medical terminology, abbreviations, and multilingual input with exceptional accuracy — straight out of the box. You get accurate transcripts straight out of the box without endless tuning or manual cleanup.

Structure notes automatically

Separate by speaker, capture multichannel input, and apply spoken or automatic punctuation. Corti turns every word, pause, and correction into structured notes that are immediately ready for downstream use.

Ship custom voice commands

Define commands like “new line” or domain-specific phrases that trigger formatting or actions in transcription.Clinicians can dictate naturally while Corti handles structure, keeping attention on the patient instead of the screen.

“By adding Corti’s API directly into our platform, we’re giving customers the latest capabilities without forcing them to learn new systems or abandon familiar workflows.”
Dr. Thomas Brauner
CEO, Speech Processing Solutions

Now see what you can build

Real-time dictation

Let physicians speak naturally while Corti transcribes notes, referrals, and reports instantly — with voice commands.

Real-time dictation

Ambient documentation

Transcribe patient conversations live with speaker attribution and fact extraction, so you can generate clean clinical notes.

Ambient documentation

Post-call transcription

Convert recorded consultations, tele-health sessions, or contact center calls into accurate transcripts with a single API.

Post-call transcription

Voice-powered features

Drive smart tools like symptom checkers, digital intake forms, or clinical assistants — all with real-time speech input.

Voice-powered features

Real-time dictation

Let physicians speak naturally while Corti transcribes notes, referrals, and reports instantly — with voice commands.

Real-time dictation

Ambient documentation

Transcribe patient conversations live with speaker attribution and fact extraction, so you can generate clean clinical notes.

Ambient documentation

Post-call transcription

Convert recorded consultations, tele-health sessions, or contact center calls into accurate transcripts with a single API.

Post-call transcription

Voice-powered features

Drive smart tools like symptom checkers, digital intake forms, or clinical assistants — all with real-time speech input.

Voice-powered features
Speech Recognition

Built for healthcare. Trusted by developers.

🔥 Claim your $50 of free credits