<?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>DEV Community: 沈兴慧</title>
    <description>The latest articles on DEV Community by 沈兴慧 (@_afec90bf52c499872d495).</description>
    <link>https://dev.to/_afec90bf52c499872d495</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4037129%2Fd835b02a-77c7-4f31-8d90-456d74c682dc.jpg</url>
      <title>DEV Community: 沈兴慧</title>
      <link>https://dev.to/_afec90bf52c499872d495</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_afec90bf52c499872d495"/>
    <language>en</language>
    <item>
      <title>How I Localize Product Demo Videos With an AI Video Translator (Without Re-recording a Single Take)</title>
      <dc:creator>沈兴慧</dc:creator>
      <pubDate>Fri, 18 Sep 2026 07:02:52 +0000</pubDate>
      <link>https://dev.to/_afec90bf52c499872d495/how-i-localize-product-demo-videos-with-an-ai-video-translator-without-re-recording-a-single-take-2319</link>
      <guid>https://dev.to/_afec90bf52c499872d495/how-i-localize-product-demo-videos-with-an-ai-video-translator-without-re-recording-a-single-take-2319</guid>
      <description>&lt;p&gt;We recorded every product demo in English for about two years. Not out of strategy, just out of habit — English was the language the team worked in, so English was the language the camera heard.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcxolctc7w19v7h4yqbz9.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcxolctc7w19v7h4yqbz9.png" alt=" " width="746" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then I pulled the signup data by country and found a pile of sessions from markets we had never recorded anything for. People were watching a demo they could not follow, getting three quarters of the way through, and leaving.&lt;/p&gt;

&lt;p&gt;The expensive fix is re-recording with a native speaker per market. I did not have that budget. What I built instead was a subtitle pipeline, and most of what I learned had nothing to do with translation.&lt;/p&gt;

&lt;p&gt;Localization is a distribution decision, not a post-production step&lt;br&gt;
If you treat translation as the last thing that happens to a finished video, you find the real problems too late to fix them cheaply.&lt;/p&gt;

&lt;p&gt;Three things I only noticed after the first attempt:&lt;/p&gt;

&lt;p&gt;The demo says things the UI does not. "Click the blue button in the top right" is useless if the viewer's interface is in their own language and the words on screen are different.&lt;br&gt;
Idioms do not survive. A throwaway joke in the intro reads as confusing, or worse, as rude.&lt;br&gt;
On-screen text stays in the source language. Subtitles cover spoken words. They do not translate the form labels, the terminal output, or the error message you hovered over for three seconds.&lt;br&gt;
Once you know those, you start writing the narration differently: shorter sentences, no idioms, and named things named the same way every time. That is a scriptwriting change, not a translation change.&lt;/p&gt;

&lt;p&gt;Step 1: Fix the audio before you translate anything&lt;br&gt;
Transcription quality is downstream of audio quality, and translation quality is downstream of transcription quality. A noisy track produces a wrong transcript, and a wrong transcript produces a translation you will spend an hour repairing line by line.&lt;/p&gt;

&lt;p&gt;Practical things that mattered more than any tool choice:&lt;/p&gt;

&lt;p&gt;Get the mic close. Room echo hurts far more than a slightly imperfect microphone.&lt;br&gt;
Normalize levels and cut the dead air at the head and tail.&lt;br&gt;
If there is music under the narration, drop it or duck it hard. Background music is the single biggest source of garbage segments in my experience.&lt;br&gt;
Say the product name clearly and once. Do not rely on the model inferring it from context.&lt;br&gt;
Step 2: Proofread the transcript, not the translation&lt;br&gt;
This is the step that matters most, and it is the one everyone skips.&lt;/p&gt;

&lt;p&gt;The instinct is to open the translated output and fix the strange lines there. That is backwards. Fix the source transcript first — correct the product names, the command names, the acronyms, the segments that got split in a weird place — and then translate.&lt;/p&gt;

&lt;p&gt;Every target language inherits every mistake in the source. Ten minutes correcting English saves ten minutes per language, and it compounds if you add languages later.&lt;/p&gt;

&lt;p&gt;If your tool gives you timestamped segments, read them against the video once before you do anything else.&lt;/p&gt;

&lt;p&gt;Step 3: Protect the words that must not be translated&lt;br&gt;
Keep a do-not-translate list next to you. Mine is short and it has saved me repeatedly:&lt;/p&gt;

&lt;p&gt;the product name, and the company name&lt;br&gt;
CLI commands, flags, and package names&lt;br&gt;
environment variable names and API endpoints&lt;br&gt;
file extensions and error codes&lt;br&gt;
Machine translation is confident and wrong about these. I have watched a product name come back as a generic noun, and a command flag come back as a full sentence describing what the flag does. Both times the translation was grammatically fine, which is exactly why it slipped through the first read.&lt;/p&gt;

