ModsintermediateUpdated: 10/16/2026

Scam With Your Friends Custom Personality Files & Voice Packs

Build Scam With Your Friends custom personality files from scratch, pairing JSON traits with cloned WAV voice packs so your Workshop caller sounds and reacts right.

Building Scam With Your Friends custom personality files turns a stock caller into someone your whole lobby remembers, and the process is simpler than most players expect. Pair a JSON trait sheet with a cloned WAV voice pack, and you have a fully reactive character ready to share.

What Custom Personality Files Actually Control

A personality file is the brain of a caller. It decides how your character greets a mark, when they get nervous, how fast they escalate, and which lines they fire when a scam starts falling apart. The WAV voice pack is the mouth — the personality file is everything behind it. Skip one and the caller either sounds right but reacts wrong, or reacts perfectly in a voice that belongs to nobody.

The community treats these two halves as a matched set because the game reads them together at load time. In practice, mismatched pairs are the single most common reason a custom caller loads with silent dialogue, or falls back to default reactions instead.

Here is what each component handles: the Personality JSON stores the mood weights, escalation thresholds, and reaction triggers that make a caller panic at the right moment; the voice pack folder holds the WAV clips whose filenames must match the JSON line keys exactly, or the game loads silence instead of dialogue; the manifest entry registers your caller so the loader actually sees it; and the Workshop descriptor controls the title, tags, and preview text that determine whether anyone downloads it. Break any one of these four links and the caller either fails to appear in-game or loads with default reactions, which is why community troubleshooting threads almost always trace a broken custom caller back to a single mismatched component.

  • Personality JSON — mood weights, escalation thresholds, reaction triggers, and line routing

  • Voice pack folder — the WAV clips themselves, named to match the JSON line keys

  • Manifest entry — the metadata that tells the game your caller exists

  • Workshop descriptor — the public-facing title, tags, and preview text

If you have never touched the game's file structure before, the Steam Workshop modding guide walks through where mods live and how the loader discovers them. Read that first if folder paths feel unfamiliar.

The JSON Trait Sheet Explained

Every personality file is a flat JSON object. You are not writing code — you are filling in values. A typical sheet has a name, a voiceFolder pointer, a set of mood weights, and an array of reactions keyed to game events.

The mood block is where personality actually lives. A caller with high aggression and low patience will push marks hard and bail early. Flip those numbers and you get a slow, chatty operator who strings people along for minutes. Community modders report that small numeric shifts change the feel of a caller more than any single line of dialogue.

Keep your first sheet close to a default template — copy the stock name, voiceFolder pointer, mood weights, and reactions array verbatim, then change only one or two values per test run. That way, when a caller suddenly starts hanging up after two rings, you know it was the patience value you just dropped from 0.8 to 0.3, not a side effect of editing aggression at the same time. Testers who tweak five fields at once end up unable to isolate the cause, which is exactly how a workshop upload gets stuck in review with a caller that behaves nothing like the one they previewed.

Setting Up Your Voice Pack Mod

A voice pack mod is just a folder of WAV files with a naming convention the game understands. Get the names wrong and the caller goes mute mid-conversation, which is far more frustrating than a bad voice. The naming scheme maps each clip to a line key in your personality JSON, so greeting_01.wav only plays when the JSON asks for greeting_01.

Before you record or clone anything, decide how many lines you actually need. A minimal caller can ship with twelve clips. A full one runs past sixty. More lines mean more personality, but also more chances to break a filename.

ComponentFormatNaming RuleCommon Mistake
Greeting clipsWAVgreeting_01.wavNumbering starts at 0
Escalation linesWAVescalate_soft.wavSpaces instead of underscores
Panic reactionsWAVpanic_high.wavWrong sample rate
Sign-off linesWAVsignoff_neutral.wavMissing file entirely
Idle chatterWAVidle_01.wavDuplicate keys

The sample rate trips up more people than anything else. Stick to 44.1 kHz, 16-bit mono unless you have a reason to go higher. Oversized files bloat your upload and slow load times without improving how the caller sounds in-game.

Recording Versus Cloning

You have two paths. Recording your own voice is the safest and most original option. Cloning — running a short sample through a voice model — is faster and lets you build a caller who sounds nothing like you, which matters if you plan to publish.

The voice cloning walkthrough covers sample length, cleanup, and how to avoid the robotic artifacts that make a cloned caller sound uncanny. If you are cloning, always keep a clean reference take on hand so you can regenerate lines after a bad batch.

Whichever route you take, normalize your clips to a consistent loudness before packing them. A caller who whispers one line and shouts the next reads as broken, not expressive. In Audacity, run Effect → Loudness Normalization at around -16 LUFS across every WAV in the pack, then trim leading silence to under 100 ms so the first syllable doesn't clip when the game triggers the line. Mismatched peaks are also the usual culprit behind a workshop upload stuck on "processing" — the validator rejects files whose gain swings more than a few dB between takes.

Writing Personality That Feels Alive

Numbers alone do not make a character. The trick is tying your trait values to a voice that matches them. A caller with high aggression needs clipped, fast line delivery. A high patience operator benefits from longer, meandering clips. When the JSON and the audio disagree, players notice immediately even if they cannot explain why.

Draft that concept before you touch a single slider, because it is the cheapest bug-catcher in the whole pipeline. A one-paragraph sketch — "Nervous retiree, apologizes twice per sentence, folds the moment the mark pushes back" — gives you a fixed reference point to check every value against: if your confidence sits at 0.8 but the voice you cloned stammers through the intro line, the concept tells you which one is wrong. It also exposes mismatches early, before you have burned hours scrubbing WAVs or re-recording pickup lines for a caller whose aggression and patience contradict each other. Write the paragraph in plain language, keep it somewhere you can reread while tuning, and treat any trait value that fights the concept as a signal to adjust the number — not the character.

TraitLow Value Feels LikeHigh Value Feels LikeBest Paired Voice
aggressionPassive, hesitantPushy, fast-talkingClipped, loud
patienceImpatient, bails earlySlow, strings marks alongLong, meandering
confidenceStammers, second-guessesSmooth, unshakableSteady, low
chaosPredictable, safeUnhinged, unpredictableErratic, varied
warmthCold, transactionalFriendly, disarmingSoft, casual

Community modders often build two versions of the same caller — one tuned safe, one tuned chaotic — and publish both. It costs almost nothing extra and doubles the ways players can use your character. Take the chaos row of the trait table: a safe build pins chaos near 0.2 so the operator follows the script and bails predictably, while a chaotic sibling pushes it past 0.8 for erratic, varied delivery that derails a mark mid-pitch. Because both variants share the same cloned WAV set and JSON skeleton, you only swap a handful of trait values before the second workshop upload — so a single voice pack mod yields two distinct callers instead of one.

Testing Before You Publish

Never upload a caller you have not run in a live session. Load your personality file, start a call, and watch for three things: silent lines, mismatched reactions, and timing that feels off. Silent lines mean a filename mismatch. Mismatched reactions mean your JSON keys do not line up with your event names. Bad timing usually means your clips are too long or too short for the pacing the game expects.

Run at least two full sessions before publishing. The first catches obvious breakage: a wav file that never triggers because the filename in your JSON does not match the clip on disk, or a caller whose greeting plays over the wrong event. The second catches the subtle stuff — a panic line that fires too early, a greeting that repeats, a sign-off that cuts off mid-word. That second pass matters most for scam with your friends voice pack mod uploads, since a caller can pass a quick solo test and still desync once a second player joins the lobby and the game starts juggling multiple audio triggers at once.

Uploading Your Caller to the Workshop

The Workshop upload is where most first-time creators get stuck, and the reasons are almost always mundane. The uploader needs a valid manifest, a thumbnail, and a folder structure it recognizes. Miss any one and the button either greys out or the upload hangs.

Here is the reliable order of operations, and it exists because the Workshop validates in a fixed sequence rather than all at once: it parses manifest.json first, then resolves every JSON key against your audio/ folder, then checks the thumbnail dimensions, and only then exposes the publish button. Skipping ahead — say, uploading before your WAV filenames match their JSON keys — is what produces the classic "stuck at 0%" hang, since the uploader stalls while it hunts for a clip that does not exist. Work top to bottom and each gate clears before the next one opens.

  1. Confirm your caller loads correctly in a local session first

  2. Verify every WAV filename matches a JSON key exactly

  3. Fill in the manifest with title, author, and version

  4. Add a thumbnail image at the size the uploader expects

  5. Publish, then immediately test the downloaded copy in a fresh session

That last step matters more than people think. A caller that works locally can still fail after download if your manifest points to paths that only exist on your machine. Always test the published version as if you were a stranger installing it.

