whatmodel.sh / tts / Pheme 300M

Pheme 300M is an open-weights text-to-speech model from PolyAI, released January 2024. Its published size is 0.3B parameters. Licence: cc-by-4.0.

Catalogue identity notes

PolyAI/pheme, which the Pheme README describes as 'the larger version (300M)' (the 100M variant is PolyAI/pheme_small). Repository licence CC-BY-4.0.

37.4±3.3#92 of 118 text-to-speech modelsfrom 4 benchmark results across 3 sources

Score within the Vapi Humanness · Bradley–Terry rating, 2026-09-25 snapshot comparison set only.

$ how it compares

The text-to-speech models ranked either side of Pheme 300M, out of 148 with a score.

#modelscorewhereRAMreleased
115Maya1 Maya Research38±6local~6.7GB2025-11
116Gemini 3.8 Flash TTS Google37±3api price unknown2026-09
117Pheme 300M PolyAI37±3local~3.6GB2024-01
118VoiceCraft 830M TTSEnhanced Puyuan Peng et al. (UT Austin)37±8local~4.5GB2024-04
119Gemini 3.8 Flash-Lite TTS Google37±3api price unknown2026-09

see all text-to-speech models · find the ones that fit your machine

$ what it's good at

other tests4 not in a task · 96% of its score
testresultvs the others in its rundifficultycountswhy
TTSDS2 listening test · speaker-similarity MOS (4 English domains)3.35 / 5 ✎▅·█▅▅·█▃▃▅·▅ beats 9/17easy · avg 4.03 / 5▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 82%at its level
TTSDS2 listening test · naturalness MOS (4 English domains)2.99 / 5 ✎▅··▃▅··▅█▅██ beats 8/17medium · avg 3.30 / 5▇▇▇ 7.2%blunt · at its level
TTSDS2 multilingual benchmark · English overall (YouTube, 2025 round)87.1% ✎▂▂█·▂·█▆▂·▄▂ beats 12/17very easy · avg 89%▇▇ 5.3%blunt
TTSDS v1 · default four-factor score84.9% ✎▂▂····▃·▃▅▂█ beats 6/14very easy · avg 86%▇ 1.0%blunt

$ where to run it

Other ways to run it

  1. Run it as published · needs ~3.6 GB, NVIDIA only · from github.com/PolyAI-LDN
    git clone https://github.com/PolyAI-LDN/pheme && cd pheme && conda create --name pheme3 python=3.10 && conda activate pheme3 && pip3 install torch torchvision torchaudio && pip3 install -r requirements.txt --no-deps && mkdir -p ckpt/speechtokenizer && wget -P ckpt/speechtokenizer "https://huggingface.co/fnlp/SpeechTokenizer/resolve/main/speechtokenizer_hubert_avg/SpeechTokenizer.pt" "https://huggingface.co/fnlp/SpeechTokenizer/resolve/main/speechtokenizer_hubert_avg/config.json" && wget -P ckpt "https://huggingface.co/fnlp/USLM/resolve/main/USLM_libritts/unique_text_tokens.k2symbols" && export HUGGING_FACE_HUB_TOKEN=YOUR_PRIVATE_TOKEN && git clone https://huggingface.co/PolyAI/pheme ckpt/pheme && mkdir -p ckpt/t2s ckpt/s2a && mv ckpt/pheme/config_t2s.json ckpt/t2s/config.json && mv ckpt/pheme/generation_config.json ckpt/t2s/generation_config.json && mv ckpt/pheme/t2s.bin ckpt/t2s/pytorch_model.bin && mv ckpt/pheme/config_s2a.json ckpt/s2a/config.json && mv ckpt/pheme/s2a.ckpt ckpt/s2a/s2a.ckpt && python transformer_infer.py

Official weights and documentation: huggingface.co/PolyAI ↗

$ how the score was worked out · TTSDS2 listening test results… 89%, TTSDS2 multilingual benchmark… 5%, TTSDS v1 published results 1%

Each result implies a score on its own, after adjusting for how hard its test is and who ran it. The score is their weighted average, with a small pull toward the middle for thinly tested models. Each test's weight is its counts column above; here it's added up by who ran the tests. How it works

sourceresultsshare of the scorelicence
TTSDS2 listening test results (ttsds/listening_test)2▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 89%MIT
TTSDS2 multilingual benchmark results (ttsds/leaderboard_data)1▇▇ 5%MIT
TTSDS v1 published results1▇ 1%MIT
prior · pull toward the middle▇ 4%
weighted average= 37.4

$ improve this page

Use a short GitHub form or edit the data through a pull request. Every number needs a source; here's which ones we can use.

data updated · sources and licences · json