&lt;p&gt;After the translation finishes, check every item on that list. Not skim — check.&lt;/p&gt;

&lt;p&gt;Step 4: Respect reading speed&lt;br&gt;
This is the part that breaks every language except English, and it is pure mechanics.&lt;/p&gt;

&lt;p&gt;Working rules of thumb for subtitle cues:&lt;/p&gt;

&lt;p&gt;Maximum two lines on screen at once.&lt;br&gt;
Roughly 32–42 characters per line.&lt;br&gt;
Reading speed around 15–20 characters per second.&lt;br&gt;
Here is a cue that looks completely fine in English:&lt;/p&gt;

&lt;p&gt;1&lt;br&gt;
00:00:04,120 --&amp;gt; 00:00:07,480&lt;br&gt;
Now we'll add the webhook endpoint to the config file.&lt;br&gt;
That is 52 characters over 3.36 seconds, about 15.5 characters per second. Fine.&lt;/p&gt;

&lt;p&gt;Now translate that into German or Finnish and the same sentence expands by a third. Same timing, more text, and suddenly the viewer has to read at 24 characters per second to keep up. They will not. They will miss a line, lose the thread, and close the tab.&lt;/p&gt;

&lt;p&gt;Two fixes, and you will use both:&lt;/p&gt;

&lt;p&gt;text&lt;br&gt;
1&lt;br&gt;
00:00:04,120 --&amp;gt; 00:00:06,200&lt;br&gt;
Now we'll add the webhook endpoint&lt;/p&gt;

&lt;p&gt;2&lt;br&gt;
00:00:06,200 --&amp;gt; 00:00:08,900&lt;br&gt;
to the config file.&lt;br&gt;
Splitting the cue costs nothing and reads comfortably. Shortening the sentence costs a little precision and reads comfortably. Leaving it long costs you the viewer.&lt;/p&gt;

&lt;p&gt;If you can, have someone read a couple of cues aloud in the target language and time them. That is the whole test.&lt;/p&gt;

&lt;p&gt;Step 5: Ship the subtitle file and the translated audio separately&lt;br&gt;
These are two artifacts for two different situations, and you want both:&lt;/p&gt;

&lt;p&gt;A subtitle file for people watching muted on a phone in public.&lt;br&gt;
A video with translated audio for people who would rather listen than read.&lt;br&gt;
Do not burn the subtitles into the only copy you have. Keep a soft-subtitled version, because you will want to re-export after someone finds a typo.&lt;/p&gt;

&lt;p&gt;Two commands I use constantly:&lt;/p&gt;

&lt;p&gt;bash&lt;/p&gt;

&lt;h1&gt;
  
  
  burn subtitles into a separate copy (hard subs)
&lt;/h1&gt;

&lt;p&gt;ffmpeg -i demo.mp4 -vf subtitles=demo.srt demo-hardsubs.mp4&lt;/p&gt;

&lt;h1&gt;
  
  
  keep subtitles as a switchable track instead
&lt;/h1&gt;

&lt;p&gt;ffmpeg -i demo.mp4 -i demo.srt -c copy -c:s mov_text demo-with-track.mp4&lt;br&gt;
And on the web, ship them as tracks rather than baking them in:&lt;/p&gt;

&lt;p&gt;html&lt;/p&gt;


  
  
  
  


&lt;p&gt;Users can switch languages, and you can fix one file without re-encoding video.&lt;/p&gt;

&lt;p&gt;The things that actually broke&lt;br&gt;
Every one of these cost me an export:&lt;/p&gt;

&lt;p&gt;UTF-8 with a BOM. Some players show garbage, some show nothing. Save as UTF-8 without BOM.&lt;br&gt;
SRT and WebVTT timestamps are not interchangeable. SRT uses a comma before the milliseconds — 00:00:01,000. WebVTT uses a dot — 00:00:01.000. Mixing them produces cues that silently fail to render.&lt;br&gt;
Auto-detect language misfires. Accents, music, or a video that switches languages partway through will confuse it. Name the source language explicitly every time.&lt;br&gt;
Comments arrive in a language you do not read. Decide before you publish whether you will reply with help, reply in English, or not reply. Silence is a legitimate choice; pretending you understood is not.&lt;br&gt;
The first comment is usually about something you got wrong. That is the most valuable feedback channel you just opened. Watch it.&lt;br&gt;
Where an AI video translator fits&lt;br&gt;
This is the part people ask about, so let me be specific about what it does and does not do for me.&lt;/p&gt;

