<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Yahya Saleh</title>
    <description>The latest articles on Forem by Yahya Saleh (@yahya_saleh_d157cf3d7fe2e).</description>
    <link>https://forem.com/yahya_saleh_d157cf3d7fe2e</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3939997%2Ff9107d5b-36b9-47f4-b98f-6cc30eb8d2d9.jpg</url>
      <title>Forem: Yahya Saleh</title>
      <link>https://forem.com/yahya_saleh_d157cf3d7fe2e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/yahya_saleh_d157cf3d7fe2e"/>
    <language>en</language>
    <item>
      <title>Using an LLM to automate a task that used to take hours by hand</title>
      <dc:creator>Yahya Saleh</dc:creator>
      <pubDate>Sat, 23 May 2026 15:15:00 +0000</pubDate>
      <link>https://forem.com/yahya_saleh_d157cf3d7fe2e/using-an-llm-to-automate-a-task-that-used-to-take-hours-by-hand-16c2</link>
      <guid>https://forem.com/yahya_saleh_d157cf3d7fe2e/using-an-llm-to-automate-a-task-that-used-to-take-hours-by-hand-16c2</guid>
      <description>&lt;p&gt;I want to share a concrete example of using an LLM to automate a manual process in my workflow. Not chatbot stuff. An actual pipeline step that used to require a human sitting with two audio tracks for hours.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;I build live speech-to-speech translation. To measure latency, I need to know which phrase in the source audio corresponds to which phrase in the translated audio, so I can measure the time gap between them. This alignment used to be done by hand. A person listens to both tracks, matches up the phrases, and logs timestamps. For a 6-minute session that's easily an afternoon of work.&lt;/p&gt;

&lt;p&gt;The hard part isn't the math. It's the alignment. Languages reorder things. German puts verbs at the end. Arabic restructures sentences. A Spanish phrase at position 3 might map to an English phrase at position 7.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the LLM fits in
&lt;/h2&gt;

&lt;p&gt;This is exactly the kind of thing LLMs are good at. They understand semantic equivalence across languages and handle reordering naturally. So I replaced the manual step with an LLM call:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Force-align both audio tracks to get per-word timestamps (automated, no LLM needed)&lt;/li&gt;
&lt;li&gt;Number every word in both transcripts and send them to the LLM&lt;/li&gt;
&lt;li&gt;LLM returns matched phrase pairs with word indices&lt;/li&gt;
&lt;li&gt;Compute the time gap for each pair using the timestamps from step 1&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What used to take hours now takes a couple of minutes. No human in the loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  The general pattern
&lt;/h2&gt;

&lt;p&gt;The reason I'm sharing this is that the pattern generalizes. If you have a workflow step where a human reads two things and figures out how they correspond, an LLM can probably do it. The key is that I'm not asking it for a judgment call or creative output. I'm asking it to do structured alignment, a well-constrained task where it's reliable.&lt;/p&gt;

&lt;p&gt;The LLM only handles the one step that actually needs language understanding. Everything else (force alignment, timestamp extraction, aggregation) is regular code.&lt;/p&gt;

&lt;p&gt;Full methodology: &lt;a href="https://voicefrom.ai/blog/automating-ear-voice-span/" rel="noopener noreferrer"&gt;Automating ear-voice span&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code: &lt;a href="https://github.com/VoiceFrom/live-s2st-eval" rel="noopener noreferrer"&gt;VoiceFrom/live-s2st-eval&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>ai</category>
      <category>opensource</category>
      <category>automation</category>
    </item>
    <item>
      <title>How I use an LLM as a translation judge</title>
      <dc:creator>Yahya Saleh</dc:creator>
      <pubDate>Fri, 22 May 2026 14:53:00 +0000</pubDate>
      <link>https://forem.com/yahya_saleh_d157cf3d7fe2e/how-i-use-an-llm-as-a-translation-judge-42na</link>
      <guid>https://forem.com/yahya_saleh_d157cf3d7fe2e/how-i-use-an-llm-as-a-translation-judge-42na</guid>
      <description>&lt;p&gt;I use GEMBA-MQM v2 to evaluate translation quality in my live speech-to-speech translation pipeline. MQM (Multidimensional Quality Metrics) is an open industry standard for grading translations. Instead of a single score, it classifies every error by type (mistranslation, omission, hallucination, grammar, etc.) and severity (critical, major, minor). It's what professional linguists use when they review translations manually.&lt;/p&gt;

&lt;p&gt;GEMBA makes an LLM do this same annotation process. It prompts the model to read the source and translation side by side, find the errors, and tag each one with an MQM type and severity. So you get the same structured error breakdown you'd get from a human reviewer, but automated. It ranked #1 on WMT24 by correlation with human MQM annotations.&lt;/p&gt;

&lt;p&gt;The catch: LLM judges are noisy. On one English-to-German clip, 10 passes gave me scores from -29 to -109. Same translation, same model.&lt;/p&gt;

&lt;p&gt;The fix is straightforward. Run 10 passes per segment, drop outliers beyond 2 standard deviations, aggregate with rank-reciprocal weighted averaging so the harshest outlier doesn't dominate. That same clip settles at -41.9 across 10 passes.&lt;/p&gt;

&lt;p&gt;If you're using LLM-as-judge for anything, try running multiple passes. The variance will surprise you.&lt;/p&gt;

&lt;p&gt;Full methodology: &lt;a href="https://voicefrom.ai/blog/gemba-mqm-v2-translation-quality/" rel="noopener noreferrer"&gt;LLMs as translation judges: Inside GEMBA-MQM v2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code: &lt;a href="https://github.com/VoiceFrom/live-s2st-eval" rel="noopener noreferrer"&gt;VoiceFrom/live-s2st-eval&lt;/a&gt;&lt;/p&gt;

</description>
      <category>llm</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I benchmarked OpenAI's new GPT-Realtime-Translate against four other live translation systems</title>
      <dc:creator>Yahya Saleh</dc:creator>
      <pubDate>Wed, 20 May 2026 14:44:00 +0000</pubDate>
      <link>https://forem.com/yahya_saleh_d157cf3d7fe2e/i-benchmarked-openais-new-gpt-realtime-translate-against-four-other-live-translation-systems-3gno</link>
      <guid>https://forem.com/yahya_saleh_d157cf3d7fe2e/i-benchmarked-openais-new-gpt-realtime-translate-against-four-other-live-translation-systems-3gno</guid>
      <description>&lt;p&gt;OpenAI shipped GPT-Realtime-Translate on May 8. It's their first model purpose-built for live speech translation, and it supports 70+ input languages.&lt;/p&gt;

&lt;p&gt;I've been building a live translation pipeline at VoiceFrom, so I ran it through the same eval harness I use on our own system and three other competitors: Google Meet, LiveVoice, and Palabra. Same source audio, same scoring, eight language pairs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I scored it:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Accuracy:&lt;/strong&gt; GEMBA-MQM v2, an LLM judge that annotates specific translation errors (type + severity) rather than giving a single score. 10 scoring passes per segment, outlier removal, rank-reciprocal weighted aggregation. Ranked #1 on WMT24.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency:&lt;/strong&gt; Automated Ear-Voice Span, the time between when a source phrase is spoken and when the translation starts playing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I found:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VoiceFrom Pro was more accurate than OpenAI in 6 out of 8 language pairs&lt;/li&gt;
&lt;li&gt;OpenAI had the fastest median latency (5.4s vs 7.3s for VoiceFrom)&lt;/li&gt;
&lt;li&gt;Google Meet was fastest overall but had by far the worst accuracy&lt;/li&gt;
&lt;li&gt;The accuracy gaps were much bigger than the latency gaps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interesting tradeoff: OpenAI is fast but makes more errors. Google is fastest but the translations are often wrong. The platforms that take a bit longer tend to get the meaning right.&lt;/p&gt;

&lt;p&gt;Full benchmark with charts and audio samples: &lt;a href="https://voicefrom.ai/blog/live-translation-head-to-head-benchmark/" rel="noopener noreferrer"&gt;Five platforms, one harness: a head-to-head live translation benchmark&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The eval harness is open source if you want to run it on your own system: &lt;a href="https://github.com/VoiceFrom/live-s2st-eval" rel="noopener noreferrer"&gt;VoiceFrom/live-s2st-eval&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>openai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Benchmarking five live translation systems with an open-source eval harness (including OpenAI's GPT-Realtime-Translate)</title>
      <dc:creator>Yahya Saleh</dc:creator>
      <pubDate>Tue, 19 May 2026 16:42:00 +0000</pubDate>
      <link>https://forem.com/yahya_saleh_d157cf3d7fe2e/benchmarking-five-live-translation-systems-with-an-open-source-eval-harness-including-openais-11l7</link>
      <guid>https://forem.com/yahya_saleh_d157cf3d7fe2e/benchmarking-five-live-translation-systems-with-an-open-source-eval-harness-including-openais-11l7</guid>
      <description>&lt;p&gt;We built an open-source evaluation harness for live speech-to-speech translation and used it to benchmark five platforms head-to-head. This post walks through the methodology (GEMBA-MQM v2 for accuracy, Ear-Voice Span for latency) and the results.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qe2ppo2ed3reg61jypm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qe2ppo2ed3reg61jypm.png" alt=" " width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eval harness: &lt;a href="https://github.com/VoiceFrom/live-s2st-eval" rel="noopener noreferrer"&gt;https://github.com/VoiceFrom/live-s2st-eval&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>machinelearning</category>
      <category>openai</category>
    </item>
  </channel>
</rss>
