2017-02-18 5 views
-1

Besoin d'un algorithme (ou d'un ensemble de bons à comparer pour diverses données d'entrée) qui permettra de réduire le niveau de bruit d'un signal audio vocal sans déformer le signal de façon appréciable en Java.Suppression de bruit audio dans Java

L'entrée est un signal audio qui inclut une voix avec quelques bruits de fond. Le bruit varie au cours de l'enregistrement. Il existe certainement des moyens de supprimer le bruit comme celui-ci, développé pour la reconnaissance vocale et la réalisation de films.

La sortie désirée est un signal vocal faiblement déformé avec les distractions de fond minimalement audibles à l'oreille humaine. Les critères quantitatifs sont réduits au minimum

  1. signal à bruit et
  2. distorsion harmonique totale.
+0

Votre question n'est pas très claire. La programmation Java n'est pas liée à un IDE spécifique comme 'Eclipse' ou' Netbeans' ou 'Intellij' ou .... Donc, tout en Java serait possible avec ou sans IDE spécifique.De plus, demander de faire du travail dans le code s'appelle «faire quelque chose par programmation» et non «utiliser des langages de programmation». – STaefi

+0

Merci d'avoir signalé – suriyan

+0

Votre bienvenue. Un autre point est que des questions comme celle-ci rassembleraient -1s et c'est à cause de la question "comment faire ..." ici dans SO. Vous devriez trouver des tutoriels ou des livres et essayer d'écrire des codes. Ensuite, si quelque chose ne va pas, vous pouvez demander à des experts de vous aider avec votre code. Ne pas oublier de fournir un [MCVE]. Bonne chance. – STaefi

Répondre

3

Vous êtes à la recherche d'une suppression de bruit adaptative et, éventuellement, d'une variété qui s'adapte aux changements de conditions de bruit dans le temps au sein du même flux ou fichier.

approches plus anciennes comprennent:

  • de supprimer les fréquences contenant la majorité du bruit en utilisant passe-bande et/ou filtres coupe-bande (qui ne fonctionne bien que si le signal désiré et la bande de bruit ne se coupent pas)
  • Drop the Supprimez le bruit de fond à travers un fichier entier à l'aide d'une fenêtre de Hamming ou d'une autre fenêtre en conjonction avec un FFT.
  • bibliothèque
  • sections de modifier à la main d'une piste audio dans des programmes tels que Cakewalk ou ses concurrents

Ces méthodes ont été trouvés moins souhaitable en essayant de nettoyer un fichier plus volumineux ou plusieurs fichiers ou dans des applications en temps réel telles que le temps réel reconnaissance vocale ou téléphonie. L'un des programmes Java que je n'ai pas personnellement essayé son here. Même s'il a un certain niveau d'automatisation, il s'agit d'un LSE (estimateur des moindres carrés) qui fonctionne sur un bloc de données mais ne convient pas pour un fonctionnement continu ou un fichier audio avec des conditions de bruit indésirables. (Ce n'est pas aussi adaptatif que l'on pourrait l'espérer.)

La solution que j'ai trouvée après de nombreuses recherches et que j'utilise maintenant tout le temps n'est pas écrite en Java. C'est un programme MATLAB qui peut aussi fonctionner en Octave open source avec un minimum de modifications. J'ai commencé à le porter en C++ mais j'ai manqué de temps pour le finir.

La classe d'algorithme qu'il implémente s'appelle MMSE (Réduction du bruit à l'aide d'estimateurs de carrés moyens minimaux). La version MATLAB a été affinée plusieurs fois par le Dr. Hendricks, concluant avec le the 2010 version.

Je l'ai comparé avec ses concurrents pour le dialogue et la musique et il est égal ou excelle au-delà des autres dans tous les cas que j'ai essayés. (Je n'ai aucune affiliation avec le Dr. Hendricks ou MATLAB à part que j'aime les résultats que j'ai obtenus de sa mise en œuvre sur cette plate-forme.)