&lt;p&gt;I run the first pass through an AI Video Translator. It handles the timed transcription and the subtitle translation, and the reason I keep using it is not the translation — it is that I can review and correct every segment side by side against the original before I export anything. That review step is where the quality actually comes from.&lt;/p&gt;

&lt;p&gt;The other thing I care about: it exports the subtitle file as well as the finished video. So the SRT goes into the repo next to the code, gets reviewed in a pull request like any other file, and can be fixed without touching the video. There is no account needed for a quick pass, which matters when I am only trying to decide whether a market is worth a real localization effort at all.&lt;/p&gt;

&lt;p&gt;What it does not do: it does not make the demo better. A confusing demo in five languages is a confusing demo. It makes the demo visible to people who would not have watched it — and visibility was the problem I actually had. Those are different problems, and it is worth knowing which one you are solving.&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/..." 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/..." alt="Uploading image" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
If you take two things from it, take the CPS check and the transcript-first rule. The commands and the character-per-second figures are worth verifying against your own files before you rely on them — subtitle tooling disagrees at the margins, and your audience is the only one who can tell you whether a cue was readable.&lt;/p&gt;

&lt;p&gt;The demos were never the bottleneck. The assumption that English was the default was.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>marketing</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
    <item>
      <title>How I Localize Product Demo Videos With an AI Video Translator (Without Re-recording a Single Take)</title>
      <dc:creator>沈兴慧</dc:creator>
      <pubDate>Fri, 18 Sep 2026 06:48:15 +0000</pubDate>
      <link>https://dev.to/_afec90bf52c499872d495/how-i-localize-product-demo-videos-with-an-ai-video-translator-without-re-recording-a-single-take-4563</link>
      <guid>https://dev.to/_afec90bf52c499872d495/how-i-localize-product-demo-videos-with-an-ai-video-translator-without-re-recording-a-single-take-4563</guid>
      <description></description>
    </item>
    <item>
      <title>Shipping Demo Audio in Multiple Languages: My No-Account, No-SDK Workflow</title>
      <dc:creator>沈兴慧</dc:creator>
      <pubDate>Wed, 02 Sep 2026 07:40:12 +0000</pubDate>
      <link>https://dev.to/_afec90bf52c499872d495/shipping-demo-audio-in-multiple-languages-my-no-account-no-sdk-workflow-32b8</link>
      <guid>https://dev.to/_afec90bf52c499872d495/shipping-demo-audio-in-multiple-languages-my-no-account-no-sdk-workflow-32b8</guid>
      <description>&lt;h2&gt;
  
  
  My No-Account, No-SDK Workflow
&lt;/h2&gt;

&lt;p&gt;I maintain a small side project with demo content, and last quarter the issue tracker filled up with one repeated request: "can we get this in Spanish?" The content is mostly short audio demos and screen recordings. Here's the workflow I settled on after rejecting three heavier options first.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqb7dbeqg9uk2qpu2jibt.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqb7dbeqg9uk2qpu2jibt.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem: One Language, Many Users
&lt;/h3&gt;

&lt;p&gt;The demos were recorded in English because that's what I speak into a microphone. Users who didn't were stuck reading auto-generated captions of dubious quality. I looked into proper localization and got quotes that made sense for a funded product and zero sense for a weekend project.&lt;/p&gt;

&lt;p&gt;The requirements I wrote down, in order of stubbornness:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;No account creation — I don't want another credential in my password manager for a task I run weekly&lt;/li&gt;
&lt;li&gt;No SDK to babysit — this is a content chore, not a feature&lt;/li&gt;
&lt;li&gt;Subtitle output I can drop into existing tooling — SRT and VTT specifically&lt;/li&gt;
&lt;li&gt;A review step before anything ships, because I don't trust black boxes with user-facing text&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What I Rejected Before This
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Dubbing studios:&lt;/strong&gt; great quality, priced for companies with actual budgets. My side project earns coffee money.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Whisper + a translation script I'd write myself:&lt;/strong&gt; honestly considered it. Then I imagined maintaining the pipeline every time a model or dependency shifted. I've met my future self. He resents past me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full video editing suites with translation plugins:&lt;/strong&gt; heavyweight for what is fundamentally a text-and-timing problem.&lt;/p&gt;

&lt;p&gt;What I ended up with is a &lt;a href="https://aivideotranslator.ai/audio-translator" rel="noopener noreferrer"&gt;free audio translator&lt;/a&gt; that runs in the browser. Zero setup was the whole appeal.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Workflow, Step by Step
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Input: file, link, or direct recording
&lt;/h4&gt;

&lt;p&gt;The audio translator accepts MP3, WAV, and M4A for audio, plus MP4, MOV, and AVI when I'm too lazy to strip the audio track from a screen recording first. There's also a paste-a-link option and a record-directly mode.&lt;/p&gt;

