New · Umay V1 and SES V17 languages · 2 regions (US soon)

Our own voice models, built for live calls.

Umay listens: the caller’s words are written down as they speak, so your agent can answer the moment they stop, with no awkward silence. SES speaks: it reads addresses and amounts the way people say them. In Turkish, English, German, French, Italian, Russian and Spanish, hosted inEurope or Türkiye (US soon), or on your own servers.

mihu
Phone audio
WebSocket
Audio files
mihu-umay-v1
mihu-ses-v1
Diarization · isolation · ITN
Final text80 ms“Where is my order?” · en
Speech synthesized24 kHz“16:30” → las cuatro y media · es

7 languages, speech to text and text to speech

EnglishenEspañolesTürkçetrDeutschdeFrançaisfrItalianoitРусскийruEnglishenEspañolesTürkçetrDeutschdeFrançaisfrItalianoitРусскийru

Voice library · mihu-ses-v1

Voices that sound local

22 voices in 7 languages. Pick one and listen: every sample is mihu-ses-v1 reading the sentence shown below.

Alp

Türkçe · Male voice

Merhaba, ben Alp. Aradığınız için teşekkürler, size nasıl yardımcı olabilirim?

Press play: the sentence lights up as it is read

Two models, one API, seven languages

mihu-umay-v1 for speech-to-text and mihu-ses-v1 for text-to-speech, behind one HTTPS and WebSocket API, hosted in Europe or Türkiye (US soon), or on your own servers.

mihu-umay-v1 · Speech-to-text built for live calls

Text appears while the caller is still talking; the final sentence is ready about 80 ms after they stop, quicker than a blink, so your agent can reply without a pause. 3.42% word error rate on Turkish read speech (FLEURS). In Turkish-only mode one server takes around 400 live calls, with the same normalization and voice isolation options.

Partial“Merhaba, siparişim ne za…”tr · 0.44 s after speech starts
Final“Merhaba, siparişim ne zaman gelir?”tr · 79 ms after end of speech
S2 · female“Yarın sabah kapınızda olacak.”diarized · confidence 96%
Final“Ich habe eine Frage zur Rechnung.”de · final text
Final“¿Me puede repetir la dirección?”es · final text
Partial“Je voudrais changer la da…”fr · streaming
Partial“Merhaba, siparişim ne za…”tr · 0.44 s after speech starts
Final“Merhaba, siparişim ne zaman gelir?”tr · 79 ms after end of speech
S2 · female“Yarın sabah kapınızda olacak.”diarized · confidence 96%
Final“Ich habe eine Frage zur Rechnung.”de · final text
Final“¿Me puede repetir la dirección?”es · final text
Partial“Je voudrais changer la da…”fr · streaming
Live call16 kHz PCM, 100 ms frames, one socket.final ~80 msWER 3.42%

Inputs

WebSocket · live stream REST · audio files 8 kHz phone audio

mihu-ses-v1 · Speech that sounds local

Reads addresses, place names, amounts, dates, plates and phone numbers the way people say them, in all 7 languages. Audio streams back before the whole sentence is synthesised.

POST /v1/audio/speech
“Your order of $1,250 ships to 17 Oak St”
Audio out24 kHz PCMstreaming
English“17 Oak St, Apt 4” → seventeen Oak Street, apartment fouren
Español“16:30” → las cuatro y mediaes
Türkçe“No: 17 Daire: 4” → on yedi numara, daire dörttr
Smart reading

4.71% WER (tr)

95.6% place names right

7 languages

Who said what, live

Gender detection, speaker diarization, speaker lock and voice isolation for noisy phone lines. Each one is switched on per request; off means no extra latency.

CallLanguageSpeakerGenderFinal textStatus
S2 · female · 96%
Inbound · Turkish · 400 live calls
Final text p95< 0.35 s

Smart formatting and place names

