CapiCap understands 99+ languages, the ones OpenAI's Whisper speech model knows: English, Spanish, Hindi and Arabic, but also Welsh, Swahili and Tagalog. The speech model it downloads on first launch covers all of them, and they all work offline. The full list is further down.
How it picks the language
You don't have to tell it. Before transcribing, CapiCap listens to up to three 30-second stretches of the video (the start, the middle and the end), goes with the language most of them heard, and transcribes the whole video in that language.
If you know the language, picking it yourself takes the guess out. While it transcribes, the language button under the progress bar reads Detecting language…, then Detected: and the language; tap it, pick another, and transcription starts over. Later, in the editor, tap the language button at the bottom of the caption list, pick the language and tap Re-transcribe. That rebuilds the captions from the video, so edits you made to them are lost.
The Language list shows your device's languages first, under Suggested. Its search matches a language's name in your device's language, its name in the language itself or its code, so “español” finds Spanish on a device set to English.
How accurate it is
Whisper learned each language from a different amount of recorded speech, so it does best with widely spoken languages like English, Spanish or German, and worse with languages it had little training data for. For a less common language, pick it yourself rather than relying on detection, and read the captions through before you export. Every caption can be edited.
The recording matters as much as the language. Clear speech close to the mic needs the fewest fixes; music, people talking over each other and wind cause most mistakes.
Other scripts
Arabic, Hebrew, Persian, Urdu, Pashto, Sindhi and Yiddish captions are set right to left, in the preview and the export. The Clear of buttons position, which keeps captions out from under the like and share buttons of short-video apps, moves to the other side for them.
Chinese and Japanese put no spaces between words, and Whisper hands their words over in pieces. CapiCap joins the pieces back into words with Apple's own word segmentation, so captions split between words, and lines break between phrases and where the speaker paused rather than between any two characters. When no phrase break fits, the lines are balanced.
In every language, closing punctuation never starts a caption: not 、 or 。, the Arabic question mark ؟ or the Hindi full stop ।.
In Latin, Greek and Cyrillic scripts, a word too long for its line breaks with a hyphen at that language's hyphenation points, so long German compounds and Russian words still fit. The hyphen is only drawn on the video; the caption text and the .srt keep the word whole.
What it doesn't do
It doesn't translate: the captions, and the .srt, are in the language spoken in the video. It transcribes a whole video in one language, so in a video that switches languages, the parts in the other one will need fixing by hand. And it doesn't label who is speaking.
The full list
Sorted by English name. The second column is the name in the language itself, as the app's Language list shows it under each name.
| Language | In the language |
|---|---|
| Afrikaans | Afrikaans |
| Albanian | shqip |
| Amharic | አማርኛ |
| Arabic | العربية |
| Armenian | հայերեն |
| Assamese | অসমীয়া |
| Azerbaijani | azərbaycan |
| Bashkir | башҡорт |
| Basque | euskara |
| Belarusian | беларуская |
| Bengali (Bangla) | বাংলা |
| Bosnian | bosanski |
| Breton | brezhoneg |
| Bulgarian | български |
| Burmese | မြန်မာ |
| Cantonese | 廣東話 |
| Catalan | català |
| Chinese | 中文 |
| Croatian | hrvatski |
| Czech | čeština |
| Danish | dansk |
| Dutch | Nederlands |
| English | English |
| Estonian | eesti |
| Faroese | føroyskt |
| Finnish | suomi |
| French | français |
| Galician | galego |
| Georgian | ქართული |
| German | Deutsch |
| Greek | Ελληνικά |
| Gujarati | ગુજરાતી |
| Haitian Creole | Kreyòl Ayisyen |
| Hausa | Hausa |
| Hawaiian | ʻŌlelo Hawaiʻi |
| Hebrew | עברית |
| Hindi | हिन्दी |
| Hungarian | magyar |
| Icelandic | íslenska |
| Indonesian | Indonesia |
| Italian | italiano |
| Japanese | 日本語 |
| Javanese | Jawa |
| Kannada | ಕನ್ನಡ |
| Kazakh | қазақ тілі |
| Khmer | ខ្មែរ |
| Korean | 한국어 |
| Lao | ລາວ |
| Latin | — |
| Latvian | latviešu |
| Lingala | lingála |
| Lithuanian | lietuvių |
| Luxembourgish | Lëtzebuergesch |
| Macedonian | македонски |
| Malagasy | Malagasy |
| Malay | Bahasa Melayu |
| Malayalam | മലയാളം |
| Maltese | Malti |
| Māori | Māori |
| Marathi | मराठी |
| Mongolian | монгол |
| Nepali | नेपाली |
| Norwegian | norsk |
| Norwegian Nynorsk | norsk nynorsk |
| Occitan | occitan |
| Pashto | پښتو |
| Persian | فارسی |
| Polish | polski |
| Portuguese | português |
| Punjabi | ਪੰਜਾਬੀ |
| Romanian | română |
| Russian | русский |
| Sanskrit | संस्कृत भाषा |
| Serbian | српски |
| Shona | chiShona |
| Sindhi | سنڌي |
| Sinhala | සිංහල |
| Slovak | slovenčina |
| Slovenian | slovenščina |
| Somali | Soomaali |
| Spanish | español |
| Sundanese | Basa Sunda |
| Swahili | Kiswahili |
| Swedish | svenska |
| Tagalog | Tagalog |
| Tajik | тоҷикӣ |
| Tamil | தமிழ் |
| Tatar | татар |
| Telugu | తెలుగు |
| Thai | ไทย |
| Tibetan | བོད་སྐད་ |
| Turkish | Türkçe |
| Turkmen | türkmen dili |
| Ukrainian | українська |
| Urdu | اردو |
| Uzbek | o‘zbek |
| Vietnamese | Tiếng Việt |
| Welsh | Cymraeg |
| Yiddish | ייִדיש |
| Yoruba | Èdè Yorùbá |