&lt;p&gt;My usual path: export the demo recording, drop the file in, and the source language is detected automatically. No language dropdown dance before the real work starts. When a contributor sends me a clip recorded in something other than English — it happens more than you'd think on an open-source project — the auto-detection means I don't have to interrogate them about it first.&lt;/p&gt;

&lt;h4&gt;
  
  
  Picking a target from 90+ options
&lt;/h4&gt;

&lt;p&gt;The target language list runs past ninety options, and the same translation can come out as text, subtitles, or audio depending on what the release needs. My primary target is Spanish because that's what the issue tracker asked for. Portuguese went from "someday" to "done in one evening" once I realized the marginal cost of another language was basically one more review pass.&lt;/p&gt;

&lt;p&gt;The audio translator doesn't charge per language or gate the good ones behind a plan. For a side project, that pricing model — free, no sign-up — is the only one that survives contact with my budget.&lt;/p&gt;

&lt;h4&gt;
  
  
  The transcript comes back timestamped
&lt;/h4&gt;

&lt;p&gt;This is the part that matters for anyone wiring subtitles into a product. Speech comes back as timed segments, each one anchored to its position in the source. When I select a segment, I'm looking at exactly the moment it belongs to.&lt;/p&gt;

&lt;p&gt;For an audio translator at this price point — free — I expected a wall of text and manual timing. Getting structured, segment-aligned output instead changed the whole calculus.&lt;/p&gt;

&lt;h4&gt;
  
  
  Exports that fit real tooling
&lt;/h4&gt;

&lt;p&gt;The export list is where I stopped being a skeptic: TXT, SRT, VTT, DOCX, and PDF for the text side, plus the translated audio as a separate download. SRT goes straight into my video player config. VTT is what the web demo page consumes natively. DOCX I send to a translator friend who reviews the tricky segments as a favor.&lt;/p&gt;

&lt;p&gt;Format coverage like this is the difference between "I translated something" and "I shipped something."&lt;/p&gt;

&lt;h4&gt;
  
  
  Speaker labels for multi-voice demos
&lt;/h4&gt;

&lt;p&gt;Some of my demos include a two-person walkthrough. The audio translator can attach speaker labels to segments, so the review pane shows who spoke when. When one voice needs rewording, I'm editing the right person's lines, not guessing. For single-voice content I hide the labels entirely.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where It Sits in My Release Routine
&lt;/h3&gt;

&lt;p&gt;The routine is boring now, which is the highest compliment I can give a workflow step:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Record the demo in English, same as always&lt;/li&gt;
&lt;li&gt;Upload, pick Spanish (or one of the other 90+ targets — Portuguese and Japanese are next on my list)&lt;/li&gt;
&lt;li&gt;Review the side-by-side transcript and translation, fix names and product terms&lt;/li&gt;
&lt;li&gt;Export SRT for the video, VTT for the web page, translated audio for the standalone demo file&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Total added time: maybe fifteen minutes per demo. The alternative was re-recording everything or ignoring the requests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Honest Limitations
&lt;/h3&gt;

&lt;p&gt;I keep a short list of things I still handle manually:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product-specific terminology.&lt;/strong&gt; My project's feature names shouldn't be translated, and the first pass sometimes translates them. The review step catches this, but you do have to actually do the review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Idioms and casual phrasing.&lt;/strong&gt; Literal translations of jokes come back exactly as literal as you'd fear. If your demo script is casual, budget two minutes to fix the tone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Long-form audio.&lt;/strong&gt; This handles my short demos comfortably. If you're localizing a ninety-minute conference talk, expect the review pass to be proportionally longer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Processing patience.&lt;/strong&gt; Runtime varies with the length of the clip and the target language. It's never been slow enough to break my routine, but I don't fire it off thirty seconds before a release either. I upload, get coffee, come back to a finished review pane. That cadence suits me fine.&lt;/p&gt;

&lt;p&gt;None of these have been dealbreakers. They're just the boundary between "automate it" and "stay in the loop," and I prefer staying in the loop for anything user-facing anyway. The audio translator does the repetitive lifting; I do the judgment calls. That division of labor is exactly what I want from tooling in general — take the mechanical work, leave me the decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Would I Recommend It?
&lt;/h3&gt;

&lt;p&gt;If you're a solo dev or a small team sitting on monolingual demo content, this is the cheapest possible upgrade to your reach. No sign-up wall, no credit card, no SDK, and the outputs plug into standard subtitle tooling without conversion scripts.&lt;/p&gt;

&lt;p&gt;My Spanish-speaking users stopped filing the "can we get this in Spanish" issue. The tracker is quieter. I consider that a shipped feature.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>video</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