“bin iki yüz elli lira” becomes 1.250 TL, dates and plates come out the way a CRM expects. Built-in district and neighbourhood lists plus your own hotwords lift live place-name accuracy by 3 to 8 points.

Smart formatting“bin iki yüz elli lira” → 1.250 TL · adds ~6 msitn
Place-name boostDenizli neighbourhoods · 86% → 94% · adds ~10 mshotwords
Built-in lists · 5 cities
Your own words

Adresim Yukarı Yeniköy Mahallesi, No: 17 Daire: 4. Tutar 1.250 TL.

— caller, Denizli

Built for call centres and voice agents

mihu voice

Evaluation report · November 2026

Measured on phone audio, not on demos.

Three public Turkish test sets, 500 spoken addresses and 1,273 synthesis sentences, scored the same way for every system. Lower word error rate is better.

3.42%

WER on read speech

FLEURS Turkish test set, 743 clips. Lowest in the comparison.

Fig. 2

1.68%

WER on spoken addresses

500 addresses, 8 kHz, with place hints.

Table 3

19.5×

faster than real time

Files through the Türkiye API, fast mode.

Table 3

3.38%

TTS word error rate

1,273 sentences of the open mihuai/turkish-tts-eval set.

Fig. 3

FLEURS tr_tr test · 743 clips

mihu-umay-v1

production API

3.42

openai/whisper-large-v3

multilingual, large

3.52

turkmedstt/whisper-large-v3-turkish-general

Turkish fine-tune of whisper-large-v3

3.94

balbal-v2-manas

Turkish, commercial use under conditions

4.20

openai/whisper-large-v3-turbo

multilingual, turbo

4.30

balbal-v2

Turkish, commercial use under conditions

5.41

Qwen/Qwen3-ASR-1.7B

multilingual, 1.7B

6.48

PatientDesk/Duyu-small

Turkish, small

6.72

Figure 2. Word error rate in %, lower is better, Turkish, medium scoring rule (number and format variants accepted). mihu-umay-v1 ranks first of 8 on read speech. Bars past the axis are cut and marked →.

Text-to-speech intelligibility

mihuai/turkish-tts-eval
mihu-ses-v1
3.38
Antalia-2 Mini
3.52
EMA Lightning 1.1.2
7.88
Piper
9.36
Anka TTS 0.1.6
9.79
Trendyol-TTS
11.07
FreyaTTS-small
40.84 →

Figure 3. Each system reads the same 1,273 call-centre sentences of the open mihuai/turkish-tts-eval dataset; an independent recogniser transcribes the audio. Word error rate in %, lower means the speech is easier to understand. Seven Turkish TTS systems; every chart and table is on the benchmarks page.

Table 2. Naturalness of the same text-to-speech audio. Predicted quality scores, higher is better; best in each column in bold.

SystemUTMOSv2SCOREQDNSMOS Pro
mihu-ses-v13.314.103.64
Antalia-2 Mini2.783.363.63
Trendyol-TTS2.884.253.91
EMA Lightning 1.1.22.683.543.25
Anka TTS 0.1.62.663.553.93
FreyaTTS-small2.452.573.18

mihu-ses-v1 has the highest UTMOSv2 score overall and in all 13 sentence categories of the set. The three predictors do not agree with each other and are not a substitute for a human listening test.

Two Turkish TTS test sets

call centre vs everyday speech

mihuai/turkish-tts-eval1,273 sentences · Fig. 3

Our reference set for contact-centre speech, modelled on real customer conversations: amounts, account and ID numbers, addresses, e-mail and web addresses, spelled-out names and mixed formats. Hard by design.

freyavoice/freya-tr-eval495 sentences · CC-BY-4.0

An everyday conversational set: short sentences of 3 to 13 words about daily life, questions and exclamations, with few numbers or codes. Easier, so every system scores lower here.

Word error rate on freya-tr-eval, %

EMA Lightning 1.1.2
0.99
Trendyol-TTS
1.01
Antalia-2 Mini
1.17
mihu-ses-v1
1.28
Anka TTS 0.1.6
1.33
Piper
3.26
FreyaTTS-small
12.05 →

Same scoring as Figure 3. On the conversational set the leading systems are within a fraction of a percent of each other; the call-centre set is where systems separate.

Figure 4. The call-centre set measures what a contact centre needs read correctly; the everyday set measures plain conversational speech. Lower word error rate is better.

Table 3. Live service figures, Türkiye region, 3 November 2026.

MeasurementSettingResult
File transcription speed, 743 clipsfast mode19.5× real time
File transcription speed, 743 clipsnormal mode8.5× real time
Failed, missing or empty results743 clips0
Address word error rate, 500 addresses, 8 kHzwithout → with place hints2.22 % → 1.68 %
Address sentences fully correct, 8 kHzwithout → with place hints92.6 % → 97.2 %
Neighbourhood heard right, 8 kHzwithout → with place hints95.6 % → 98.2 %

Method. Medium scoring rule throughout. Phone: a public Turkish telephone test set, used for testing only. Media: only the 502 MediaSpeech clips held out from mihu training count. Speed is end-to-end through the public API, network included. Address audio is synthetic.

Want your system in these tables?

Send us API access or the model and we will run it on the same test sets with the same scoring, show you the results first, and publish them here, whatever they are.

research@mihu.ai →

All benchmarks →

mihu voice1
mihu voice

Integrating speech‑to‑text and text‑to‑speech into a contact centre

mihu voice developers · developers.mihu.ai

Two models sit behind one API key: Umay for speech recognition and Ses for speech synthesis. Both are reached over REST and WebSocket, answer the same way in every region, and accept the official OpenAI SDKs by changing the base URL. This note shows how they fit into an existing contact centre, gives a working request for each use, lists what each interface supports and states how keys, data and voiceprints are handled.

Architecture

Clients connect directly to the region they choose; no mihu SDK is required and nothing runs on your side. Live calls stream audio over a WebSocket, files and synthesis use plain HTTPS.[1][4] Where data may not leave your network, the same service runs on your own servers.

(a) Your systems

Contact centre / IVR

live caller audio

Voice agent

final text → LLM → speech

Call recordings

archive, QA, analytics

HTTPS, WSS, Bearer key

(b) mihu voice API

Umay — speech-to-text

WS /v1/stream WS /v1/realtime POST /v1/audio/transcriptions

Ses — text-to-speech

POST /v1/audio/speech GET /v1/voices

data stays in region

(c) Where it runs

Europe

stt.eu.mihu.ai tts.eu.mihu.ai

Türkiye

stt.tr.mihu.ai tts.tr.mihu.ai

Your servers

on-prem Docker on CPU, offline

Figure 1. Deployment overview. Clients reach both models over HTTPS and WebSocket with one API key; each request is served, and its data kept, in the region whose host it calls.

Integration

Each listing below runs as printed once KEY is set. Choosing a region changes only the host.[2][3][5]

|
Region
WS /v1/stream · python
1import asyncio, json, websockets23URL = "wss://stt.eu.mihu.ai/v1/stream?model=umay-stream&language=tr&api_key=KEY"45async def transcribe(chunks):        # 100 ms of 16 kHz mono int16 PCM6    async with websockets.connect(URL, max_size=None) as ws:7        async def read():8            async for m in ws:9                d = json.loads(m)10                if d["type"] == "final":11                    print(d["text"])  # send this to your LLM12        reader = asyncio.create_task(read())13        for chunk in chunks:14            await ws.send(chunk)15        await ws.send(json.dumps({"event": "end"}))16        await reader

Server events

{"type":"partial","text":"adresiniz şirin","segment":0}
{"type":"final","text":"Adresiniz Şirinyer Mahallesi.","segment":0,"start":0.4,"end":3.1}
{"type":"speaker","speaker":"S1","gender":"female","percent":97}
{"type":"usage","audio_seconds":42.1}

