🍬 Documentation Technique : Midya-v1 💕

Midya

Bienvenue dans la documentation officielle de Midya-v1, le premier Music-SLM conçu pour la génération de séquences MIDI avec une approche basée sur le crescendo. Ce modèle marque une étape expérimentale dans l'application des architectures SLM au domaine de l'audio symbolique.

🛠️ Présentation du Modèle

Midya-v1 a été entraîné spécifiquement sur des données MIDI. Contrairement aux modèles de langage textuel classiques, ce SLM traite les événements musicaux comme une suite de jetons (tokens) séquentiels, permettant une génération fluide et cohérente de mélodies.

  • Architecture : Fondée sur des principes de SLM "from scratch".
  • Domaine : Audio symbolique (MIDI).
  • Fonctionnalité clé : Génération spécialisée en crescendo.
  • Approche : Traitement de l'audio en tant que structure de données séquentielle.

#. 🚀 Guide d'Inférence

Pour utiliser Midya-v1, assurez-vous d'avoir installé les dépendances nécessaires (torch, transformers, mido). Prérequis pip install torch transformers mido

Script d'exécution Le code ci-dessous initialise le modèle et génère un fichier .mid basé sur une note initiale.

import torch
from transformers import AutoModelForCausalLM
from mido import MidiFile, MidiTrack, Message

# Initialisation du modèle
model_path = "Finisha-F-scratch/Midya-v1"
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = AutoModelForCausalLM.from_pretrained(model_path).to(device)
model.eval()

# Paramètres de génération
input_ids = torch.tensor([[60]], device=device) # Note de départ (Do central)

# Génération
with torch.no_grad():
    output_tokens = model.generate(
        input_ids,
        max_length=64,
        do_sample=True,
        temperature=1.2, # Ajuster pour varier la créativité
        top_k=50,
        top_p=0.95
    )

# Post-traitement MIDI
mid = MidiFile()
track = MidiTrack()
mid.tracks.append(track)

for note in output_tokens[0].tolist():
    note_val = max(0, min(127, int(note)))
    track.append(Message('note_on', note=note_val, velocity=70, time=150))
    track.append(Message('note_off', note=note_val, velocity=70, time=150))

mid.save('musique_generee.mid')

💡 Notes de l'Ingénieure

  • Température (temperature) : Une valeur de 1.2 est recommandée pour explorer la texture musicale du modèle. Augmentez cette valeur si vous cherchez des structures plus complexes ou imprévisibles.
  • Gestion des notes : Le modèle contraint les sorties dans l'espace MIDI standard ([0, 127]). Assurez-vous que votre lecteur MIDI interprète correctement les messages note_on et note_off.
  • Flexibilité : Midya-v1 est optimisé pour démontrer la faisabilité du concept. L'utilisation d'une architecture légère permet une itération rapide sur de nouveaux datasets MIDI propriétaires.
Downloads last month
-
Safetensors
Model size
25.8M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Collection including Finisha-F-scratch/Midya-v1