Transcribing a recording that mixes Arabic and English: what we measured
What our engine does with a recording that changes between Arabic and English: the language setting decides, auto-detect follows the start. Measured.
The Scriptorium team ·
Set the language to the one the recording starts in or mostly uses, and split the file where the language changes if you can. In our test the language setting, not the audio, decided what every word was written in: with English set, Arabic speech came back as an English translation (12 of 12 sentences, no Arabic words), and with auto-detect on a file that began in English the Arabic half was translated the same way. With Arabic set or detected, the English half stayed in English letters, and what went wrong was concentrated around the point where the language changed.
What we ran
Two openly licensed clips, joined. The Arabic is the twelve read sentences of our home-page sample (28 seconds, one volunteer speaker, Mozilla Common Voice 22.0, CC0). The English is the home-page English sample (25 seconds, a synthetic voice, Piper en_US-ljspeech-medium, trained on the public-domain LJ Speech data). We joined them with 0.6 seconds of silence, once Arabic first and once English first, so each file is 53 seconds and changes language exactly once. Each file went through the engine's own call with the small model (the one the free preview and regular accounts use) under three language settings. Dated 2026-10-27; error rates are from the same code as the WER calculator, against the sentences the speaker was asked to read.
This is not a person mixing two languages inside a sentence, which is what most real code-switching sounds like. It is the other case, a recording that changes language at one point, such as a meeting that starts in English and moves to Arabic. We did not find an openly licensed recording of natural Arabic and English speech to use, and we did not invent one.
What came back
| File | Language setting | Language the engine used | The Arabic half came back as | The English half came back as |
|---|---|---|---|---|
| Arabic, then English | Auto-detect | AR (detected, confidence 0.59) | Arabic script, word error rate 22.4% | English letters; 5 of 63 English words missing or different from the English clip alone (7.9%), and 1 Arabic-script word |
| Arabic, then English | Arabic | AR (set by you) | Arabic script, word error rate 22.4% | English letters; 5 of 63 English words missing or different from the English clip alone (7.9%), and 1 Arabic-script word |
| Arabic, then English | English | EN (set by you) | 12 of 12 sentences in English letters: a translation, 0 Arabic words | English letters, the same words as the English clip alone |
| English, then Arabic | Auto-detect | EN (detected, confidence 0.52) | 12 of 12 sentences in English letters: a translation, 0 Arabic words | English letters, the same words as the English clip alone |
| English, then Arabic | Arabic | AR (set by you) | Arabic script, word error rate 36.7%; only 10 of 12 lines, the first 2 sentences are missing | English letters; 1 of 63 English words missing or different from the English clip alone (1.6%), and 1 Arabic-script word |
| English, then Arabic | English | EN (set by you) | 12 of 12 sentences in English letters: a translation, 0 Arabic words | English letters, the same words as the English clip alone |
For reference, the Arabic clip on its own with the language set to Arabic scores 22.4% (the figure on our Arabic sample page), and the English clip on its own is the baseline for the English half. Set to English, the Arabic clip alone also came back as 12 English sentences. Set to Arabic, the English clip alone came back in English letters with 1 word replaced by an Arabic one.
Three things to take from it
- An English setting translates Arabic speech. It does not transliterate and it does not leave Arabic alone: it writes English, and the English can change the meaning. The Arabic sentence that means "travelling by ship is enjoyable" came back as "Traveling by shipments is very difficult." in one of the runs. If Arabic speech comes back as English, the language setting was English, whether you set it or auto-detect chose it.
- Auto-detect follows the start of the file. It chose Arabic when the file began in Arabic and English when it began in English, and in the second case the Arabic half was lost to translation. The engine reported a confidence of only 0.59 for the first file and 0.52 for the second.
- An Arabic setting kept the English, but the change point suffers. In the file that began in Arabic, "Good morning everyone, let's start" came back as the single Arabic word لنبدأ (5 of 63 English words missing). In the file that began in English, the first 2 Arabic sentences (about five seconds) were missing and the Arabic error rate rose from 22.4% to 36.7%.
What to do
- Split at the change and transcribe each part with its own language. The two clips on their own are the proof that this works: the Arabic part scores 22.4%, and the English part is complete. Any audio editor can cut the file; cut a few seconds either side of the switch so no sentence is clipped.
- If you cannot split, set the language to the one that carries most of the recording, and proof-read the stretch around each switch against the audio.
- Read the first lines before you trust the rest. Arabic speech that comes back as English means the setting was wrong; start again with Arabic selected.
- For single English terms inside Arabic sentences ("pull request", a product name) this test does not apply. The nearest evidence we have is the Hindi test, where vocabulary hints written in the output script helped and the same words in Latin letters made things worse; see Hinglish transcription, measured. Try hints on a short piece of your own recording first.
- Everything is a draft. Check names, numbers and quotes against the audio, as for any transcript.
What this test cannot tell you
- It is two short read or synthetic clips, joined. Real meetings have overlapping speech, noise, dialect and mixing inside sentences.
- The result is for the small model, one run per setting, on one machine. A larger model, a different version or different settings can behave differently.
- The raw output of every run is one JSON file: code-switching.json (CC BY 4.0).