VoxCPM2 vs ElevenLabs for a 30-Second Science Short: We Timed Both on the Same Script

Disclosure: DigitalHarvest (NSST) is an independent affiliate of ElevenLabs. We may earn a commission if you subscribe through the referral link in this article. ElevenLabs has not sponsored, reviewed, or approved this article. This relationship does not change the numbers below, and the free local option wins on cost in our own test.

We make 30-second science Shorts from public-domain NOAA ocean footage, and every one needs about six lines of narration. On October 4, 2026 we took one finished script and voiced the same six lines twice: once with VoxCPM2, an open-source model running on our own Apple Silicon Mac, and once with ElevenLabs on the paid Creator plan we already use. Then we ran both outputs through the same Whisper check our pipeline uses before anything is published. Here is what came out.

The script we used

The episode is "Why doesn't hot water on the seafloor boil?" (a small black smoker vent filmed at 2,947 m by NOAA Ocean Exploration). Six lines, 428 characters in total, for example: This is a small seafloor chimney, two thousand nine hundred forty-seven meters deep. Numbers are written out as words on purpose, because a voice model reads "2,947" in odd ways.

What we measured

These are results from one paired run on October 4, 2026, not an average or a current speed guarantee. We used different voices and output pacing. Retries, failed requests and the local model’s already-loaded speed were not separately measured, so they remain unknown.

VoxCPM2 (local)ElevenLabs Multilingual v2
Time to voice all 6 lines51.3 s (includes loading the model)9.9 s (first request 4.0 s, then about 1.0 to 1.3 s per line)
Total speech length30.7 s26.0 s
Whisper word match per line0.84 / 1.0 / 1.0 / 1.0 / 0.93 / 1.00.84 / 1.0 / 1.0 / 1.0 / 0.93 / 1.0
Network calls06 API requests
Cost for this test$0 (electricity aside)about 428 credits out of the plan's monthly 121k
Voicecloned from our own 10-second English reference clipa stock library voice we normally use for Korean, not picked for English
Numeric comparison card for one six-line script test: local VoxCPM2 generation 51.3 seconds including model loading; ElevenLabs Multilingual v2 9.9 seconds for six requests. Speech length was 30.7 seconds locally and 26.0 seconds in the cloud. One paired run, with different voices; voice quality was not scored.
One paired run on 4 October 2026: the same six-line, 428-character script took 51.3 seconds with local VoxCPM2 (including model loading) and 9.9 seconds with ElevenLabs Multilingual v2 across six API requests. The generated speech totaled 30.7 and 26.0 seconds. Different voices and pacing were used; this is a workflow timing example, not a repeated benchmark or a voice-quality ranking. Original comparison card drawn from our saved experiment results.

The exact six-line input

This is the input used in our recorded test, with numbers written out as words. It is provided so readers can repeat the same input; the timing card reflects one paired run.

  1. Why doesn't hot water on the seafloor boil?
  2. The answer is the enormous pressure of the deep ocean.
  3. This is a small seafloor chimney, two thousand nine hundred forty-seven meters deep.
  4. In the ocean, pressure rises by one atmosphere for about every ten meters you go down.
  5. Some vents reach three hundred fifty degrees Celsius. This one measured fifty-four at most.
  6. In the next series, we'll see why lava moves forward like little toes.

The surprise: Whisper could not tell them apart

We expected the transcription check to favor one engine. It did not. Whisper large-v3-turbo returned exactly the same text for both files, and both lost points in the same two places: it wrote "seafloor" as "sea floor" in line 1 and heard "reach" as "reached" in line 5. Those differences may come from transcription or pronunciation; the word-match score alone cannot tell which. We did not use it as an audio-quality ranking. Our rule is that every line must score at least 0.8, so both versions pass, and the check tells us nothing about which one sounds better. A word-match score catches a model that skips or garbles words; it does not measure warmth, pacing or accent. Listen to each voice track as a separate check. A transcript match does not establish pronunciation, naturalness or audio quality.

Where each one fits

  • Observed waiting time: the saved results report 51.3 seconds locally, including model loading, and 9.9 seconds for six cloud requests. The about-five-times ratio describes this one run and includes different overheads. It does not predict your machine, network or a batch with the local model already loaded.
  • Output length: speech totaled 30.7 seconds locally and 26.0 seconds in the cloud for the same input. That 4.7-second difference reflects the voices and pacing used in this run. It is not a quality score; check whether the actual words and pauses fit your edited scenes.
  • Cost and privacy: VoxCPM2 is Apache-2.0 licensed, free for commercial use, and nothing leaves the machine. The model card asks you to label AI voices and forbids impersonation, which we follow by stating "AI voice narration" in every description.
  • Setup: VoxCPM2 is a 2-billion-parameter model; the model card lists about 8 GB of GPU memory. ElevenLabs needs only an API key, and the Creator plan includes a commercial license.

Which workflow should you try first?

This choice is about your workflow, not a voice-quality winner. The existing files give us one timing example; we did not perform a blinded listening comparison or measure retry rates.

  • Try local first if you already have a machine and setup that can run VoxCPM2, want generation without sending each request to a cloud service, and can spend time maintaining and checking the output. The local run made no network requests and had no service charge for this test; hardware, electricity and setup time still matter.
  • Consider a cloud workflow if installation is the obstacle or you value the shorter waiting time we observed. Before paying, check the current plan’s commercial-use terms and included credits, then test your own intended language and voice. Our stock voice was not selected for English, so these timings do not establish the best English voice.
  • Keep the decision open if the output fails your script or listening check. Record the failed line, time and consumed credits. Our saved run does not tell us how often either option will need retries.

The official VoxCPM2 model card lists Apache-2.0 licensing and asks for AI labeling and responsible use. ElevenLabs’ current plan page lists a commercial license on paid plans. We rechecked those pages on October 11, 2026; the timing table remains the October 4 experiment, and no new audio was generated for this update.

What we actually use

For the science Shorts we keep VoxCPM2: zero cost per episode matters more to us than 40 seconds of waiting, and one cloned voice keeps the narrator consistent across a series. We keep the ElevenLabs subscription for work where turnaround matters more, such as quick voice replies and drafts. If you do not have a capable GPU, or you want to skip Python setup entirely, ElevenLabs is the shorter path: DigitalHarvest (NSST) is an independent affiliate of ElevenLabs and may earn a commission if you subscribe through this link: ElevenLabs (referral link).

How to run the same test yourself

  1. Write out every number in your script as words.
  2. Voice the same lines with each engine and save one file per line.
  3. Transcribe each file with Whisper and compare word by word against the script (lowercase, numbers converted to words).
  4. Fail any line under 0.8 and regenerate only that line.
  5. Listen to the actual output. A transcript score is a warning signal, not proof of correct pronunciation or acceptable audio; inspect the mismatched line before deciding whether to regenerate.

Sources checked

Affiliate relationship and trademark attribution

ElevenLabs and the ElevenLabs logo are registered trademarks or trademarks of ElevenLabs, Inc. Used with permission. DigitalHarvest (NSST) is not sponsored by, endorsed by, or affiliated with ElevenLabs except as an independent participant in the ElevenLabs Creator Affiliate Program.

Comments

Popular posts from this blog

FFmpeg Shows −1.5 dBTP. Did You Actually Fix the Audio?

Before You Upload an AI Song or Video: The Checks We Run (Free Commands)