Building a transcription tool for Malay and English conversations
Offline Transcriber brings recording, local transcription and transcript review into one app. It is a personal project for audio that can mix Malay and English; its output still needs checking against the recording.
Baca artikel ini dalam Bahasa MelayuWhy I built it
A meeting might start in Malay, then switch to English for a work discussion or a particular term. When you need to look something up afterwards, an audio recording on its own is not always easy to search through.
Offline Transcriber is one of my personal projects. It brings recording, transcription and text review into a single app, including for audio that mixes Malay and English.
Record, transcribe and check the audio
Users can record through a microphone or upload an existing file. Once the audio is processed, they can review the transcript with timestamps. If a sentence looks odd, they can find that part of the recording and listen again.
The stack and speaker labels
I built the app with Python and Flask, using faster-whisper for local transcription. It also has speaker separation so a conversation can be divided by who is speaking. Speaker labels can be changed during review.
Speaker separation does not mean the system knows the identities of the people in the recording. Users still need to check the labels and enter the correct names. Overlapping voices and unclear recordings also need extra attention.
Local processing and the cloud option
Local processing is the default in this app. The models need to be set up first; after that, local transcription can run without an internet connection. Performance depends on the computer and the model, so I do not promise the same processing time for everyone.
There is also a cloud-provider option. If a user chooses it, processing involves an online service. Local and cloud processing need to be clearly distinguished, especially when a recording contains information that should not be sent to another party.
Search, exports and unfinished work
Besides producing text, I added transcript search, speaker-label editing and exports to TXT, SRT and JSON. The formats serve different purposes: reading the text, creating subtitles or using the results in another application.
I also paid attention to what happens while a job is running. Users can see progress, cancel a job and try again without losing media they have already recorded.
What still needs a human check
The transcript still needs to be checked. Names, abbreviations and work-specific terms can be transcribed incorrectly. I treat the text as something to review alongside the recording, rather than a record to trust without reading it.
The portfolio screenshot uses a made-up demo conversation to show the review workflow. It is not a client meeting recording or evidence of model accuracy. I present this as a personal project, not a system commissioned by a company.
The Offline Transcriber page in my portfolio has a screenshot and more information about the app and the features I built.
I'm Hakimi Sa’ari, a freelance developer from Selangor, Malaysia. If you have a transcription tool, AI application or automation project in mind, you can see my work at hakimisaari.site.