MERaLiON-OmniVoice-Hokkien-TTS is a fine-tuned text-to-speech model that generates natural-sounding Singapore Hokkien (Southern Min / 闽南语) speech from Chinese character input. It is built on OmniVoice and fine-tuned on Hokkien conversational data using SFT (Supervised Finetuning) and GRPO (Group Relative Policy Optimization).
Hokkien is an under-resourced language in the TTS space. Many Chinese TTS systems produce Mandarin pronunciation even when given Hokkien text written in Chinese characters. This model addresses that gap by generating speech with authentic Hokkien pronunciation, tones, and prosody.
Model Details
Attributes
Details
Base model
OmniVoice
Fine-tuning method
SFT + GRPO
Language
Singapore Hokkien (Southern Min / 闽南语)
Input
Chinese characters (汉字), with support for Malay/English loanwords
For best results, provide a short reference audio clip (3-8 seconds) of the target speaker along with its transcript. The model will clone the speaker's voice characteristics.
python
1import torch
2import soundfile as sf
3from omnivoice.models.omnivoice import OmniVoice
45model = OmniVoice.from_pretrained(6"MERaLiON/MERaLiON-OmniVoice-Hokkien-TTS",7 device_map="cuda:0",8 dtype=torch.float16,9)1011# Create a reusable voice clone prompt (process once, use many times)12voice_prompt = model.create_voice_clone_prompt(13 ref_audio="path/to/reference_speaker.wav",14 ref_text="Reference transcript in Hokkien",15)1617# Generate with the cloned voice18text ="你阿母煮的菜真好食"19audios = model.generate(20 text=text,21 language="nan",22 voice_clone_prompt=voice_prompt,23)24sf.write("output.wav", audios[0], model.sampling_rate)
Tips:
Use a clean, single-speaker reference clip at 16kHz mono WAV.
The reference text should match what is spoken in the reference audio.
language="nan" specifies Southern Min (ISO 639-3 code for Hokkien).
create_voice_clone_prompt() encodes the reference once; reuse the returned prompt across multiple generations to avoid redundant processing.
Evaluation
We conducted a systematic evaluation comparing MERaLiON-OmniVoice-Hokkien-TTS against six other TTS systems on a benchmark of 25 Hokkien sentences. The evaluation covers four complementary dimensions: language correctness, transcription accuracy, perceived naturalness, and signal quality.
Test Set
The test set consists of 25 Singapore Hokkien sentences written in Chinese characters, ranging from short phrases (3-4 characters) to complex sentences (20+ characters). They cover everyday topics — greetings, directions, medical, food — and include Malay loanwords (e.g., "suka") that are characteristic of Singapore Hokkien.
We plan to expand evaluation with a lager phonetically-balanced test set and human MOS in future updates.
Full test set (25 sentences)
ID
Text
001
你阿母煮的菜真好食
002
伊走了真紧
003
这件代志真要紧
004
我明仔载要去做工
005
你为啥物毋来?
006
按呢袂使
007
囡仔佇外口咧耍
008
怹已经食过饭矣
009
我毋知影
010
你佇佗位?
011
找个时间共去呷杯咖啡讲古
012
週末去超市買點物件,順便去公園
013
毋通只顧做工,多飲水,較少熬夜
014
你出门能顺便帮我把快递投进柜子里吗?
015
我最近胃口袂好,想食點清淡个
016
我个手机快毋着电矣,汝带充电宝无?
017
下晡通常會落陣雨,出門記得帶雨傘,免著濕
018
汝看那间店排队排恁长,味道一定好,咱袂是也去凑热闹?
019
伊刚才突然肚痛真厉害,咱紧送佗去老君处看老君
020
我头痛,老君几点来?
021
我 suka 食炒粿条!
022
阿婆,起来食药了!
023
我打电话给你囡仔好无?
024
你佗位有痛无?
025
汝食飽未?
Compared Systems
System
Type
Description
MERaLiON-OmniVoice-Hokkien-TTS
Local
Our fine-tuned model (this card)
OmniVoice Original
Local
Base OmniVoice without Hokkien fine-tuning
CosyVoice3 0.5B
Local
Alibaba's CosyVoice3 with zero-shot voice cloning
Qwen3 TTS
Local
Alibaba's Qwen3-based TTS
Qwen3 TTS Flash
Cloud API
Alibaba Cloud's Qwen3 TTS Flash endpoint
CosyVoice
Cloud API
Alibaba Cloud's CosyVoice endpoint
All local models used the same Hokkien reference audio for voice cloning where supported.
Metrics
1. Language Identification (LangID)
What: An audio-based classifier determines whether each generated utterance sounds like Hokkien or Mandarin.
Why: The core challenge for Hokkien TTS is that most systems default to Mandarin pronunciation when reading Chinese characters. A model that produces Mandarin speech — regardless of how accurate or natural it sounds — has fundamentally failed at the task. LangID is therefore a gate metric: it tells us whether the model is even attempting the right language.
How:Qwen 3.5 Omni Plus listens to each audio clip and classifies it as Hokkien or Mandarin based on pronunciation and tonal patterns (not text content). The prompt explicitly instructs the model to focus on phonetic features and to treat Singapore Hokkien loanwords as Hokkien.
We chose Qwen 3.5 Omni Plus over Gemini 3.1 Pro because the former performed better on Hokkien ASR based on our tests. This also influenced our choice of Qwen 3.5 Omni Plus for WER and Naturalness.
2. Word Error Rate (WER)
What: Character-level WER between the original text and an ASR transcription of the generated audio.
Why: WER measures whether the model is saying the right words. A low WER means the generated speech faithfully reproduces the input text. We compute character-level WER (each Chinese character is a token) because Hokkien text has no standard word segmentation.
How: We use two independent ASR systems for robustness:
Qwen 3.5 Omni Plus — prompted as a Hokkien transcription expert. Samples classified as Mandarin by LangID are penalized to WER=1.0 (since producing the wrong language is a total failure regardless of word accuracy).
MERaLiON-3-3B-ASR — a local multilingual speech model. We report both raw scores and scores with the same LangID penalty applied.
3. Naturalness (MOS-like)
What: A 1–10 rating of how natural and human-like each utterance sounds.
Why: A model can pronounce words correctly but still sound robotic, choppy, or unnatural. Naturalness captures the perceptual quality — prosody, rhythm, fluency, voice quality, and absence of artifacts — that determines whether the speech is pleasant to listen to.
How: Qwen 3.5 Omni Plus rates each clip on a 1–10 scale, evaluating prosody, fluency, voice quality, pronunciation correctness, and artifacts. The evaluator is prompted with expertise in Hokkien and Chinese dialects.
4. DNSMOS P.835
What: An objective signal-quality score (1–5 scale) predicted by Microsoft's DNSMOS model.
Why: DNSMOS provides a language-agnostic signal quality assessment. It measures speech distortion (SIG), background noise (BAK), and overall quality (OVRL) without any dependence on language understanding. This complements the LLM-based metrics by catching low-level audio quality issues (clipping, noise, codec artifacts) that a language model might overlook.
How: Microsoft's pre-trained ONNX model (P.835 framework) runs locally on each audio file. No API calls or language-specific configuration needed.
Results
Summary Table
System
LangID (↑)
WER-Qwen (↓)
WER-MERaLiON (↓)
Naturalness (↑)
DNSMOS (↑)
MERaLiON-OmniVoice-Hokkien-TTS
24/25
0.33
0.31
8.40
3.13
OmniVoice Original
17/25
0.61
0.64
3.00
3.28
CosyVoice3 0.5B
18/25
0.87
0.86
1.76
2.40
Qwen3 TTS
7/25
0.82
0.81
2.40
3.11
Qwen3 TTS Flash
25/25
0.40
0.44
8.12
3.07
CosyVoice (Cloud)
15/25
0.70
0.60
2.08
3.29
WER-Qwen and WER-MERaLiON both include the LangID penalty (Mandarin → WER=1.0).
DNSMOS is the Overall (OVRL) score on the P.835 scale (1–5).
Key Findings
MERaLiON-OmniVoice-Hokkien-TTS achieves the best overall balance across all metrics. It is a local model with near-perfect language identification (24/25 Hokkien), the lowest WER (0.33/0.31), the highest naturalness (8.40), and competitive DNSMOS (3.13). It performs well across both language-aware and language-agnostic evaluation dimensions.
Most general-purpose TTS systems fail at Hokkien. Qwen3 TTS produces Mandarin 72% of the time (7/25 Hokkien). CosyVoice3 and CosyVoice Cloud also frequently default to Mandarin pronunciation. These models achieve high DNSMOS scores because the audio is clean — but they are speaking the wrong language.
Qwen3 TTS Flash is a strong cloud baseline. It achieves 25/25 Hokkien identification, 0.40 WER, 8.12 naturalness, and 3.07 DNSMOS. However, it requires API access and is not available for local deployment.
The Qwen naturalness evaluator is language-aware. Unlike Gemini Flash (which rated all models 8+), Qwen 3.5 Omni Plus assigns low naturalness scores (1.76–3.00) to models that produce Mandarin instead of Hokkien. This suggests it evaluates pronunciation correctness as part of naturalness, making it a more discriminating evaluator for dialect TTS.
Two independent ASR systems agree on rankings. The Qwen-based and MERaLiON-based WER scores produce consistent rankings when the LangID penalty is applied, lending confidence to the results despite the absence of a dedicated Hokkien ASR ground truth.
Detailed DNSMOS Breakdown
System
Overall (↑)
Signal (↑)
Background (↑)
MERaLiON-OmniVoice-Hokkien-TTS
3.13
3.39
4.04
OmniVoice Original
3.28
3.51
4.13
CosyVoice3 0.5B
2.40
2.96
3.23
Qwen3 TTS
3.11
3.43
4.01
Qwen3 TTS Flash
3.07
3.37
3.97
CosyVoice (Cloud)
3.29
3.53
4.09
Evaluation Limitations
No human evaluation. All subjective metrics (LangID, WER, naturalness) rely on LLM judges or ASR models, which may have systematic biases.
Small test set. 25 sentences provide directional signal but are not sufficient for statistical significance claims.
No dedicated Hokkien ASR. Both WER evaluators (Qwen, MERaLiON) were not specifically trained for Hokkien transcription, so absolute WER values should be interpreted as relative comparisons rather than ground truth error rates.
Single-speaker evaluation. All voice-cloned models use the same reference speaker. Results may vary with different reference voices.
Citation
If you use this model or evaluation framework, please cite and attribute this work by linking back to this repository: