Lecture et traitement des données de fichier WAV en C / C ++
Je suis actuellement en train de faire un très important projet d'école. J'ai besoin d'extraire les informations d'un fichier WAVE en C/C++ et utiliser les informations pour obtenir la LPC du signal vocal. Mais, pour ce faire, j'ai besoin de faire un peu de pré-traitement du signal, comme faire de passage à Zéro et l'analyse de l'énergie, entre autres choses. Ce qui signifie que j'ai besoin de le signer et d'une valeur réelle. Le problème est que je ne sais pas comment faire pour obtenir de l'information utile et le format correct pour que. J'ai déjà lu tout seul champ dans le fichier, mais je ne suis pas sûr que je suis en train de faire. Des Suggestions, s'il vous plaît?
C'est la façon dont je lis le fichier à l'instant:
readI = fread(&bps, 1, 2, audio);
printf("nombre de bits par échantillon = %d \n", bps);
Merci d'avance.
source d'informationauteur Luxk
Vous devez vous connecter pour publier un commentaire.
Ma première recommandation serait d'utiliser une sorte de bibliothèque pour vous aider. La plupart des solutions saines sembler exagéré, donc une simple bibliothèque (comme recommandé dans le commentaire de votre question, libsndfile) devrait faire l'affaire.
Si vous voulez simplement savoir comment faire pour lire les fichiers WAV de sorte que vous pouvez écrire votre propre (depuis votre école pourrait tourner son nez jusqu'à vous avoir utiliser une bibliothèque comme toute autre personne ordinaire), une rapide recherche sur google vous donnera toutes les informations dont vous avez besoin en plus de certaines personnes qui ont déjà écrit de nombreux tutoriels sur la lecture de la .le format wav.
Si vous ne recevez toujours pas, voici une partie de mon code où j'ai lu l'en-tête et tous les autres morceaux de l'WAV/RIFF fichier de données jusqu'à ce que je reçois pour le segment de données. Il est basé exclusivement au large de la Spécification de Format WAV. Extraire le son réel des données n'est pas très dur: vous pouvez lire le cru et l'utiliser crue ou de faire une conversion à un format que vous auriez plus de confort à l'interne (32-bit PCM non compressé des données ou quelque chose).
Lorsque l'on regarde le code ci-dessous, remplacez
reader.Read...( ... )
équivalentfread
appels pour des valeurs entières et de l'octet les tailles du type indiqué.WavChunks
est un enum qui est le Little Endian valeurs de l'IDs à l'intérieur d'un fichier WAV morceau, et leformat
variable est l'un des types de Format Wav Types qui peuvent être contenus dans le Format de Fichier WAV: