0

J'ai une application de traitement audio qui prend un fichier audio d'entrée, le traite et crache un fichier audio de sortie modifié. Cette application de traitement audio a 10-15 paramètres qui affectent la façon dont elle traite l'audio, et affecte donc le contenu du fichier audio de sortie (il peut avoir, disons, une réponse en fréquence différente, être plus fort, plus silencieux, etc.). Tous ces paramètres ont des plages contraintes (x0 doit être < 1 et> -1 par exemple).Réglage automatique des paramètres

Le fichier audio de sortie est évalué par un outil qui lui attribue un score. Cet outil sait à quoi doit ressembler la sortie "idéale" et marque le fichier de sortie en conséquence. Un score de 1,0 signifie que la sortie est idéale, c'est-à-dire que le fichier d'entrée a été traité avec le meilleur jeu de paramètres possible. Un score de 0 signifie que la sortie est complètement erronée.

Donc avec 10-15 paramètres avec leurs plages valides, les combinaisons sont infinies! Je serais assis ici en train de peaufiner ces paramètres pour toujours jusqu'à ce que j'obtienne la meilleure solution. J'ai vérifié quelques solveurs de LP/MIP (CBC, base de Solver de MS, GKLP) mais ceux-ci utilisent une équation mathématique comme fonction objective ... vous ne «branchez» pas une fonction d'évaluation externe autant que je peux voir .

Un solveur LP/MIP est-il le bon outil pour faciliter le paramétrage? Des idées?

Merci,

akevan

Répondre

1

Vous pouvez utiliser une heuristique générale comme un recuit simulé ou des algorithmes génétiques. Votre processus d'évaluation serait la fonction fitness/objectif.

+0

J'utilise maintenant le recuit simulé ... spécifiquement à partir du chapitre 10 de Recettes numériques en C. C'est certainement la bonne approche même si je dois trouver la meilleure façon d'ajouter des contraintes à l'algorithme. – akevan

0

Si vous aviez la fonction objective, alors oui LP serait l'approche idéale (et donnerait la réponse idéale); la solution serait purement analytique. Mais en l'absence de la fonction, il semble que vous ayez correctement compris que le problème devient un problème de programmation en nombres entiers. J'ai moins de connaissance de la programmation d'entiers, mais je crois que cela suppose aussi une fonction objective à résoudre. Même avec la fonction, integer programs are NP-hard. Il semble donc que vous deviez utiliser la force brute pour détecter un maximum local, puis l'accorder. Je réalise que c'est exactement ce que tu ne voulais pas faire, mais c'est ce qui me vient à l'esprit.

0

Vous pouvez utiliser le paquet SPOT (langage de programmation R). Il vous permet de trouver des réglages de paramètres (presque) optimaux en utilisant beaucoup moins de passages que la force brute. Vous pouvez utiliser n'importe quel langage de programmation pour votre code de fonction de fitness, SPOT a un adaptateur pour cela, et propose un mode automatique avec configuration par défaut (vous n'avez pas à vous soucier des types de conception et des modèles de prédiction). Il a une courbe d'apprentissage abrupte, mais une fois que vous avez compris les bases, c'est un outil puissant. Here est un guide rapide; le chapitre 2.6 offre un exemple concret. Le paquet SPOT est livré avec plusieurs exemples.

Questions connexes