Projet

Général

Profil

Feature - Fonctionnalité #1966

Module d'enregistrement du son qui saurait nettoyer le bruit ambiant

Ajouté par Eric Seigne il y a plus de 10 ans. Mis à jour il y a plus de 10 ans.

Statut:
New - Nouveau
Priorité:
Normale
Assigné à:
-
Catégorie:
-
Début:
26/02/2012
Echéance:
% réalisé:

0%


Description

Le point de départ est celui-ci: Le principe de ce que j'aimerais mettre en place est le suivant:
  • On demande à l'utilisateur de ne pas faire de bruit pendant 3 secondes et on "capture" le bruit ambiant (en enregistrant le micro)
  • Ensuite lorsque l'utilisateur fera son enregistrement on appliquera ce "sample" comme filtre anti-bruit

Je pensais "piquer" le code d'audacity qui est ... du C++ mais je n'ai pas le temps de m'occuper de ça. Pour simplifier la mission vous trouverez ci-joint un fichier Qt/C++ bien plus léger que raconte-moi et vous permettra de travailler sans subir les modifications du code de raconte-moi.

ryxeo-sound-record-noise-remove.tar.bz2 (27,6 ko) Eric Seigne, 26/02/2012 20:53

Historique

#1 Mis à jour par Eric Seigne il y a plus de 10 ans

  • Version cible mis à MissionPonctuelleDev

#2 Mis à jour par Eric Seigne il y a plus de 10 ans

#3 Mis à jour par Jean-Louis Frucot il y a plus de 10 ans

A>près quelques recherche dans le code source de Audacity, et quelques recherches sur le Net, je suis tombé sur ça : soX http://sox.sourceforge.net/
avec entre autre la possibilité d'accéder aux commandes en mode CLI. Je suis tombé sur ce passage : http://sox.sourceforge.net/sox.html#EFFECTS avec les filtres noiseproof et noisered


noiseprof [profile-file]

Calculate a profile of the audio for use in noise reduction. See the description of the noisered effect for details.

noisered [profile-file [amount]]

Reduce noise in the audio signal by profiling and filtering. This effect is moderately effective at removing consistent background noise such as hiss or hum. To use it, first run SoX with the noiseprof effect on a section of audio that ideally would contain silence but in fact contains noise - such sections are typically found at the beginning or the end of a recording. noiseprof will write out a noise profile to profile-file, or to stdout if no profile-file or if ‘−’ is given. E.g.

   sox speech.wav −n trim 0 1.5 noiseprof speech.noise-profile

To actually remove the noise, run SoX again, this time with the noisered effect; noisered will reduce noise according to a noise profile (which was generated by noiseprof), from profile-file, or from stdin if no profile-file or if ‘−’ is given. E.g.

   sox speech.wav cleaned.wav noisered speech.noise-profile 0.3

How much noise should be removed is specified by amount-a number between 0 and 1 with a default of 0.5. Higher numbers will remove more noise but present a greater likelihood of removing wanted components of the audio signal. Before replacing an original recording with a noise-reduced version, experiment with different amount values to find the optimal one for your audio; use headphones to check that you are happy with the results, paying particular attention to quieter sections of the audio.

On most systems, the two stages - profiling and reduction - can be combined using a pipe, e.g.

   sox noisy.wav −n trim 0 1 noiseprof | play noisy.wav noisered

#4 Mis à jour par Eric Seigne il y a plus de 10 ans

Oui mais ... non :)

j'essaye justement d'éviter à tout prix le recours à une commande externe ... c'est à cause de ça que la version 1.0 n'est pas encore sortie:
  • on utilise sox pour "coller" les morceaux entre eux avant de pousser sur le web
  • j'utilise oggenc pour compresser les wav -> ogg, et les derniers dev permettent d'enregistrer directement en ogg (cf une lib abuleduqqchose dont j'ai oublié le nom)
  • ça pose des soucis exemple #1163
  • d'une manière générale, j'essaye de ne plus lancer de commandes externes

Éric

Formats disponibles : Atom PDF

Redmine Appliance - Powered by TurnKey Linux