Back to deblo
deblo

A GO on the Founder's Own Voice: How We Decided Déblo Duo Was Ready for a Beta

We tested Déblo Duo's translation engine on clips the CEO recorded himself. Amounts were 94% correct in the input transcript and 82% in the spoken translation. That gap decided where on-screen numbers come from.

Juste Thales Gnimavo & Claude | November 6, 2026 9 min deblo
EN/ FR/ ES
deblodeblo-duoreal-time-translationspeech-translationinterpretervoice-aigo-no-gonumbers-in-translationaccentcode-switchingbetaproduct-decisionclaude-codeclaude-opus-5.5

By Juste Thales Gnimavo (CEO, ZeroSuite) and Claude Opus 5.5 (Claude Code)

Before we wrote a line of the Déblo Duo app, we owed ourselves one answer: is the engine good enough to put in front of a real user? Not good enough in a vendor demo. Good enough on the voices we would actually have in the room. On October 21, 2026, we gave that answer a GO for a Beta, and the reasons it was a GO with conditions are what this post is about.

Déblo Duo is a real-time interpreter. Each person speaks their own language and hears the other in theirs, live. You can share one phone, use two phones joined by a QR code, call someone remotely through a link, or present to a room. The context for why it is a separate app is in Why Déblo Duo exists. The engine underneath is Google's real-time speech translation model, carried by our real-time audio layer.

The test set we could actually build

The plan called for a small set of clips: a team meeting, a stretch dense with amounts, a conversation that switches between French and English, a noisy room. The plan also assumed we would find a native English speaker for the English side.

We did not find one. So Juste recorded the clips himself. The French is his. The English lines in the mixed-language clip are his too, spoken with the accent of someone who learned English after French. He gave one more instruction: "Ne fais pas trop attention aux détails." The module would ship as a Beta, labelled as such in the app, and we were not going to polish a benchmark for a week.

That instruction had a cost we wrote down. Our alignment tool, which splits a recording into utterances by energy, cut sentences at every reading pause: 27 segments for 14 utterances on the first clip. Per-utterance metrics such as end latency or misses became unreliable, because each number was attributed to the wrong sentence. We did not fix the boundaries by hand. We read the full transcripts instead, line by line, against what Juste had said. The noisy-room clip was dropped for this phase, since it depended on the aligned mixed-language clip as ground truth.

Three clips went through the engine on October 21, between 12:48 and 12:55 UTC: 142 seconds, 114 seconds and 70 seconds. Zero connection errors.

Clip 1: a team meeting in Ivorian French

The first clip was a 142-second team meeting in Ivorian French. The English translation was complete and faithful from start to finish. Every number came through: 1,200, 1,500 CFA francs, 300 students, 600,000, 2 million, 40 minutes, 80,000 views, 2 minutes.

The latency was what we wanted to see. At the median, the translated audio started about 1.7 seconds before the speaker had finished the sentence. That is the property that makes Duo feel like an interpreter and not like a translation app: nobody waits for a full stop.

No misfires.

Clip 5: the numbers

The 70-second clip was built to hurt. It held 17 items that were amounts, percentages, dates or a word we had seen fail before. We scored each one twice: once in the input transcript (what the engine heard in French) and once in the spoken translation (what the listener heard in English).

Input transcript: 16 out of 17 correct. That is 94%.

Spoken translation: 14 out of 17 correct. That is 82%.

The three errors in the translation are the whole story:

  • 3,712,500 CFA francs was heard correctly and spoken as "3 million 712,000". Five hundred francs disappeared.
  • 1,850 USD was heard as "1850 dollars" and spoken as "1,800 dollars". Fifty dollars disappeared.
  • 419,812 CFA francs was heard as "419 800 12" and spoken the same way. That one failed at the input, and the translation faithfully repeated the broken split.

Two of the three are not hearing errors. The engine understood the number and rounded it on the way out. In a casual chat that is noise. In a negotiation between a buyer and a supplier, it is a different price.

A few other observations from the same clip. 640 euros came out as "6 40 euros": readable, but ambiguous. "Livraison", which our earlier synthetic-voice runs had missed all three times, passed on Juste's real voice. "Bouaké" was heard as "bois". The city name was lost.

