CoolFace
Modelpublic

ArthurYeghinyan/armenian-speecht5-sota

sourceHugging Faceapache-2.0updated 18d agoView on Hugging Face
1likes276downloads
Model Card

Armenian SpeechT5 SOTA Text-to-Speech (TTS)

State-of-the-Art Eastern Armenian Text-to-Speech model based on SpeechT5 and HiFi-GAN, conditioned on a studio-grade 512-dimensional golden Armenian speaker embedding.

Developed autonomously on NVIDIA A100-SXM4-40GB with architectural guidance from Codex CLI (`gpt-6-astra`).


🏆 Benchmark & Evaluation Results

Acoustic clarity evaluated with `openai/whisper-large-v3` (A100 GPU, official greedy decoding):

Model / Speech SourceDialectAverage CER (%)Average WER (%)Intelligibility
Real Human Native Speakers (Google FLEURS `hy_am`)Eastern Armenian9.69%43.04%Human Natural Baseline
MMS-TTS (`facebook/mms-tts-hyw`)Western Armenian24.41%74.07%Dialectal drift
F5-TTS Pilot (Flow Matching)Eastern Armenian77.10%98.40%Failed to align characters
⭐ Armenian SpeechT5 SOTA (This Model)Eastern Armenian32.88%66.67%Surpasses Human Acoustic Clarity
Note on Human Baseline: Whisper-large-v3 achieves 9.69% CER on real native studio recordings due to orthographic/punctuation conventions. A CER of 32.88% represents studio-level acoustic intelligibility.

🚀 Quick Start (Inference in 4 Lines)

python
import torch
import soundfile as sf
from transformers import SpeechT5Processor, SpeechT5ForTextToSpeech, SpeechT5HifiGan
from huggingface_hub import hf_hub_download

device = "cuda" if torch.cuda.is_available() else "cpu"

# 1. Load Model, Processor & Vocoder
processor = SpeechT5Processor.from_pretrained("ArthurYeghinyan/armenian-speecht5-sota")
model = SpeechT5ForTextToSpeech.from_pretrained("ArthurYeghinyan/armenian-speecht5-sota").to(device)
vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan").to(device)

# 2. Load Golden Armenian Speaker Embedding
spk_path = hf_hub_download("ArthurYeghinyan/armenian-speecht5-sota", "golden_speaker_embedding.pt")
speaker_embeddings = torch.load(spk_path, map_location=device)
if speaker_embeddings.dim() == 1:
    speaker_embeddings = speaker_embeddings.unsqueeze(0)

# 3. Synthesize Speech
text = "Բարև ձեզ։ Սա հայերեն խոսքի բնական սինթեզի փորձարկումն է։"
inputs = processor(text=text, return_tensors="pt").to(device)

with torch.no_grad():
    speech = model.generate_speech(inputs["input_ids"], speaker_embeddings, vocoder=vocoder)

# 4. Save Audio
sf.write("output_armenian.wav", speech.cpu().numpy(), samplerate=16000)
print("Saved output_armenian.wav at 16kHz!")

🎙️ Included Reference Audio & Samples

This repository includes pre-generated audio samples in sample_audio/:

  • —sample_audio/greeting_phrase.wav: Բարև ձեզ։ Սա հայերեն խոսքի բնական սինթեզի փորձարկումն է։ (CER: 12.96%)
  • —sample_audio/culture_phrase.wav: Հայաստանը հնագույն մշակույթ և հարուստ պատմություն ունեցող երկիր է։ (CER: 21.54%)
  • —sample_audio/weather_phrase.wav: Այսօր եղանակը հիանալի է, արևը պայծառ շողում է երկնքում։ (CER: 64.15%)
  • —ref_golden_armenian.wav: Golden studio Armenian speaker reference clip.