Upload SymptomLikely CauseFix
Upload button greyed outMissing manifest fieldsFill title, author, version
Upload hangs at 0%Oversized WAV packCompress or trim clips
Upload completes, caller silentFilename mismatchRename clips to match JSON
Caller loads but no voiceWrong sample rateRe-export at 44.1 kHz
Thumbnail missingWrong image dimensionsResize to expected size

When the Workshop Upload Gets Stuck

A stuck upload is the most common complaint in creator threads. Nine times out of ten it is a file size problem — a pack full of uncompressed WAVs can balloon past what the uploader will push. Trim silence from your clips, drop anything below 44.1 kHz, and try again.

If it still hangs, check your manifest for a stray character or a missing comma. A malformed JSON manifest will stall the uploader without a clear error. The Workshop troubleshooting notes cover the download side of the same problem, which often shares a root cause with upload failures.

Making Your Caller Worth Downloading

Publishing a caller to the Workshop is a two-click job — fill in the title, drop your .wav files, hit upload. Getting downloads is the hard part, because the Workshop browser sorts by trending and recent, and a new caller only stays visible in that feed for a short window before newer uploads bury it. The callers that actually spread are the ones with a clear hook baked into the personality file itself: a distinct voice that does not sound like a default text-to-speech read, a memorable gimmick like a caller who panics louder the longer the scam runs, or a reaction set that surprises players the first time they trigger a failed pitch. A generic "angry guy" pack with flat audio gets scrolled past in seconds, no matter how clean the file structure is.

A few things consistently separate popular callers from forgotten ones: the personality file has to carry a distinct voice profile rather than a default text-to-speech read, the reaction set needs at least one gimmick that escalates during a failed pitch, and the .wav clips must stay loudness-matched across every trigger so players never hear a jarring volume jump mid-scam. Callers built around a single memorable bit — a panicked escalation, a deadpan hang-up line, a catchphrase that fires on every successful scam — get clipped and shared in Discord servers, which drives far more Workshop traffic than the trending feed ever will.

  • A strong thumbnail — players scroll fast, so the image has to sell the character

  • A short, punchy description — one sentence on who the caller is and why they are fun

  • Consistent audio quality — one bad clip drags down the whole pack

  • A clear version number — signals you plan to maintain it

  • Honest tags — helps the right players find it

In practice, callers updated within the first week of release get noticeably more traction, because early feedback lets you fix the small stuff before the pack falls out of the spotlight. Treat your first upload as a beta, not a launch.

Iterating After Release

Once your caller is out, watch for the same three failure modes you checked during testing. Players will tell you if a line is silent or a reaction fires at the wrong moment. Keep your source files organized so a fix takes minutes, not hours.

Version your releases. Bump the number, note what changed, and re-upload. A caller that visibly improves over time builds a small following, and that following is what turns a one-off upload into a recognizable name in the Workshop.

Frequently Asked Questions

What exactly is a custom personality file in Scam With Your Friends?

It is a JSON sheet that defines how a caller behaves — mood weights, escalation thresholds, and reaction triggers — paired with a matching WAV voice pack. The JSON controls reactions while the audio controls delivery, and the game reads both together when the caller loads into a session.

Do I need voice cloning to make a voice pack mod?

No. Recording your own voice is the simplest and most original route, and it avoids the artifacts that cloned audio sometimes carries. Cloning is useful when you want a caller who sounds nothing like you, but it requires a clean reference sample and extra cleanup work before packing.

Why does my Workshop upload keep getting stuck?

The usual culprit is an oversized WAV pack that the uploader cannot push through. Trim silence, re-export clips at 44.1 kHz, and check your manifest for a missing comma or stray character. A malformed manifest stalls the uploader silently, so validate the JSON before retrying.

How many voice lines does a caller actually need?

A minimal caller ships with around twelve clips covering greetings, escalations, and sign-offs. A full personality runs past sixty lines for richer reactions. Start small, test in a live session, then expand once the core behavior feels right and no filenames are broken.

Can I publish two versions of the same caller?

Yes, and many creators do. Building a safe version and a chaotic version from the same voice pack costs very little extra work and gives players two ways to use your character. Just version them separately so downloads stay clear and updates do not overwrite the wrong pack.

Custom personality files and voice packs are the difference between a caller who exists and a caller who is remembered. Nail the JSON-to-WAV pairing, test in a live session before publishing, and treat your first Workshop upload as a beta you plan to improve.