Vietnamese Text to Speech & Voice Cloning avatar

Vietnamese Text to Speech & Voice Cloning

Pricing

Pay per usage

Go to Apify Store
Vietnamese Text to Speech & Voice Cloning

Vietnamese Text to Speech & Voice Cloning

Vietnamese text to speech at studio quality: 23 built-in voices (North, Central, South accents, male and female), voice cloning from a 3-8 second clip, English-Vietnamese mixed text and emotion cues. MP3, WAV and Opus output. No rental fee - you pay Apify compute only.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Andrew Babo

Andrew Babo

Maintained by Community

Actor stats

0

Bookmarked

60

Total users

18

Monthly active users

3 days ago

Last modified

Categories

Share

Vietnamese Text to Speech & Voice Cloning (VieNeu-TTS v3 Turbo)

Powered by the open-source VieNeu-TTS model by Phạm Nguyễn Ngọc Bảo (@pnnbao97, Apache-2.0). Andrew Babo only packages and speed-optimises it for Apify — see Credits & source. No rental or usage fee: you pay Apify compute only.

Turn Vietnamese text into natural, studio-clean 48 kHz speech — with 23 built-in Vietnamese voices (North / Central / South accents, male & female), zero-shot voice cloning from a 3–8 second clip, English–Vietnamese code-switching, and inline emotion cues. Runs on CPU only, so it is cheap to run at scale on Apify.

Keywords: Vietnamese text to speech, Vietnamese TTS API, giọng đọc tiếng Việt AI, AI voice generator Vietnamese, voice cloning tiếng Việt, text to speech MP3, TTS for YouTube/TikTok voiceover.

What you can build

  • YouTube, TikTok and Reels Vietnamese voiceovers
  • Audiobooks and story narration (doc_truyen style voices)
  • News reading and e-learning narration (tin_tuc style voices)
  • IVR prompts, notifications and accessibility read-aloud
  • Cloned brand/personal voice for repeatable content

Quick start

{
"text": "Xin chào, đây là giọng đọc tiếng Việt tự nhiên do AI tạo ra.",
"voice": "Adam",
"format": "mp3"
}

Run it from the API:

curl -X POST \
"https://api.apify.com/v2/acts/andrew_babo~vieneu-tts/runs?token=$APIFY_TOKEN&waitForFinish=180" \
-H "Content-Type: application/json" \
-d '{"text":"Xin chào, đây là giọng nói tiếng Việt.","voice":"Trúc Ly","format":"mp3"}'

The audio file lands in the run key-value store (audio.wav / audio.mp3 / audio.ogg) and one dataset row carries audio_url plus timing metrics.

Voice IDs (23 built-in Vietnamese voices)

Pass the exact name in the voice field (Vietnamese diacritics included). Default: Adam.

Voice IDGenderAccent (region)Style
Adam (default)MaleSouth (Nam)Natural — tự nhiên
Phạm TuyênMaleNorth (Bắc)Natural — tự nhiên
Xuân VĩnhMaleNorth (Bắc)Natural — tự nhiên
Mạnh DũngMaleNorth (Bắc)Natural — tự nhiên
Minh QuânMaleNorth (Bắc)Natural — tự nhiên
Quang SơnMaleCentral (Trung)Natural — tự nhiên
Minh ĐứcMaleNorth (Bắc)News — tin tức
Minh TriếtMaleSouth (Nam)News — tin tức
Thanh BìnhMaleNorth (Bắc)Storytelling — kể chuyện
Anh KhôiMaleNorth (Bắc)Storytelling — kể chuyện
Thái SơnMaleSouth (Nam)Storytelling — kể chuyện
Đức TríMaleSouth (Nam)Audiobook — đọc truyện
Trúc LyFemaleNorth (Bắc)Natural — tự nhiên
Đoan TrangFemaleNorth (Bắc)Natural — tự nhiên
Ngọc HuyềnFemaleNorth (Bắc)Natural — tự nhiên
Ngọc TrânFemaleCentral (Trung)Natural — tự nhiên
Mai AnhFemaleNorth (Bắc)News — tin tức
Thùy DungFemaleSouth (Nam)News — tin tức
Ngọc LinhFemaleNorth (Bắc)Storytelling — kể chuyện
Thục ĐoanFemaleSouth (Nam)Storytelling — kể chuyện
Quỳnh AnhFemaleNorth (Bắc)Audiobook — đọc truyện
Mỹ DuyênFemaleSouth (Nam)Audiobook — đọc truyện
Kim ThanhFemaleSouth (Nam)Audiobook — đọc truyện