Parameters

language, normalize, hints, gender_detection, diarize, speaker_lock, voice_isolation

Listing 1. Speech-to-text, live calls (WebSocket, 16 kHz PCM). Host stt.eu.mihu.ai; full guide at developers.mihu.ai/stt/native-api.

Technical specification

Table 1. Interfaces and capabilities of the two models.

Speech-to-text (Umay)Text-to-speech (Ses)
Modelmihu-umay-v1: umay for files, umay-stream livemihu-ses-v1
InterfacesREST; WebSocket (native); WebSocket (OpenAI Realtime)REST, streamed while generated; server-sent events
AudioFiles in any common format, resampled to 16 kHz. Live: 16 kHz mono 16-bit PCM in 100 ms frames24 kHz mono; pcm (default), wav, mp3, opus, aac, flac
Languagestr, en, de, fr, it, ru, estr, en, de, fr, it, ru, es
SDK compatibilityOfficial OpenAI SDKs, by changing base_urlOfficial OpenAI SDKs, by changing base_url
Text handlingAmounts and dates written as numbers; Turkish dialect and place-name correction; phrase hintsNumbers, dates and abbreviations read out; optional Turkish generate-and-verify; Russian stress
Speakers, voicesDiarization, gender detection, speaker lock, consented voiceprints, signed verification22 built-in voices; custom voices from a recording
Long jobs, controlAsynchronous transcription with webhook_url; audio isolation jobsClosing the connection stops synthesis (barge-in)
Back-pressureWebSocket close 1013 at the live-call limit; retry after ~1 s503 while all workers are busy; retry

Sources: [2], [3], [5], [6].

Security and governance

4.1Authentication. One API key per customer, sent as Authorization: Bearer <KEY>, or as ?api_key= for browser WebSockets. A missing or wrong key answers 401.[1]

4.2Data residency. The region is chosen per request: Europe or Türkiye. Both have the same paths, fields and answers, and audio and transcripts stay on the server of the region called.[1] The Türkiye region keeps data in the country (KVKK).

4.3Consent and verification. A voiceprint is stored only with the person’s consent and can be deleted for good. Verification results are signed; the public key is published at /v1/voiceprints/jwks.[1]

4.4Own infrastructure. Delivered as containerised Docker services on customer-managed infrastructure and deployed on Kubernetes with Rancher or Helm. Runs on standard CPU servers: no GPU and no internet connection needed.

References

  1. [1]Umay speech recognition — Introduction. developers.mihu.ai/stt/introduction
  2. [2]Umay — Native API (files and live audio). developers.mihu.ai/stt/native-api
  3. [3]Umay — OpenAI-compatible API. developers.mihu.ai/stt/openai
  4. [4]Ses text to speech — Introduction. developers.mihu.ai/tts/introduction
  5. [5]Ses — Text to speech, streaming and errors. developers.mihu.ai/tts/speech
  6. [6]Ses — Voices. developers.mihu.ai/tts/voices
mihu voice2
mihu voice

The console

Everything the API does, in the browser: try voices, transcribe, clone, manage keys. And you decide how long anything stays.

Voices

The built-in voices and your own. Listen to any of them before you use it.

Text to Speech

Type, pick a voice and hear it start in about 0.1 s. Download as mp3, wav, flac and more.

Speech to Text

Upload a file or a link, record, or go live and watch the words appear as you speak.

Voice Isolator

Remove background voices and noise from a recording; compare before and after.

Clone Voice

A voice from 10–30 seconds of speech, with a reading check and the speaker’s consent.

API keys and usage

Keys for your servers, quick-start code per region, and what you have spent.

Table 5. Data retention in the console: you choose, in Console → Settings.