The product rule that came out of it

The gap between 94% and 82% turned into a rule we have not relaxed since: the numbers shown on screen come from the input transcript, never from the translation.

The spoken translation stays as it is. We cannot make the voice stop rounding, and we do not pretend the voice is a reference. What we can control is what the user reads. When an amount, a percentage or a date appears in the conversation, Duo highlights it from what the speaker actually said, in the speaker's language. If the listener hears "1,800 dollars" and the screen says 1,850, the screen is the one to trust.

This was implemented the same day, for French, English and Chinese. It is also why the public description of Duo promises "a report with the numbers copied exactly". The promise is narrow on purpose. Copied from the source, not translated.

The next session, which wired the engine into our call bridge and replayed the recordings through it, confirmed that the rule was not optional. Input transcripts of amounts were still fragile there, with splits like "1 million 10 10000". Our conclusion in the log was blunt: highlight from the input, and never present the translation as a numeric truth.

The rule has one known side effect. Phone numbers are highlighted as if they were amounts. That is on the list, and it is a better failure than a wrong price.

Clip 3: one microphone, two languages, one accent

The mixed-language clip was 114 seconds of Juste alone, switching between French and English. The meaning crossed in both directions: a 25,000-dollar budget, 15 million, 10,000 euros, 33%, March, January in Accra.

But there were seven misfires. When the engine heard English spoken with a French accent on a single microphone, the session meant to produce English sometimes repeated the English instead of staying silent. "Yes, that works for me" and "15 million, right?" came back as echoes of themselves. Some English lines were also lost on the French side.

This is a structural risk of the one-phone mode, where both people share a single microphone and the system has to decide, for every sentence, which language it is hearing. Remote mode does not have the problem. Each person has their own microphone and the source language of every stream is known in advance. There is nothing to guess.

The bridge runs in that next session made it plainer. On fast exchanges in one-phone mode, each translation session transcribed both languages into the same segment, which duplicated source lines. The audio was protected; the transcript was not presentable.

So we made a decision about the demo before we made one about the product: the investor demo runs in remote mode. One-phone mode stays in the app. It is what you use in a taxi or at a hotel desk, and it has since been reworked around push-to-talk. But we were not going to show investors the mode that misfires on its founder's accent.

The verdict

The GO had four lines.

  • Latency: held. Translation starts before the sentence ends.
  • Fidelity: good on continuous speech. Amounts 82% correct in the spoken translation, 94% in the input transcript. Hence the on-screen rule.
  • Routing: reliable in remote mode, fragile in one-phone mode with an accent. The demo is in remote mode.
  • Acoustic loop: not proven. What happens when a phone's speaker plays the translation into its own microphone could not be tested on clips. It became the first acceptance criterion of the next phase.

Two items stayed explicitly open that day: the speakerphone echo test on real Android and iPhone devices, which needed the call bridge we had not built yet, and the real cost per minute, which needed a reading of the billing console.

That afternoon, the bridge, the backend and the web host and guest pages were built. At 16:52 UTC the first real call ran: Juste on a laptop in French, a guest on a phone in English, same room. His verdict: "ça marche cinq sur cinq." The translation kept up even when he slowed down. The same call also showed us the next problem. The guest's phone microphone picked up Juste's French voice directly, and the first line attributed to the guest was French. A browser's echo cancellation only removes what its own device plays. It does nothing about a voice in the room or another device's speaker. That would come back.

What it changed, and what is still open

A test on the founder's own voice is not a benchmark. It has one speaker, one accent, no native English, and three clips. We knew that when we signed the GO, and we signed it anyway, because it answered the question we actually had: will this hold up on the voices we will have at the first demo? It did, with two exceptions we could name precisely.

The exceptions shaped the product more than the successes did. Numbers on screen come from the source. The demo runs in the mode where each person has their own microphone. Neither decision would have come from a vendor's sample audio, which is spoken by native speakers in quiet rooms and never says 3,712,500.

Still open: a proper test with a real Chinese speaker before filming the French to Chinese pair, since a synthetic voice had already made one amount fail; the noisy-room clip; and a test with a native English speaker, which we still owe ourselves.

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles