Story-to-Music Lyricist (Müzik Metadata → Türkçe Şarkı Sözü)

google/mt5-small'un müzik metadata'sından Türkçe şarkı sözü üreten fine-tuned versiyonu. [Verse], [Chorus], [Bridge], [Outro] yapısal etiketleri ile. Story-to-Music MCP projesinin "Lyricist" bileşeni.

Görev

Metadata verildiğinde model yapılandırılmış şarkı sözleri üretir:

Girdi:

Türkçe şarkı sözü yaz: duygu=özlem, enerji=4, tempo=80 BPM, ton=A minor,
enstrümanlar=ney, saz, vokal=erkek, kısık, dramatik

Çıktı:

[Verse 1]
Gecenin parıltısı, yağmur dolu yüze
Gökyüzünde kafama bakıyor
İnsanın ötesinde bir çocuk gibi

[Chorus]
Güneşin içinde kalan benim parçam

[Bridge]
Rüzgarın içindeki yıldızlar
Yağmur suları dumanla oynarken
...

Kullanım

⚠️ Sampling parametreleri kritik. Beam search mode collapse'e neden olur (model aynı çıktıyı verir veya [Outro][Outro][Outro] döngüsüne girer). Aşağıdaki parametreleri kullan:

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

tokenizer = AutoTokenizer.from_pretrained("bugrayildirim/story-to-music-lyricist")
model = AutoModelForSeq2SeqLM.from_pretrained("bugrayildirim/story-to-music-lyricist")

prompt = (
    "Türkçe şarkı sözü yaz: duygu=hüzün, enerji=4, tempo=72 BPM, ton=A minor, "
    "enstrümanlar=ney, keman, piyano, vokal=erkek, kısık, dramatik"
)

inputs = tokenizer(prompt, return_tensors="pt", max_length=64, truncation=True)
outputs = model.generate(
    **inputs,
    max_new_tokens=350,
    do_sample=True,           # ZORUNLU — beam search collapse yapar
    num_beams=1,
    temperature=0.9,
    top_p=0.9,
    top_k=50,
    no_repeat_ngram_size=3,
    repetition_penalty=1.3,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

Eğitim

  • Base model: google/mt5-small (556M parametre)
  • Veri: 4062 Türkçe şarkı sözü örneği:
    • 342 ham (Genius API'den)
    • 3720 Ollama (qwen2.5:7b) tarafından augment edilmiş (5 farklı "lens" prompt)
  • Eğitim: Kaggle T4 GPU, 12 epoch, eval_loss 2.82'ye düştü
  • Önemli: fp16=False, BATCH_SIZE=1, GRAD_ACCUM=16, MAX_TARGET_LEN=384, gradient checkpointing aktif

Detaylar: training/story_to_music_lyrics_train.ipynb

Performans (eval, sampling parametreleriyle)

  • Yapısal tag (Verse/Chorus): 100%
  • Türkçe karakter oranı: ~12% (sağlıklı)
  • Dejenere loop yok: >%90
  • Çeşitlilik (aynı girdi → farklı çıktı): var

Limitations

  • mT5-small kapasite tavanı: Gramer çoğunlukla doğru, ama anlamsal akıcılık zayıf. "Şair seviyesi" değil; Suno/Udio kendi yorumunu kattığı için kullanılabilir.
  • Duygu çeşitliliği: hüzün/özlem/aşk net, öfke/neşe zayıf (augment dataset bias'ı)
  • CPU inference: ~30-60 saniye, GPU'da 3-5 saniye
  • Sampling zorunlu. Beam search ile çalıştırırsan mode collapse görürsün

Lisans

MIT. Eğitim verisi olarak kullanılan şarkı sözlerinin telif hakları orijinal sahiplerine aittir. Story-to-Music MCP projesi inference sırasında Jaccard benzerlik kontrolüyle (eşik 0.35) ezberlemeyi engeller.

Atıf

@misc{story-to-music-lyricist,
  author = {Buğra Yıldırım},
  title = {Story-to-Music Lyricist: Metadata to Turkish song lyrics},
  year = {2026},
  publisher = {Hugging Face},
  howpublished = {\url{https://huggingface.co/bugrayildirim/story-to-music-lyricist}},
}
Downloads last month
43
Safetensors
Model size
0.6B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for bugrayildirim/story-to-music-lyricist

Base model

google/mt5-small
Finetuned
(684)
this model

Space using bugrayildirim/story-to-music-lyricist 1