Naturalness
Use a paragraph with short and long sentences, names, numbers, and at least one emotional direction.
Signal Tank field guide
A practical route from your first generated line to a useful product decision.
01
Begin with the default voice. It gives you a clean baseline before reference selection changes the result.
Generate it unchanged and listen for clarity, pauses, warmth, and how the expression tags land.
Switch latency mode, speed, or voice—but only one at a time—so the comparison remains useful.
Compare the audio with first-byte time, completion time, and output size in Session takes.
02
| Source | Best for | What it needs |
|---|---|---|
| Default | First impressions | Nothing extra |
| Saved | Known account voices | A configured API key |
| Voice ID | Saved or public references | A compatible reference ID |
| Instant clone | Zero-shot comparison | Approved audio and exact transcript |
Use a clean recording of at least 10 seconds. Signal Tank accepts up to 4 MB and requires confirmation that the speaker approved the clone.
03
Use a paragraph with short and long sentences, names, numbers, and at least one emotional direction.
Use the conversational preset at normal and low latency. Listen for pace as well as total response time.
Test content written by a fluent speaker. Check pronunciation, rhythm, and whether expression survives translation.
Hold the voice constant while changing speed, temperature, and diversity in small increments.
04
Create .env in the repository root—the same folder as package.json.
SIGNAL_TANK_API_KEY=your_voice_api_key
PORT=3000
Then install and start the project:
npm install
npm start
Open 127.0.0.1:3000. The browser never receives the API key.
05
The lab posts multipart form data to the server. A minimal browser request looks like this:
const form = new FormData();
form.set("text", "Hello from Signal Tank.");
form.set("voiceMode", "default");
form.set("format", "mp3");
form.set("latency", "balanced");
const response = await fetch("/api/tts", {
method: "POST",
body: form,
});
const audio = new Audio(URL.createObjectURL(await response.blob()));
audio.play();
Use GET /api/voices for account-owned voice IDs. Signal Tank keeps model selection and credentials on the server.
06
Signal Tank does not persist scripts, generated audio, or uploaded reference recordings. Generated takes disappear when the page refreshes.
An upstream processing partner may retain requests. Do not submit confidential text, and clone a voice only when the speaker has explicitly approved that use.