J'ai 15 cassettes audio, dont l'une, je crois, contient un vieil enregistrement de ma grand-mère et de moi-même en train de parler. Une tentative rapide de trouver le bon endroit ne l’a pas changé. Je ne veux pas écouter 20 heures de cassette pour la trouver. L'emplacement peut ne pas être au début de l'une des bandes. La plupart du contenu semble appartenir à trois catégories - par ordre de longueur totale, la plus longue en premier: silence, parole radio et musique.
Je prévois de convertir toutes les cassettes au format numérique, puis de chercher à nouveau l'enregistrement. La manière évidente est de les jouer tous en arrière-plan pendant que je fais autre chose. C’est beaucoup trop simple pour moi, alors: existe-t-il des bibliothèques open source, ou un autre code, qui me permettraient de trouver, par ordre croissant de sophistication et d’utilité:
Ma préférence va à Python, Java ou C.
À défaut de réponses, des astuces sur les termes de recherche seraient appréciées, car je ne connais rien au domaine.
Je comprends que je pourrais facilement passer plus de 20 heures à ce sujet.
Ce que vous économisez probablement la plupart du temps, c'est la personnalisation du locuteur. Cela fonctionne en annotant l'enregistrement avec les ID de haut-parleur, que vous pouvez ensuite mapper manuellement à des personnes réelles avec très peu d'effort. Les taux d’erreur se situent généralement entre 10 et 15% de la longueur de l’enregistrement, ce qui semble très décevant, mais cela implique de détecter un trop grand nombre de locuteurs et d’affecter deux identifiants à la même personne, ce qui n’est pas si difficile à réparer.
Un de ces bons outils est SHoUT toolkit (C++), même s’il est un peu difficile en ce qui concerne le format d’entrée. Voir utilisation de cet outil de l'auteur . Il génère détection d'activité vocale/vocale métadonnées ET modification du locuteur , ce qui signifie que vous obtenez les premier et deuxième points (VAD/SAD) et un peu plus, car il annote quand le même locuteur est actif dans un enregistrement.
L’autre outil utile est LIUM spkdiarization (Java), qui fait essentiellement la même chose, sauf que je n’ai pas fait assez d’efforts pour déterminer comment obtenir les métadonnées VAD. Il contient un paquet prêt à l’emploi téléchargeable .
Avec un peu de compilation, cela devrait fonctionner en moins d’une heure.
La meilleure option serait de trouver un module open source faisant la reconnaissance vocale ou l'identification du locuteur (pas la reconnaissance vocale). L'identification du locuteur est utilisée pour identifier un locuteur particulier alors que la reconnaissance vocale convertit l'audio parlé en texte. Il peut y avoir des packages d’identification de source ouverte, vous pouvez essayer de chercher quelque chose comme SourceForge.net pour "identification du locuteur" ou "voix ET biométrie". Comme je n'en ai pas utilisé moi-même, je ne peux rien recommander.
Si vous ne trouvez rien mais que vous êtes intéressé par le roulement de votre choix, il existe de nombreuses bibliothèques FFT open source pour tous les langages populaires. La technique serait:
Notez que le nombre d'heures pour terminer ce projet pourrait facilement dépasser les 20 heures d'écoute manuelle des enregistrements. Mais ce sera beaucoup plus amusant que 20 heures d'audio et vous pourrez utiliser le logiciel que vous avez construit à l'avenir.
Bien sûr, si l'audio n'est pas sensible du point de vue de la confidentialité, vous pouvez externaliser la tâche d'audition audio vers quelque chose comme le fouillis mécanique d'Amazon.
Vous pouvez également essayer pyAudioAnalysis to:
from pyAudioAnalysis import audioBasicIO as aIOfrom pyAudioAnalysis import audioSegmentation as aS[Fs, x] = aIO.readAudioFile("data/recording1.wav")segments = aS.silenceRemoval(x, Fs, 0.020, 0.020, smoothWindow = 1.0, Weight = 0.3, plot = True)
segments
contient les extrémités des segments non-silence.
si vous connaissez Java, vous pouvez essayer d’alimenter les fichiers audio au minimum et de calculer des spectres FFT. Le silence pourrait être détecté en définissant un niveau minimum pour l'amplitude des échantillons (pour éliminer le bruit). Pour séparer la parole de la musique, le spectre FFT d'une fenêtre temporelle peut être utilisé. La parole utilise des bandes de fréquences très distinctes appelées formants - en particulier pour les vovels - la musique est mieux répartie dans le spectre de fréquences.
Vous n'obtiendrez probablement pas une séparation à 100% des blocs parole/musique, mais il devrait être suffisant de baliser les fichiers et d'écouter uniquement les parties intéressantes.
J'ai écrit il y a un article de blog sur l'utilisation de la reconnaissance vocale Windows. J'ai un tutoriel de base sur la conversion de fichiers audio en texte en C #. Vous pouvez vérifier ici .
Je commencerais ici
http://www-lium.univ-lemans.fr/diarization/doku.php/quick_start
codeblocks :: est bon pour gcc