Can a model sound like you without changing what you said?
Four language models, one unchanged rewrite pipeline, two tests. The first test flattered the models that rewrite most; the second, on realistic AI-written drafts, shows which ones keep your content, and how far voice matching still has to go. Numbers, charts, errors and the checks that changed our mind.
Summary
Sealis rewrites a draft so that it sounds like one specific person wrote it, without changing what the draft says. We tested that claim on four language models, running each through the same rewrite pipeline with hidden reasoning switched off. The first test used public-domain letters. The second used realistic AI-written drafts. The second test exists because the first one flattered some of the models.
- On letters, two models scored well ahead. Voice gain, the share of the way from generic text to the writer’s real passage, was 104% for
gemini-3.6-flashand 95% fordeepseek-v4-pro, against 73% forgpt-6-lunaand 38% forkimi-k2.6. - Much of that lead tracks how much of the text a model rewrites. Models that changed about a third of the input’s vocabulary scored highest. After allowing for that, every model’s difference from the four-model average falls within noise: each range includes zero.
- Some of the lead is recall, not style. The strongest scorers reproduced exact phrases from letters they were never shown, because those letters are public and have been read before.
- On AI-written drafts, naming the stock phrases in the prompt helped all four models. The share of rewrites that kept the length, kept every point and removed the machine phrasing rose for every model, most for
gpt-6-luna(73% to 94%). - Matching a voice is the unsolved part. On real drafts no model moved a rewrite more than 11% of the way to the target voice, even with the improved prompt. We say this plainly because the first test would have let us claim otherwise.
The question and how we tested it
The pipeline is the one Sealis ships. It builds a prompt from a person’s writing samples and the measured habits in them, asks a model to rewrite the draft, checks that numbers, dates and names survived, reads the result against the draft for dropped or invented content, and retries once if either check fails. We changed nothing in it for the first test. Only the model behind it changed.
The models were gemini-3.6-flash on Google Vertex AI, and gpt-6-luna, kimi-k2.6 and deepseek-v4-pro on Azure AI Foundry. Where a model reasons before answering we turned that off with its own setting: thinkingLevel: minimal for gemini-3.6-flash and reasoning_effort: none for gpt-6-luna and kimi-k2.6. In a probe, kimi-k2.6 used about 409 tokens on a one-line answer with reasoning on and 26 with it off. We wanted the comparison to be about the writing, not about who thinks longest.
One model run and left out. We also ran gemini-3.1-flash-lite, the smaller Google model Sealis used when we began. It is a lite-tier model, a different size class from the four above, so ranking it alongside them would say little about the models themselves. It is excluded from every comparison and figure here. It was the comparator for our pre-registered bar (below), which is why that bar is described the way it is. Its results are available on request.
Before the full runs we wrote down a pass bar in advance: a model beats that smaller model only if its voice gain is at least 8 points higher, the paired difference is more than two standard errors, facts kept are within 2 points, failures are 2% or fewer, and it copies no more from the writer’s samples. Read literally, no model cleared it, for a reason we explain below. We kept the bar and added a dated note instead of editing it.
Test 1: public-domain letters
Method. We built passages of 700 to 1,600 characters from the letters and prose of nine writers in Project Gutenberg texts[4]. Six are real personal or published letters. The other three are not: Webster’s are the letters of a character in a novel, Lorimer’s are fictional, and Jerome’s are essays. Each writer has 12 sample passages and 4 held-out passages. A model flattened each held-out passage into generic assistant English, and that cached text, identical for every model, is what the pipeline received. The pipeline rewrote it using only the writer’s 12 samples, and we scored the output against the passage the writer really wrote. One passage was refused by the flattening model, which left 35 per run. Each model ran twice.
Scoring. Voice gain is how far the output moved from the generic text towards the real passage, using Cosine Delta over function-word rates, punctuation and sentence rhythm[1][2]. 0% is no movement and 100% is as close to the writer’s profile as the real passage itself. Right author is whether the output sits closer to this writer’s profile than to any of the other eight. As an independent check we also classified every output with a character four-gram model[3], which uses different features. Hard facts (numbers, dates, names, codes) are checked by code.
pooled over both runs each run
Data table
| Model | Run A | Run B | Pooled |
|---|---|---|---|
| gemini-3.6-flash | 105.6% | 102.6% | 104.1% |
| deepseek-v4-pro | 104.9% | 84.7% | 94.8% |
| gpt-6-luna | 72.1% | 73.1% | 72.6% |
| kimi-k2.6 | 44.4% | 30.8% | 37.6% |
| Model | Right author (main score) | Right author (character check) | Hard facts kept |
|---|---|---|---|
| gemini-3.6-flash | 77.1% | 82.9% | 100% |
| gpt-6-luna | 70% | 80% | 100% |
| kimi-k2.6 | 62.9% | 70% | 100% |
| deepseek-v4-pro | 80% | 81.4% | 99.8% |
| Generic input (no rewrite) | 33.3% | 62.9% | - |
| Real passages | - | 88.6% | - |
Facts held up everywhere. On a separate test of 12 fact-dense messages (invoices, travel, meeting notes) rewritten in strong period voices, every model kept all 122 hard facts and invented none. (The voice test did flag 2 to 4 “invented” facts out of 70 for three of the models. Every one was a single capitalised ordinary word, such as “Labour” or “Honour”, in the FitzGerald passages. FitzGerald capitalised his nouns, and our checker reads a capitalised word as a possible name. These are the models copying his habit, not inventing numbers or names, but by the letter of our bar they are failures, which is why we say no model cleared it.) The independent character check agreed that kimi-k2.6 was lowest and that the other three were close together. On this evidence two models score highest on voice, and all four are safe with facts.
That is not the end of it. Three checks changed how we read it.
Why the first result overstates
These are the checks, in the order we ran them. Each one weakens a different part of the headline in Figure 1.
Bolder rewrites score higher
We measured how much of each input’s vocabulary (words of five letters or more) survived in the output. The models that scored highest changed the most. Across all 280 rewrites, the more vocabulary changed, the higher the voice gain (correlation 0.33), at roughly 18 points for every additional 10% changed.
Data table
| Model | Vocabulary kept | Voice gain |
|---|---|---|
| gemini-3.6-flash | 69% | 104.1% |
| gpt-6-luna | 74.5% | 72.6% |
| kimi-k2.6 | 94.8% | 37.6% |
| deepseek-v4-pro | 67.4% | 94.8% |
gemini-3.6-flash, blue is gpt-6-luna and the hollow points are the other two. The dashed line is a straight-line fit through the four and is a guide to the eye, not a result.We then estimated each model’s difference from the average of the four after allowing for how much it rewrote, and again after also allowing for recalled phrases (below), with intervals from resampling the nine writers, since passages by one writer are not independent.
Data table
| Model | Raw difference | Allowing for how much was rewritten | …and for recalled phrases |
|---|---|---|---|
| gemini-3.6-flash | +27 [+3, +56] | +16 [−7, +40] | +16 [−9, +37] |
| gpt-6-luna | −5 [−14, +4] | −8 [−19, +1] | −8 [−17, +4] |
| kimi-k2.6 | −40 [−63, −24] | −12 [−44, +27] | −10 [−32, +13] |
| deepseek-v4-pro | +18 [+9, +26] | +4 [−23, +23] | +2 [−18, +20] |
kimi-k2.6 sits clearly below the average and deepseek-v4-pro above it. Once rewriting is allowed for, every interval includes zero.Some models remember the letters
These letters are public and widely copied, so a model may have read them. We counted five-word phrases from the real passage that appeared in a model’s output but not in the generic input it was given. Such a phrase can only come from the writer’s style or from memory, and in most cases it is memory.
Data table
| Measure | Output phrases recalled from the real passage |
|---|---|
| gemini-3.6-flash | 4.4 |
| gpt-6-luna | 6.1 |
| kimi-k2.6 | 1.9 |
| deepseek-v4-pro | 7.9 |
kimi-k2.6 to 67 of 70 for gpt-6-luna. The worst single rewrite reached 21.1%.Generic input given to the model: “…the sudden illness of Mr. Wither, who was seized that morning in Winchester with a recurrence of his previous alarming condition.”
Output of gemini-3.6-flash: “…who was seized at Winchester that morning with a return of his former alarming complaint. An express was sent from thence to the family…”
The writer’s actual sentence (Jane Austen, letter): “…who was seized that morning at Winchester with a return of his former alarming complaint. An express was sent off from thence to the family…”
The model was not shown the third passage. It still produced “a return of his former alarming complaint” and “from thence”, which the generic input did not contain. The recall effect is a property of this test, and it will not help a model on a customer’s private writing. That is also why the first test cannot be used to estimate how any of these models would do on someone’s own emails.
A score over 100% is not a ceiling
Two models scored above 100%, meaning the output was closer to the writer’s overall profile than the writer’s own passage. We first suspected that models exaggerate the writer’s habits. We tested that: for seven style features, from sentence length to semicolons, every model moved less than the real passage did (the highest ratio was 0.87). The better explanation is that one real passage is a noisy sample of a writer, while an output built from twelve samples can land closer to the average than any single passage does. 100% is a reference point, not a limit.
The gains are uneven across writers
Data table
| Writer | Real passage | gemini-3.6-flash | gpt-6-luna | kimi-k2.6 | deepseek-v4-pro |
|---|---|---|---|---|---|
| Lorimer | 25.6 | 35.0 | 21.0 | 11.5 | 24.8 |
| Webster | 17.4 | 19.5 | 9.9 | 9.0 | 12.2 |
| Keats | 12.6 | 4.1 | 6.4 | 2.6 | 9.1 |
| FitzGerald | 10.7 | 6.8 | 6.7 | 3.0 | 8.9 |
| Twain | 8.0 | 1.6 | 0.4 | 0.8 | 5.4 |
| Chesterfield | 6.7 | 13.3 | 10.3 | 7.5 | 11.0 |
| Stewart | 2.0 | 5.8 | 4.4 | 0.2 | 3.8 |
| Austen | 1.5 | 0.5 | 1.1 | -2.7 | 2.0 |
| Jerome | 1.5 | 3.5 | 1.7 | 1.1 | 3.4 |
Three writers (Austen, Jerome and Stewart) have almost nothing between the generic text and the real passage: about 1.5 to 2 units, against 25.6 for Lorimer. On those writers a ratio score swings wildly. Scaled by each writer’s own gap, scores ran from −183% to +290%. This is why Figure 5 shows plain distance. It also means a handful of writers drive any pooled average.
Test 2: real AI-written drafts
Why a second test. The first test’s inputs were passages flattened by a model, which is plain text and not the stock-phrase prose Sealis exists to fix. A model that changes little can do well there. So we built the test around the actual job.
Method. We took 12 of the 30 everyday writing tasks that Sealis Labs uses (a cover letter opening, an invoice reminder, a complaint reply and so on) and had two models write a draft of 130 to 170 words for each, with no persona, the way a person would use an assistant. Six drafts were used to choose a prompt change. Six more were set aside and run once. Each draft was rewritten in four voices: Webster, Twain, and two real email writers from the Enron corpus[5], whose texts we use only as samples and do not publish. That makes 48 rewrites per row after pooling.
What counts as a pass. All of these, fixed before the results: the length is 85 to 120% of the draft; at least 85% of the draft’s sentences have a matching sentence in the rewrite by meaning (sentence embeddings, cosine similarity of 0.75 or more)[6]; at least 75% of the stock phrases the Score engine flags in the draft[7] are gone; no hard fact is lost; and, for the last line of each table, the output is classified as the intended voice. We report the first four together as keeps the content and removes the slop.
Calibrating the voice test. We tested the two voice classifiers on real held-out text from the same four voices, cut to 150 words. The character model identified the right voice 93% of the time and Cosine Delta 68% (chance is 25%). So Delta is a rough instrument on short texts and differences under about 10 points should be treated as noise. We use Delta for voice because it does not depend on the topic words.
The prompt change. Three edits to the rewrite prompt: a word range around the draft’s length, an instruction that every point the text makes must survive, and the exact stock phrases the Score engine flagged in that draft, named so the model does not repeat them.
Current prompt Prompt names the stock phrases
Data table
| Model | Current prompt | Prompt names the stock phrases |
|---|---|---|
| gpt-6-luna | 73% | 94% |
| kimi-k2.6 | 58% | 71% |
| gemini-3.6-flash | 48% | 69% |
| deepseek-v4-pro | 56% | 67% |
| Model (new prompt) | Length in band | Points kept | Slop cleared | Facts kept | Content + slop | Voice | All |
|---|---|---|---|---|---|---|---|
| gemini-3.6-flash | 81% | 98% | 95% | 94% | 69% | 60% | 44% |
| gpt-6-luna | 98% | 99% | 96% | 100% | 94% | 48% | 46% |
| kimi-k2.6 | 94% | 99% | 83% | 100% | 71% | 42% | 25% |
| deepseek-v4-pro | 75% | 98% | 93% | 98% | 67% | 48% | 29% |
Current prompt Prompt names the stock phrases
Data table
| Model | Current prompt | Prompt names the stock phrases |
|---|---|---|
| gpt-6-luna | 33% | 46% |
| gemini-3.6-flash | 27% | 44% |
| deepseek-v4-pro | 13% | 29% |
| kimi-k2.6 | 17% | 25% |
What the second test shows:
gpt-6-lunakept the content best. With the new prompt it kept the length in 98% of rewrites, kept 99% of points, cleared 96% of stock phrases, lost no facts, and met all four content checks together 94% of the time.gemini-3.6-flashmatched voice best (60% classified as the intended voice, against 48% forgpt-6-luna) but lost a hard fact in about 6% of rewrites.- Nobody moved the voice far. With the new prompt, rewrites travelled between 5% and 11% of the way to the target voice. Twain and the first email voice were hardest for every model.
Dev and hold-out agreed on the direction. They did not agree everywhere: the prompt’s effect on slop for gpt-6-luna was large on the dev drafts (76% to 100%) and absent on the hold-out drafts (96% to 92%), which had less machine phrasing to remove. We report the pooled figure and not the better of the two.
A heavily padded draft
The benchmark drafts had a handful of flagged phrases each. A real cover letter can have far more. One we tried had 24 phrases flagged by the Score engine (“I hope this email finds you well”, “esteemed organization”, “a testament to”, “at your earliest convenience”) and a Score of 21 out of 100.
With the new prompt alone, gpt-6-luna still repeated 7 of them and left the Score essentially unchanged. We then added a check to the pipeline: after the first draft, count the stock phrases that survived, and if more than a quarter did, or the length is outside 85 to 120%, retry once with a note naming exactly what is wrong. Across four voices, surviving phrases fell to 0 to 5 and length landed at 0.73 to 0.85 of the draft, but the Score after rewriting varied widely, from 10 to 88 between voices and runs. One retry gets part of the way. It is not a fix for the heaviest slop, and the benchmark’s lighter drafts would have hidden that.
Cost and speed
Cost per rewrite uses the tokens we measured per rewrite in Test 1 and list prices read on 20 October 2026 from third-party price listings[8], converted at US$1 = A$1.5. These are estimates, not invoices. Prices change, and gemini-3.6-flash is listed as doubling on 1 January 2027. The shipped pipeline with the new prompt uses a longer prompt and sometimes an extra call, so expect 30 to 60% more.
| Model | US$ per million tokens (in / out) | Tokens per rewrite (in / out) | Est. cost per rewrite (A$) | Seconds per rewrite |
|---|---|---|---|---|
| gpt-6-luna | 0.1 / 0.5 | 7,959 / 381 | 0.0015 | 5.7 |
| gemini-3.6-flash | 0.75 / 3.75 | 11,044 / 547 | 0.0155 | 13.0 |
| kimi-k2.6 | 1.045 / 4.4 | 10,189 / 732 | 0.0208 | 11.9 |
| deepseek-v4-pro | 1.74 / 3.48 | 9,423 / 517 | 0.0273 | 10.3 |
At these prices no model costs more than about 3 cents a rewrite, and the dearest is about 18 times the cheapest. For a service charging a monthly fee that gap matters less than the quality differences above.
Limitations
- Memorisation. Test 1 uses public-domain letters that models have probably seen. It cannot tell us how a model would do on a person’s own writing.
- Old writers, short passages, not all real letters. The writers are from the 18th to the 20th century, and three of the nine are fiction or essays (see the method). Passages are 700 to 1,600 characters. Modern email and social posts may behave differently.
- Small samples. Test 1 has 35 passages per run and nine writers. Test 2 has 48 rewrites per row from 12 drafts and four voices. Differences under about 10 points are within noise.
- The voice measures are rough. Cosine Delta identified real 150-word passages only 68% of the time, and the character classifier can lean on topic words.
- The score rewards change. Voice gain rises with how much a model rewrites. We could not fully separate that from better writing.
- No human readers. Every score is computed by code. Nobody rated these rewrites blind, and that is the next test we owe.
- One prompt family, thinking off. Results may differ with reasoning on or a different prompt. The embedding threshold (0.75) was set in advance and not calibrated.
- The drafts are short and come from two generators. Real slop is longer and more varied.
- Four models, one left out. The smaller Google model we also ran is excluded as a different size class. Models of a similar size from other providers were not tested.
- Versions and dates. Results are for these model versions on 13 to 20 October 2026. Prices are third-party listings.
- Not tested. We did not test Anthropic models, because we had no API access to run them under the same conditions.
Reproducing this
Every figure has its numbers in the data table beneath it. The saved model outputs contain third-party text and are not published. We will share the aggregated results with researchers who ask at info@sealis.tech.
References
- Burrows, J. (2002). “Delta”: a measure of stylistic difference and a guide to likely authorship. Literary and Linguistic Computing, 17(3), 267–287.
- Evert, S., Proisl, T., Jannidis, F., Reger, I., Pielström, S., Schöch, C., & Vitt, T. (2017). Understanding and explaining Delta measures for authorship attribution. Digital Scholarship in the Humanities, 32(suppl_2), ii4–ii16. doi:10.1093/llc/fqx023.
- Stamatatos, E. (2009). A survey of modern authorship attribution methods. Journal of the American Society for Information Science and Technology, 60(3), 538–556. doi:10.1002/asi.21001.
- Project Gutenberg (gutenberg.org), accessed September 2026 and checked against the site on 20 October 2026: #16623 Elinore Pruitt Stewart, Letters of a Woman Homesteader (Stewart); #157 Jean Webster, Daddy-Long-Legs (Webster); #21959 George Horace Lorimer, Letters from a Self-Made Merchant to His Son (Lorimer); #3361 Lord Chesterfield, Letters to His Son (Chesterfield); #60433 John Keats, Letters of John Keats to Fanny Brawne (Keats); #3194 Mark Twain, Mark Twain’s Letters, vol. 2 (Twain); #42078 The Letters of Jane Austen (Austen); #20539 Letters of Edward FitzGerald, vol. 2 (FitzGerald); #849 Jerome K. Jerome, The Idle Thoughts of an Idle Fellow (Jerome).
- Klimt, B., & Yang, Y. (2004). The Enron corpus: a new dataset for email classification research. Machine Learning: ECML 2004, 217–226. doi:10.1007/978-3-540-30115-8_22. Two senders’ emails were used as voice samples in Test 2 and are not republished.
- Google Cloud. Text embeddings API, model
text-embedding-005, Vertex AI documentation. Accessed 20 October 2026. - Sealis Labs (2026). How Score works. The stock-phrase list and weights are read from the engine itself.
- Model price listings, read 20 October 2026: azurespeed.com, GPT-6 Luna; azurespeed.com, Kimi K2.6; futureagi.com, DeepSeek V4 Pro on Azure AI Foundry; Google Cloud, Vertex AI generative AI pricing. These are third-party aggregators or snapshots, not invoices.
Cite this
Sealis Labs (2026). Can a model sound like you without changing what you said?. Report 2026-01, 20 October 2026. https://sealis.tech/labs/voice-transfer-report