Picking a voice:

  • Ads / social videos: Adam, Trúc Ly, Thùy Dung
  • News / corporate: Minh Đức, Mai Anh, Minh Triết
  • Story & audiobook: Thái Sơn, Ngọc Linh, Quỳnh Anh, Kim Thanh
  • Central accent: Quang Sơn, Ngọc Trân

If a voice name is misspelled the run fails with the full list of valid IDs.

Voice cloning (zero-shot, no training)

Give a public URL to a clean reference clip and the model speaks any Vietnamese text in that voice. Cloning overrides voice.

{
"text": "Đây là giọng đã được nhân bản từ đoạn ghi âm mẫu.",
"ref_audio_url": "https://example.com/reference.wav",
"denoise": true,
"format": "wav"
}

Reference clip checklist:

RequirementRecommendation
Length3–8 seconds (6 s is the sweet spot)
ContentOne speaker, natural sentences, no music or background voices
FormatWAV or MP3, mono, 16 kHz or higher, no heavy compression
DeliveryRecord in the emotion you want — emotion is transferred from the clip, not from a parameter
HostingDirect-download URL (S3, key-value store, CDN). Google Drive share links do not work.
ConsentOnly clone voices you own or have written permission to use

denoise: true (default) cleans hiss and room noise before enrollment. Turn it off if your clip is already studio-quality and sounds over-processed after cloning.

Cloning tips:

  • Same clip = consistent voice across many runs, so store it once and reuse the URL.
  • A clip recorded cheerfully clones a cheerful voice; a calm clip clones a calm voice.
  • Clips shorter than ~3 s or longer than ~10 s reduce similarity.

Emotion cues (Vietnamese, exactly 3 supported)

Write cues inline in the text:

CueAlso acceptedEffect
[cười][cuoi], [laugh], [chuckle], [haha]Laughter
[thở dài][tho dai], [sigh], [breath]Sigh
[hắng giọng][hang giong], [clear throat], [cough]Throat clear

Example:

Mình không tin nổi chuyện đó [cười]. Thôi kể tiếp nhé [hắng giọng].

Any other bracketed tag ([buồn], [khóc], [hét], …) is not an emotion. The actor strips unknown tags and reports them in the warnings field of the dataset row instead of reading them aloud.

Tone presets and inline directives

tone sets delivery style (it fills temperature / speed only when you did not set them yourself):

toneFeel
tự nhiênNatural (default)
trầmCalm, slower
nhẹ nhàngGentle
kể chuyệnStorytelling
vuiCheerful
hào hứngExcited
trang trọngFormal / news

Inline directives inside text (sticky until the next marker):

[tone: vui] Chào cả nhà, tin vui đây! [pause: 1s] [tone: trầm] Nhưng có một điều cần lưu ý.

[pause] inserts 0.5 s; [pause: 1s] inserts a custom silence (0.05–10 s).

Input reference

FieldTypeDefaultDescription
textstringrequiredVietnamese or Vi/En mixed text, up to 10,000 characters.
voiceenumAdamOne of the 23 voice IDs above.
ref_audio_urlstringReference clip URL for voice cloning; overrides voice.
denoisebooleantrueClean the reference clip before enrollment.
toneenumtự nhiênDelivery preset (table above).
expressivenessenummediumlow / medium / high. Overridden by temperature.
temperaturenumber0.80.1–1.5. Higher = more expressive, less stable.
speedstring1.01.2 ≈ 20% faster.
pitch_preservebooleantrueChange speed without the chipmunk effect.
precisionenumautofp32 (cleanest) / int8 (fastest) / auto follows quality.
qualityenumsmoothsmooth = seamless single pass for short text; fast = parallel, slightly faster.
single_passbooleanfalseForce one engine to render the whole text.
trim_silencebooleanautoTrim edge silence; auto-off when emotion cues are present.
formatenumwavwav 48 kHz PCM, mp3 128 kbps, opus 64 kbps.

Output

{
"audio_url": "https://api.apify.com/v2/key-value-stores/<store-id>/records/audio.mp3",
"engine": "vieneu-v3-turbo",
"chars": 49,
"chunks": 1,
"duration_s": 5.8,
"load_ms": 7300.0,
"synth_ms": 2900.0,
"ms_total": 10300.0,
"rtf": 0.5,
"peak_ram_mb": 1100.0,
"cores": 4,
"sample_rate": 48000,
"bytes": 556844,
"format": "mp3"
}

rtf < 1 means synthesis is faster than realtime. warnings appears only when unknown bracketed tags were removed.

Standby mode (low-latency API)

Enable Standby to keep the model warm and skip the ~15–40 s cold model load:

curl -X POST "https://<actor-standby-url>/" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"text":"Xin chào từ chế độ Standby.","voice":"Mai Anh","format":"mp3"}' \
--output speech.mp3

The response body is the audio file; timing metrics come back in the X-TTS-Metrics header. Warm requests typically run 7–13 s for a short sentence on a 16 GB / 4 vCPU container.

Performance and cost notes

  • CPU-only: no GPU required, 16 GB memory recommended (4 GB minimum).
  • int8 is the fastest mode; fp32 is the reference-fidelity mode.
  • Long narration: keep the whole passage in one run for prosody continuity, or split at sentence boundaries client-side and join with a short pause.

Limitations

  • Vietnamese-first. English words inside Vietnamese sentences work; full English paragraphs are better served by an English TTS actor.
  • Emotion cues are experimental model behaviour, not guaranteed on every sentence.
  • Cloning quality depends heavily on the reference clip.
  • Cold start pays the model load once per container.

Credits & source

The underlying model and Python library are not the work of the Actor publisher.

Original author: Phạm Nguyễn Ngọc Bảo — Speech AI Specialist and Medical NLP Researcher (Nhân dân Gia Định Hospital, Ho Chi Minh City, Vietnam), creator and maintainer of VieNeu-TTS.

ResourceLink
Author (GitHub)https://github.com/pnnbao97
Source repositoryhttps://github.com/pnnbao97/VieNeu-TTS
Models (Hugging Face)https://huggingface.co/pnnbao-ump/VieNeu-TTS
Python packagehttps://pypi.org/project/vieneu/
Project websitehttps://www.vieneu.io

Model lineage: VieNeu-TTS is built on the neuphonic/neutts-air base and trained on the author's own Vietnamese speech datasets (pnnbao-ump/VieNeu-TTS-140h, then VieNeu-TTS-1000h); later v2/v3 lines add bilingual English–Vietnamese data and podcast-style multi-speaker support. This Actor runs the v3 Turbo line through the official vieneu package. Released under the Apache License 2.0.

What Andrew Babo did: Andrew Babo is not the model author. His role is to package VieNeu-TTS as an Apify Actor and optimise it for fast CPU inference on the Apify platform — a warm multi-engine pool, int8/fp32 precision selection, chunking and seam levelling for smooth joins, Standby warm start to cut cold-load time, inline tone / pause directives, emotion-cue validation, and MP3/Opus export.

Pricing: this Actor charges no rental and no usage fee. You pay only Apify platform compute for the time your run consumes.

VieNeu-TTS weights, preset voices and the vieneu library are distributed by the original author under the Apache License 2.0; the copyright stays with Phạm Nguyễn Ngọc Bảo. Keep that attribution if you redistribute anything derived from this Actor, and review the upstream model card and dataset terms before commercial distribution. For cloning, use only recordings you own or are authorized to process — do not impersonate anyone without permission.