IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mathématiques Discussion :

[Audio] gain en DB


Sujet :

Mathématiques

  1. #1
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut [Audio] gain en DB
    Salut,

    Désolé si le sujet parait trop simple, mais google ne m'a pas aidé à le résoudre... Je travaille sur une série d'échantillons audio et j'aimerais changer leur amplitude, bref, leur appliquer un coefficient. Je voudrais que ce gain soit donné en db comme dans Audacity par exemple. Le 0db correspond à un coefficient de 1, donc le signal de sortie est égal au signal d'entrée. Quelqu'un aurait la formule de conversion de gain_db vers coefficient? Avec uniquement cette formule, j'arriverai à me débrouiller. Je précise que je ne suis pas matheux du tout

    A+

    Pfeuh

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    L'amplitude d'un signal audio correspond à la pression acoustique. La pression acoustique peut s'exprimer en décibel. Visiblement la formule se trouve dans wikipédia :

    Niveau de pression acoustique : dB SPL :

    http://fr.wikipedia.org/wiki/Pressio...tique_:_dB_SPL

    Intensité acoustique :

    http://fr.wikipedia.org/wiki/Son_(ph...onore.2C_sonie

    Amplitude et onde sonore :

    http://fr.wikipedia.org/wiki/Amplitude

    Niveau audio :

    http://fr.wikipedia.org/wiki/Niveau_(audio)

    Donc je pense que si tu souhaites faire varier l'amplitude d'un signal, ton coefficient sera compris entre 0dB et peut-être 100 dB (niveau limite surdité). Ensuite appliquer la conversion dB sur l'amplitude.

    PS: en informatique on utilise plutôt la notion de gain :

    http://en.wikipedia.org/wiki/ReplayGain

  3. #3
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    La définition générale est Gaindb = 20 Log10(A/Aref), A étant l'amplitude et Aref l'amplitude de référence.

    Si, par exemple, on a un gain de 6db, cela correspond à une augmentation d'amplitude voisine de 2 (LOG10(2) = 0.30103)

    Inversement, A/Aref = 10^(Gaindb/20) = e^(loge(10)Gaindb/20) = e^(0.1151Gaindb)

    Si au lieu des amplitudes, on se réfère aux puissances, on a Gaindb = 10 Log10(P/Pref)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  4. #4
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par moldavi Voir le message
    Merci, j'ai trouvé la formule grâce à ce lien! J'ai pu la vérifier grâce au tableau qui est sur la page, avec quelques légères différences, voici mon source en python:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import math
    import sys
     
    db_gain = [(16.0, 6.4), (10.0, 3.2), (6.0, 2.0), (3.0, 1.4), (2.0, 1.25), (1.0, 1.12),
        (0.0, 1.0), (-3.0, 1.0/1.4), (-6.0, 1.0/2.0), (-12.0, 1.0/4.0), (-14.0, 1.0/5.0),
        (-20.0, 1.0/10.0), (-40.0, 1.0/100.0), (-60.0, 1.0/1000.0)]
     
    sys.stdout.write(" niveau(db)  reference    computed\n")
    for (db, gain) in db_gain:
        my_gain = math.pow(10.0, db/20.0)
        sys.stdout.write("%10.03f  %10.03f  %10.03f\n"%(db, gain, my_gain))
    Et voici la sortie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     niveau(db)  reference    computed
        16.000       6.400       6.310
        10.000       3.200       3.162
         6.000       2.000       1.995
         3.000       1.400       1.413
         2.000       1.250       1.259
         1.000       1.120       1.122
         0.000       1.000       1.000
        -3.000       0.714       0.708
        -6.000       0.500       0.501
       -12.000       0.250       0.251
       -14.000       0.200       0.200
       -20.000       0.100       0.100
       -40.000       0.010       0.010
       -60.000       0.001       0.001
    Merci aussi à diogene qui confirme:
    Citation Envoyé par diogene
    Inversement, A/Aref = 10^(Gaindb/20) = e^(loge(10)Gaindb/20) = e^(0.1151Gaindb)
    A+

    Pfeuh
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lire les pistes d'un cd audio qd il y a plusieur lecteurs cd
    Par busy999 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/10/2003, 09h26
  2. extraire une portion audio d'une vidéo
    Par Brunoo dans le forum DirectX
    Réponses: 2
    Dernier message: 16/06/2003, 10h29
  3. gain stockage olap
    Par colomban dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 15/05/2003, 15h24
  4. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44
  5. programmation audio !?
    Par martimacfly dans le forum DirectX
    Réponses: 1
    Dernier message: 09/03/2003, 12h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo