You need to agree to share your contact information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

Log in or Sign Up to review the conditions and access this model content.

Plapre Nano - Dansk Tekst-til-Tale

Dansk TTS-model med talerkonditionering og stemmekloningssupport. Genererer 24kHz lyd fra dansk tekst ved hjælp af autoregressiv lydtoken-prædiktion.

Modeldetaljer

Arkitektur SmolLM2-360M (LLaMA-baseret, 32 lag, hidden_size=960)
Parametre ~334.6M (base) + 123K (talerprojektion)
Vocab-størrelse 20.802 (8000 BPE + 12.800 lyd + separatorer)
Lydtokenizer Kanade (25 tokens/sek, 12.800 codebook)
Samplerate 24kHz
Præcision bfloat16

Sådan virker det

Modellen tager dansk tekst, konverterer den til BPE-tokens, og genererer autoregressivt Kanade-lydtokens, som afkodes til en lydbølge.

Sekvensformat:

[speaker_embedding] <text> BPE tokens <audio> audio tokens <eos>

Talerkonditionering: En indlært lineær projektion (nn.Linear(128, 960)) mapper en 128-dimensionel Kanade-talerembedding til modellens skjulte dimension. Denne indsættes som det første token i sekvensen, så modellen kan konditionere på taleridentitet via attention. Til stemmekloning udtrækkes talerembeddingen fra et referenceaudioklip via Kanade-encoderen.

Træningsdata

  • NST-DA
  • FTSpeech

Installation

uv add git+https://github.com/syv-ai/plapre.git

Inferens

Grundlæggende brug

from plapre import Plapre

tts = Plapre("syvai/plapre-nano")
tts.speak("Hej, hvordan har du det?", output="output.wav")

Vis tilgængelige talere

print(tts.list_speakers())
# ['tor', 'ida', 'liv', 'ask', 'kaj']

Vælg en taler

tts.speak("Hej med dig.", output="output.wav", speaker="ida")

Stemmekloning

tts.speak("Hej med dig.", output="cloned.wav", speaker_wav="reference.wav")

Lange tekster med sætningsopdeling

tts.speak(
    "Første sætning. Anden sætning. Tredje sætning!",
    output="long.wav",
    split_sentences=True,
)

Genereringsparametre

tts.speak(
    "Hej verden.",
    output="output.wav",
    temperature=0.8,     # sampling-temperatur (standard: 0.8)
    top_p=0.95,          # nucleus sampling (standard: 0.95)
    top_k=50,            # top-k sampling (standard: 50)
    max_tokens=500,      # maks lydtokens at generere (standard: 500)
)

Udtræk en talerembedding

Udtræk en 128-dim talerembedding fra en wav-fil og genbrug den på tværs af flere genereringer:

speaker_emb = tts.extract_speaker("reference.wav")
tts.speak("Hej.", output="a.wav", speaker_emb=speaker_emb)
tts.speak("Farvel.", output="b.wav", speaker_emb=speaker_emb)

Returværdi

speak() returnerer lyden som et numpy-array (24 kHz, float32) ud over at gemme filen:

audio = tts.speak("Hej.", output="output.wav")
print(f"Varighed: {len(audio) / 24000:.2f}s")
Downloads last month
829
Safetensors
Model size
0.3B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support