🍬 Documentation Technique : Midya-v1 💕
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
- -