Show once1 daydefault1 week14 days1 month3 months6 months3 years
What is kept
Only the transcripts you make in the console, in your account, in the region you use (Europe or Türkiye).
For how long
The period you choose in Console → Settings. 1 day unless you change it.
Then
Deleted from our servers and from our logs. Transcripts are never written to logs in the first place.
Delete now
Any transcript, or all of them, at any time. It is gone from the servers and logs at once.
Show once
Nothing is written anywhere: you see the transcript, and a refresh clears it.
Audio
Never stored. Recordings, generated speech and isolated audio are there to play and download right away.

The API is separate: audio and transcripts you send to it directly are processed and returned, not kept (see the next page).

mihu voice2
mihu voice

Data protection: KVKK and GDPR

Audio and transcripts sent to the API are processed and returned, not kept. In the console you decide how long your transcripts stay, from not at all to 3 years. Below is everything that is stored, why, and for how long.

Table 6. Not stored.

DataWhat happens to it
AudioLive streams are processed in memory and never written to disk. A file you send is held only while it is transcribed (large files and file_url downloads in a temporary file deleted right after); for webhook_url jobs see Table 7.
TranscriptsReturned to you; not stored and not logged. The one exception is the result of a webhook_url job (Table 7).
Webhook addresses and secretsYour webhook_url, file_url and webhook_secret are never logged; the logs only note that a webhook was used.
Voice recordings for voiceprintsNever stored, in any mode. Only the numeric signature is kept, and only if you ask for it.
Recordings for custom voicesDecoded, trimmed and used to build the voice, then discarded. Only the voice itself and its details are kept (Table 7).
Audio in the consoleRecordings, generated speech and isolated audio are there to play and download right away; none of it is saved.

Table 7. Stored, and for how long.

DataWhen and whatKept
Usage recordsAccount, model, language, seconds of audio and time, for billing. No audio, no text.for billing
Audio of a webhook jobOnly for files sent with webhook_url: the audio waits on disk in the job queue and is deleted as soon as recognition ends.until transcribed
Result of a webhook jobSent to your webhook_url (signed with HMAC-SHA256 when you give a webhook_secret; retried after 1 s, 10 s, 1 min, 5 min and 30 min if your server does not answer) and readable only by your account. Then deleted. If delivery is still being retried, it stays at most one more hour.1 hour after completion
VoiceprintsOnly when you create one, with the person’s consent. Kept under your account (up to 1,000), or with store=false returned to you as an encrypted token so we keep nothing.until you delete it
Custom voicesThe voice state and its details (name, language, gender, consent record, quality numbers), under your account only. DELETE removes them for good.until you delete it
Console transcriptsOnly transcripts you make in the console, kept in your account so you can open and download them later. You choose how long in Console → Settings: show once (never saved), 1 day (the default), 1 week, 14 days, 1 month, 3 months, 6 months or 3 years. When the period ends, or when you delete them, they are removed from our servers and logs. Transcripts are never written to logs.1 day by default

Data residency. Each request is processed in the region you call, Europe or Türkiye, and its data stays there. The Türkiye region keeps data in the country, in line with KVKK.

Voiceprints are biometric data. Under KVKK and GDPR they need the person’s explicit consent: your privacy notice and consent text must cover this purpose. Every voiceprint can be deleted for good with DELETE /v1/voiceprints/{id}.

Gender detection is personal data processing. If you switch on gender_detection, your privacy notice must cover it and, where required, the caller must consent. It is off unless you request it.

API or console. Requests you send to the API keep nothing beyond Table 7. The console keeps only your transcripts, for the period you set (1 day unless you change it, or not at all with show once), then deletes them from our servers and logs. It never keeps the audio.

Nothing on your side to switch off. If you never create a voiceprint and never send a webhook_url, only the usage record is kept.

Your own servers. On-prem deployments run on your infrastructure without an internet connection, so no data reaches mihu at all.

mihu voice3
mihu voice

Pricing

List prices in euros. You pay for the audio you send and the characters you synthesise; options are billed separately, only when you use them.

Speech-to-text

mihu-umay-v1

