Chirp 3 vs Fun-ASR Flash
Which one, when — curated verdict, not a benchmark table
Both bill per audio minute and fun-asr-flash is 7.6x cheaper, $0.0021 against $0.016 — but it is the narrower tool: synchronous recognition only, up to 5 minutes or 2GB per file, 30+ languages, no diarization. chirp-3 covers 29 GA plus 82 preview locales, runs batch jobs up to an hour and real-time streams, and diarizes in 14 languages. Pick fun-asr-flash for short clips at volume; pick chirp-3 when you need diarization, long files or the wider locale list.
Pricing
| Chirp 3 | Fun-ASR Flash | Δ | |
|---|---|---|---|
| Per audio minute | $0.016 | $0.0021 | 7.6× |
Rates from the live catalog at build time; each model page carries the current card.
Where they sit — price per audio minute across all 11 speech-to-text models on this billing unit (log scale)
Capabilities
| Chirp 3 | Fun-ASR Flash | |
|---|---|---|
| Speaker diarization | yes | no |
| Streaming | yes | yes |
| Timestamps | yes | — |
Specs
| Chirp 3 | Fun-ASR Flash | |
|---|---|---|
| Input modalities | audio | audio |
| Output modalities | text | text |
| Released | 2025-10-13 | 2026-06 |
| Limits | Auto-detected audio decoding sync Recognize <1 min, BatchRecognize 1 min–1 hr (<=20 min with word timestamps), StreamingRecognize for real-time speaker diarization in BatchRecognize and Recognize (14 languages) utterance-level timestamps (StreamingRecognize only), word-level timestamps listed as unsupported language-agnostic transcription 29 GA + 82 preview locales | Synchronous fast recognition, <=5 min / <=2GB per audio context injection for domain terms 30+ languages no diarization |
| Languages | 29 GA + 82 Preview locales (111 total) across StreamingRecognize, Recognize and BatchRecognize diarization covers 14 of them | Multilingual with dialects, the same 30-language list as the Fun-ASR main versions: Chinese (Mandarin, Cantonese, Wu, Hokkien, Hakka, Gan, Xiang, Jin plus regional accents), English, Japanese, Korean, Vietnamese, Thai, Indonesian, Malay, Filipino, Hindi, Arabic, French, German, Spanish, Portuguese, Russian, Italian, Dutch, Swedish, Danish, Finnish, Norwegian, Greek, Polish, Czech, Hungarian, Romanian, Bulgarian, Croatian, Slovak |
Specs are transcribed from each vendor’s documentation; a row a vendor does not publish is left out rather than inferred. Full sources: Chirp 3 · Fun-ASR Flash
Switch between them with one line
Both ids are in every tab below — the highlighted pair of lines is the only edit. Same endpoint, same key, same request shape.
from openai import OpenAI
client = OpenAI(
base_url="https://synthorai.io/v1",
api_key="sk-syn-...",
)
resp = client.audio.transcriptions.create(
model="chirp-3",
# model="fun-asr-flash", # uncomment this line, comment the one above
file=open("meeting.mp3", "rb"),
language="en",
)
print(resp.text)import OpenAI from "openai";
import fs from "node:fs";
const client = new OpenAI({
baseURL: "https://synthorai.io/v1",
apiKey: "sk-syn-...",
});
const resp = await client.audio.transcriptions.create({
model: "chirp-3",
// model: "fun-asr-flash", // uncomment this line, comment the one above
file: fs.createReadStream("meeting.mp3"),
});
console.log(resp.text);curl https://synthorai.io/v1/audio/transcriptions \
-H "Authorization: Bearer sk-syn-..." \
-F model="chirp-3" \
# -F model="fun-asr-flash" \ # uncomment this line, comment the one above
-F file=@meeting.mp3package main
import (
"context"
"fmt"
"os"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
)
func main() {
client := openai.NewClient(
option.WithBaseURL("https://synthorai.io/v1"),
option.WithAPIKey("sk-syn-..."),
)
f, _ := os.Open("meeting.mp3")
resp, _ := client.Audio.Transcriptions.New(context.TODO(), openai.AudioTranscriptionNewParams{
Model: "chirp-3",
// Model: "fun-asr-flash", // uncomment this line, comment the one above
File: f,
})
fmt.Println(resp.Text)
}import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.audio.transcriptions.*;
import java.nio.file.Paths;
OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl("https://synthorai.io/v1")
.apiKey("sk-syn-...")
.build();
Transcription resp = client.audio().transcriptions().create(
TranscriptionCreateParams.builder()
.model("chirp-3")
// .model("fun-asr-flash") // uncomment this line, comment the one above
.file(Paths.get("meeting.mp3"))
.build()).asTranscription();
System.out.println(resp.text());FAQ
Which is cheaper, Chirp 3 or Fun-ASR Flash?
Fun-ASR Flash is cheaper on per audio minute ($0.0021 vs $0.016, 7.6× apart). Other rows may point the other way — the table above carries the full card, and real cost depends on your mix.
Can I A/B test Chirp 3 against Fun-ASR Flash without two integrations?
Yes. Both are served through the same OpenAI-compatible endpoint with one API key — switching is a one-line model-string change, so you can route a fraction of traffic to each and compare bills directly.
Do Chirp 3 and Fun-ASR Flash support speaker diarization?
The capability table above answers this per model, straight from each vendor’s documentation — diarization, streaming and timestamps are listed separately because models differ on all three.