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

C++ Discussion :

Amplifier un signal audio


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Amplifier un signal audio
    Bonjour à tous, voilà j'aimerai pouvoir amplifié (et éventuellement filtré le bruit) d'un signal audio provenant d'une ligne téléphonique. Mon principal problème est que cela doit se faire en temps réel étant donné que le son doit être directement traité par de la reconnaissance vocal.
    Existe t-il donc une solution pour faire cela sachant que j'ai déja été voir du coté des API windows avec les fonctions de conversion audio (ACM conversion stream) mais sans succès. Je sais qu'il existe des librairie multimédia tel que Fmod mais est-il possible de les utilisées pour ce genre de traitement? Peu être est-il possible aussi d'utilisé directement DirectX?

    Pour information l'audio est du PCM U-LAW 8bit 8Khz.

    Merci d'avance pour vos réponse, en espérant avoir été assez clair dans la description de mon problème.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Pas clair.

    Tu veux savoir comment amplifier le signal, ou bien comment atteindre les data du signal ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Non j'ai accès aux données (je les récupère par buffer de 1Ko) je voudrai pourvoir les amplifié avant de les envoyés.

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est une simple multiplication, où est le problème ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Ah oui... Pas si simple que sa aparement, enfin surtout n'ayant aucune expérience en audio numérique...

    Donc si je comprend bien il me suffit de multiplier chacunes des valeurs?

    Le problème est que j'ai déja essayé comme sa mais sa me donne pas un resultat trés encouragan...

    Je récupère un buffer de char contenan le son, et je multiplie chacune des valeur par 1.5 (par exemple), mais si je visualise le son avec un logiciel (cooledit) la partie supérieur du signal est bien amplifié alors que la partie inférieure semble plutot atténué!

    Aprés avoir chercher quelque peu sur le net, j'ai cru comprendre que l'encodage se fesai sur 8bit donc de 0 à 255 avec 128 pour le silence, j'ai donc converti mon buffer de char en unsigned char pensan que le problème venai de là, mais sans succès...

    Si quelqun à une idée...

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est clair que si tu considères tes valeurs signées comme étant non signées, il va y avoir un problème...
    Et puis franchement un signal audio sur 8bits, c'est moche. Perso, je ne travaille pas à moins de 24 bits de précision, en virgule fixe ou flottante.

  7. #7
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Oui il faut garder en unsigned ton tampon...

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Ti-R
    Oui il faut garder en unsigned ton tampon...
    Il faut faire plus que ça, il faut le considérer comme étant non signé, le translater en signé entre -127 et 128, faire la multiplication, passer un "limiteur" pour écreter les signaux trop importants, retranslater entre 0 et 255.

  9. #9
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Mon principal problème est que cela doit se faire en temps réel étant donné que le son doit être directement traité par de la reconnaissance vocal.
    Il va peut être falloir distinguer la partie récupération de données et la partie traitement du signal.

    -> Je récupère x échantillons dans un buffer1
    -> Je continue à récupérer les données dans un buffer2 et je traite le signal du buffer1 (conversion,amplification...)
    -> J'effectue le traitement du buffer2 pendant que je récupère les x prochains échantillons dans le buffer1
    -> ainsi de suite

    Enfin c'est une méthode et il y en a bien d'autres!

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Ok! Merci à tous pour toutes ces précisions, je pense que je devrai m'en sortir avec tout sa. Pour info si je travail avec une qualité de signal si faible c'st que le son provient d'un ligne téléphonique, je ne peu donc pas avoir mieu...

    Une dernière question, si je veu filtrer les bruit de fond de mon signal (ne garder que la voix) pensez vous qu'un filtre passe bande (coorespondant aux frèquences de la voix) pourrai être mis en place..?

    En tout cas merci de votre intéret pour mon problème.

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Avec seulement 8 bits de signal, le principal bruit que tu auras, c'est le bruit de quantification, donc un passe-bande est inutile.

  12. #12
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 264
    Points : 6 683
    Points
    6 683
    Billets dans le blog
    2
    Par défaut
    Il faut également faire attention à cette histoire d'unité: le dB utilise une échelle logarithmique. Je ne me souviens plus des détails, et je n'ai pas le temps de vérifier, désolé. C'était juste pour signaler (sans mauvais jeu de mot).

  13. #13
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Citation Envoyé par Miles
    Il faut faire plus que ça, il faut le considérer comme étant non signé, le translater en signé entre -127 et 128, faire la multiplication, passer un "limiteur" pour écreter les signaux trop importants, retranslater entre 0 et 255.
    je voulais dire signed...., car multiplier sur un unsigned c'est ce qu'il vient d'expliquer avant mon post et ce n'était pas bon.
    Et bien entendu écrêter les signaux et pas les réintroduire avec un débordement, ce qui va faire de la bouillie...

  14. #14
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Citation Envoyé par flammeon
    Une dernière question, si je veu filtrer les bruit de fond de mon signal (ne garder que la voix) pensez vous qu'un filtre passe bande (coorespondant aux frèquences de la voix) pourrai être mis en place..?
    Si mes souvenirs sont bons (et c'est vieux tout ça), un filtre passe bande supprime des harmoniques hautes ou basses. Ca permet de filtrer les bruits de fond effectivement.
    Mais un signal téléphonique issu du bon vieux fil de cuivre, c'est de la modulation d'amplitude, dont la bande passante est assez faible (de l'ordre de 8kHz ???).
    Appliquer un filtre passe haut ou bas sur un signal tout pourri AM... Ben ça donne un signal encore plus pourri !
    A confirmer évidemment...

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/03/2007, 14h43
  2. [Signal] [Audio] Un vibrato magique
    Par henderson dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 20/11/2006, 15h00
  3. Récuperer le signal audio d'un fichier .wav
    Par vienin dans le forum Multimédia
    Réponses: 2
    Dernier message: 11/10/2005, 16h25
  4. [TMS320C6416] FFT et IFFT sur un signal audio...
    Par 0x4e84 dans le forum Autres architectures
    Réponses: 1
    Dernier message: 18/04/2005, 20h21
  5. Réponses: 2
    Dernier message: 08/11/2004, 22h31

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