€0.09

per hour of audio

€0.0015 per minute of audio.

Text-to-speech

mihu-ses-v1

€10.00

per million characters

€0.01 per thousand characters.

Table 8. Speech-to-text options and voice endpoints, billed on top only when used. Files and live streams cost the same.

OptionPriceUnit
Voice isolation€0.01per conversation
Speaker diarization€0.01per conversation
Speaker lock€0.01per conversation
Gender detection€0.01per conversation
Voiceprints€0.01per request
Speaker verification€0.01per request

Table 9. What typical workloads cost at list price.

WorkloadVolumeCost
Transcribe 10,000 calls of 3 minutes500 hours of audio€45.00
Speak 10,000 replies of 200 characters2 million characters€20.00
Transcribe 1,000 hours of recordings1,000 hours of audio€90.00
10,000 calls of 3 minutes with speaker diarization500 hours + 10,000 conversations€145.00
10,000 calls of 3 minutes with voice isolation, diarization, speaker lock and gender detection500 hours + 4 options × 10,000 conversations€445.00

Running on-prem or at higher volume? Talk to us.

mihu voice4

Frequently asked questions

Your data

Through the API: no audio and no transcripts. They are processed in memory and returned to you. We keep usage records for billing (no audio or text), for asynchronous jobs sent with a webhook_url the audio until it is transcribed and the result for 1 hour after it is done, voiceprints only if you create them, with the person’s consent (with store=false even those stay on your side), and custom voices until you delete them (never the recording they were made from).

Only for as long as you choose. Transcripts you make in the console are kept in your account so you can open and download them later: 1 day by default, or 1 week, 14 days, 1 month, 3 months, 6 months or 3 years, set in Console → Settings. When the period ends, or when you delete them, they are removed from our servers and logs; transcripts are never written to logs. Choose show once and nothing is saved: a refresh clears it. You can delete any transcript, or all of them, at any time. Audio is never kept in the console; download what you need right away.

No. Your audio, transcripts and text are not used to train or improve our models.

Yes. Telling whether a caller is male or female from their voice is processing of personal data. If you switch on gender_detection, your KVKK / GDPR privacy notice must cover it, and you should ask for the caller’s consent where it is required. Gender detection is off unless you request it.

Models & languages

Both speech-to-text and text-to-speech: Turkish, English, German, French, Italian, Russian and Spanish. Pass the language per request.

No. On-prem runs on standard CPU servers. It ships as containerised Docker services on customer-managed infrastructure and is deployed on Kubernetes with Rancher or Helm. No GPU and no internet connection needed.

Yes. Deploy mihu-umay-v1 with just the Turkish language set and the same server takes far more calls. Every per-request option stays available: smart formatting (ITN), voice isolation, hotwords, speaker diarization and gender detection.

Text appears while the caller is still talking. The first partial text arrives about 0.44 s after speech starts and the final sentence about 80 ms after the caller stops, measured from a client in Turkey. In practice the caller hears no gap: your agent can start its answer as soon as they finish.

Features

No. Gender arrives about 2 s after the caller starts speaking and diarization labels speakers live, both without delaying the text. Every feature is switched on per request; off means no extra latency.

Spoken numbers, amounts, dates, times, phone numbers, plates and addresses are written the way a CRM expects: “one thousand two hundred fifty dollars” becomes $1,250 and “seventeen Oak Street apartment four” becomes 17 Oak St, Apt 4. It adds about 6 ms.

In all 7 languages numbers, currencies, dates, times and addresses are read as natural speech automatically. Long compound village names are split for clear pronunciation, and neighbourhood names are heard correctly 95.6% of the time on our 500-address test at telephone bandwidth, 98.2% with place hints.

Deployment & privacy

In the region you choose: Europe or Türkiye, with the United States coming soon. Audio and transcripts stay on the server of the region you call. The Türkiye region keeps data in the country in line with KVKK.

Start building with mihu voice