Turn recordings into transcripts your app can use
Make interviews and meetings searchable, or prepare audio for a summary. Compare transcription APIs with speaker labels and word timestamps.
Choose what your transcript needs to include
For search or a summary, the transcript text may be all you need. If you want to show who said what, request speaker labels. Word timestamps let your app jump from a line of text to the corresponding moment in the recording.
The ElevenLabs example below returns text and a word list, with speaker IDs when diarization is enabled. Fish Audio offers another transcription option. Test a recording that reflects your actual audio, including background noise and multiple speakers if those are common in your app.
Compare costs using the length and number of your recordings. NativePort bills ElevenLabs at a flat approximation per request and Fish Audio transcription per second. The example below estimates both, using rates you should check before running a batch.
An audio-capable model is also an option when you only need an answer about a recording. That requires a supported model and access to the relevant provider-native route.
Try it step by step
Try a request
Upload your recording in the multipart form field named file. This example also requests speaker labels.
curl https://api.nativeport.ai/elevenlabs/v1/speech-to-text \ -H "Authorization: Bearer $NATIVEPORT_API_KEY" \ -F "[email protected]" \ -F "model_id=scribe_v1" \ -F "diarize=true"
{
"language_code": "en",
"language_probability": 0.98,
"text": "So the first thing we changed was the billing model.",
"words": [
{"text": "So", "start": 0.12, "end": 0.28, "speaker_id": "speaker_0"}
]
}Compare providers
Compare starting prices and the tasks each provider supports. Features and usage affect the total cost. For measured results, see the benchmarks and how we test.
| Provider | Best suited for | Starting price |
|---|---|---|
| ElevenLabs | Transcribe audio with speaker labels and word timestamps. | $0.025 per call |
| Fish Audio | Transcribe recordings with per-second billing. | metered by Fish Audio |
| OpenAI | Ask supported audio models about a recording. | metered by OpenAI |
| Serper | Search for transcription documentation and comparisons. | $0.001 per call |
| Apify | Collect source audio with an available Actor. | metered by Apify |
Build on an example
Set your NativePort API key and adapt an example to your own data. Outputs below illustrate the response format.
Estimate transcription costs for different recording lengths
A local estimate using the rates below. Check the provider pages for current prices; this script makes no API requests.# ElevenLabs is billed here as a flat approximation per call; Fish Audio
# bills per second of audio. Where the lines cross depends on your files.
FLAT_PER_CALL = 0.025 # see /providers/elevenlabs/
PER_SECOND = 0.0001 # see /providers/fishaudio/
for minutes in (0.5, 2, 10, 60):
secs = minutes * 60
flat, metered = FLAT_PER_CALL, secs * PER_SECOND
winner = "flat (ElevenLabs)" if flat < metered else "per-second (Fish Audio)"
print(f"{minutes:>5} min flat ${flat:.4f} metered ${metered:.4f} → {winner}")$ python which_asr.py
0.5 min flat $0.0250 metered $0.0030 → per-second (Fish Audio)
2 min flat $0.0250 metered $0.0120 → per-second (Fish Audio)
10 min flat $0.0250 metered $0.0600 → flat (ElevenLabs)
60 min flat $0.0250 metered $0.3600 → flat (ElevenLabs)More ways to use these APIs
Read your text aloud
Turn a transcript or generated answer into audio with Fish Audio or ElevenLabs. Send the text and choose the supported voice options. Check each provider’s billing units; generating speech and transcribing a recording use different rates.
Fish Audio · ElevenLabs · /fishaudio/v1/tts
Send audio to a multimodal model
If you only need an answer about a recording, an audio-capable model can process it directly. This example route uses OpenAI’s native API, which is enabled per account during the pilot. An account without that access receives a 404. Check the supported model and audio format before using it.
OpenAI · /openai/v1/chat/completions
Identify and label individual speakers
Request diarization with the ElevenLabs transcription call to get speaker IDs alongside the words. Group them into speaking turns for an interview or meeting transcript. The IDs distinguish voices; your app supplies names if it knows who is speaking.
ElevenLabs · /elevenlabs/v1/speech-to-text
Compare transcription options for your recordings
Try the same representative recording with ElevenLabs and Fish Audio, then compare the text, timing information, and cost. The provider catalog lists current entry prices. A web search can also help you research options outside NativePort.
Serper · /serper/search
Use it with NativePort
Try transcription providers with one NativePort key and a shared balance. Use the same account for a model that summarizes or analyzes the transcript.
Before you start
How do I include speaker labels?
In the ElevenLabs request, set diarize=true. The word list includes speaker IDs that you can group into speaking turns. These labels distinguish voices; they do not identify people by name.
Which option costs less?
Compare the flat request rate with the per-second rate multiplied by your audio duration. At the example rates, Fish Audio costs less for short clips and ElevenLabs for longer single requests. File limits or splitting a recording can change the total.
Do I need to specify the language?
The ElevenLabs example detects it and returns language_code with a confidence value. Review uncertain results against the recording, especially when audio is noisy or contains several languages.