Nodes/Antalia-2 Mini Turkish TTS for ComfyUI/Antalia-2 Mini Speak (Turkish TTS)
ComfyUI Node

Antalia-2 Mini Speak (Turkish TTS)

Antalia-2 Mini Speak Reads Your Turkish Out Loud in 0.06 Seconds

By hiroki-abe-58·Created 24 days ago·Updated 24 days ago· 5
Antalia-2 Mini Speak (Turkish TTS)
  • model
  • audio
  • spoken_text
  • report
◄textMerhaba, size nasıl yardımcı olabilirim?►
◄seed0►
◄speed0.95►
◄steps8►
◄cfg2.0►
◄sample_rate48000►
◄eqtrue►

The number that matters here isn't a quality claim, it's a speed one. A 3.4-second Turkish sentence takes 0.06 seconds on a 24-thread CPU; a 17.7-second paragraph takes 0.26. On an RTX 5090 it's 0.06 and 0.14. That's not "faster than real time," that's done before you let go of the mouse - and it's why this node is worth knowing even though it makes one voice, in one language.

Antalia-2 Mini Speak (Turkish TTS) turns a text box into a ComfyUI AUDIO plus the text as the model actually reads it. No API key, no cloud call, 46 MB of weights.

Where a single-language TTS earns its place

Open TTS is English-first - Kokoro and Piper for compute ("best voice per unit of compute, not best voice"), Chatterbox, Higgs Audio and F5-TTS for quality - and nearly all of it assumes English, or assumes you'll clone a voice to get somewhere. Ask for Turkish and the conversation gets thin: "try Coqui," "ElevenLabs is decent but pricier for non-English," and one person who'd trained Piper for a customer-service product reporting that "none of the customers liked the quality."

So the niche is real. Antalia-2 Mini is 7.6M parameters, one synthetic male voice, 48 kHz, and the model card puts its intelligibility level with EMA Lightning - the other small Turkish model - on a Turkish eval set (WER 1.02 vs 1.00%), better in the 8 kHz band, slightly lower full-band UTMOS. That's "competitive with the other dedicated Turkish option," not "better than Chatterbox." No cloning, no voice choice - that's the trade.

How it works

It's the official pipeline in a ComfyUI wrapper, which is why the audio is bit-identical to the package across the author's seven test cases. Your text hits the package's own normaliser first: numbers, dates, times, amounts, initialisms, web addresses and English or brand words all become their spoken Turkish form. Then a flow-matching acoustic model generates the audio (steps and cfg steer that), a vocoder turns it into a waveform, an EQ/de-esser stage tidies it, and lower sample rates get resampled. Long text is split into sentence-sized chunks and joined with short pauses. Same text, seed, settings and device give identical samples; CPU and GPU differ slightly (43–64 dB SNR) but each repeats exactly.

The inputs that matter

  • text - write it like a human, not a phoneme string. The shipped workflow opens with Randevunuz 14 Ekim Salı günü saat 15:30'da. Lütfen on dakika önce gelin. - date, weekday, clock time, all handled. Empty or unpronounceable text raises an error instead of returning silence.
  • seed - 0 to 2147483647, with a control-after-generate widget; set it fixed if re-queueing should give you the same audio.
  • speed - 0.5 to 2.0, default 0.95, slightly slower than the voice's own pace. The one dial I'd actually touch: 0.88 for a calmer read, 1.05 if a line drags.
  • steps - 1 to 32, default 8. The tooltip says 4 is "faster and measurably less accurate," and the whole render takes a tenth of a second, so leave it. Same for cfg (1 to 5, default 2.0, where 1 turns guidance off): default, don't fiddle.
  • sample_rate - 48000 native, or 24000 / 16000 / 8000 for telephone. Pick by destination: 48k for video, 8k for a phone-line scene or the radio effect.
  • eq - the release's EQ and de-esser, on by default. Off gives raw vocoder output, which you'd want only if you're processing it yourself downstream.

The outputs

audio is mono AUDIO, waveform [1, 1, samples], so it drops into Save Audio (Advanced) or Preview Audio and into anything downstream that takes AUDIO. spoken_text is the normaliser's reading - Saat 15:30'da comes back as saat on beş otuzda - the fastest way to catch a mispronunciation without listening. report is a JSON string with the seed, audio_seconds, wall-clock seconds, device and settings: divide the durations and you have the real-time factor on your own box.

Install

Manager → Antalia-2 Mini Turkish TTS for ComfyUI, or from the ComfyUI root:

git clone https://github.com/hiroki-abe-58/ComfyUI-Antalia custom_nodes/ComfyUI-Antalia
python -m pip install -r custom_nodes/ComfyUI-Antalia/requirements.txt
python custom_nodes/ComfyUI-Antalia/tools/download_model.py --models-dir models/antalia

Then restart and open workflows/gui/speak.json from the pack (there's a speak_phone.json too, at 8 kHz). The only heavy dependency is antalia-mini==1.0.1, which pulls cmudict and soundfile - no torch upgrade, no transformers stack, which is rare enough in the audio corner of ComfyUI to be worth saying out loud. You need ComfyUI v0.38.0 or newer (this pack targets the V3 node API) and Python 3.10+.

Where people get burned

This isn't an English model. English words inside Turkish text are read the way a Turkish speaker says them - right for brand names, jarring if you expected otherwise. Whole English sentences are not the job.

Unreadable text is an error, not silence. An empty box or !!! raises and stops the batch, which beats a silent file you then debug for ten minutes.

The voice is synthetic, and the authors ask you to say so. The model card says it was trained on VoxCPM2-generated speech - no recordings of real speakers.

Don't compare CPU and GPU output files. They won't match. Pick one device per project.

On provenance, since "random pack" is a fair worry: hiroki-abe-58 is real ComfyUI tooling - they're behind ComfyUI-Win-Blackwell, the one-click Windows setup for RTX 50-series cards - and the same temperament shows here in pinned revisions, SHA-256 checks and a CI job that runs a real ComfyUI queue. The pack is MIT; antalia-mini and the weights are Apache-2.0 from PatientDesk AI; the integration is unofficial.

Categoryaudio/antalia

Inputs (8)

NameTypeDefaultDescription
modelANTALIA_MODEL—
textSTRINGMerhaba, size nasıl yardımcı olabilirim?—
seedINT00–2147483647—
speedFLOAT0.950.5–2speaking rate; 0.95 is the release default (slightly slower than the voice's own pace)
stepsINT81–32flow-matching steps; 8 is the release default, 4 is faster and measurably less accurate
cfgFLOAT2.01–5classifier-free guidance; 1 turns it off
sample_rateCOMBO4800048000 is native; 24000 / 16000 / 8000 (telephone) are resampled by the package
eqBOOLEANtruethe release's output EQ and de-esser; off gives the raw vocoder output

Outputs (3)

NameTypeDescription
audioAUDIO—
spoken_textSTRING—
reportSTRING—