Maison > développement back-end > tutoriel php > PHP Master | Extraire un extrait d'un fichier WAV

PHP Master | Extraire un extrait d'un fichier WAV

Jennifer Aniston
Libérer: 2025-02-24 10:39:14
original
836 Les gens l'ont consulté

PHP Master | Extract an Excerpt from a WAV File

Bien que PHP soit connu pour créer des pages et des applications Web, elle a bien plus que cela. J'ai récemment besoin d'extraire dynamiquement un audio à partir d'un fichier WAV et de permettre à l'utilisateur de le télécharger via le navigateur. J'ai essayé de trouver une bibliothèque qui convenait à mes besoins, mais je n'ai pas réussi et j'ai dû écrire mon propre code. C'est une excellente occasion de creuser dans la structure des fichiers WAV. Dans cet article, je décrirai brièvement le format de fichier WAV et expliquerai la bibliothèque que j'ai développée: Extracteur WAV aude.

Points clés

  • Le format de fichier audio de forme d'onde (WAV) est une norme utilisée par Microsoft pour stocker les données audio numériques et se compose de blocs représentant différentes parties d'un fichier audio. "Riff", "FMT" et "Data" sont les blocs les plus importants.
  • Extracteur WAV AudeRo est une bibliothèque PHP qui permet d'extraire des fragments à partir de fichiers WAV. Il nécessite PHP 5.3 ou version ultérieure et peut enregistrer le fragment sur le disque dur local, le télécharger via le navigateur de l'utilisateur ou le renvoyer en tant que chaîne pour un traitement ultérieur.
  • La
  • La bibliothèque d'extracteur AUDERO WAV contient des méthodes telles que downloadChunk(), saveChunk() et getChunk() pour gérer le processus d'extraction. Chaque méthode nécessite d'extraire les paramètres de début et de fin du fragment.
  • La durée du fichier WAV peut être calculée à l'aide de la formule suivante: <code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>. Ces informations, ainsi que d'autres données importantes, peuvent être récupérées à partir des blocs "Data" et "FMT" du fichier WAV.

Présentation du format WAV

Le format de fichier audio WAVE, également connu sous le nom de WAVE ou WAV, est la norme de format de fichier utilisé par Microsoft pour stocker les données audio numériques. Un fichier WAV se compose d'un ensemble de différents types de blocs qui représentent différentes parties du fichier audio. Vous pouvez considérer ce format comme une page HTML: le premier bloc est comme la partie <section></section> de la page Web, donc vous pouvez trouver plusieurs informations sur le fichier lui-même, tandis que le bloc contenant les données audio elle-même est Situé à la partie . Dans ce cas, "Block" fait référence à la partie des données contenues dans le fichier. Le bloc de format le plus important est "Riff", qui contient le nombre d'octets du fichier; "FMT", qui contient des informations importantes telles que le taux d'échantillonnage et le numéro de canal; Chaque bloc doit avoir au moins deux champs: ID et taille. De plus, chaque WAV valide doit avoir au moins deux blocs: FMT et données. Le premier est généralement au début du fichier, mais après Riff. Chaque bloc a son propre format et champ, et un champ forme une sous-partie du bloc. Le format WAV n'a pas été entièrement spécifié dans le passé, ce qui fait que le fichier a des en-têtes qui ne suivent pas strictement les règles. Ainsi, lorsque vous travaillez sur l'audio, vous pouvez constater qu'un fichier a un ou plusieurs champs, et même les champs les plus importants sont définis sur zéro ou de mauvaises valeurs. Pour vous donner une idée de ce qui se trouve à l'intérieur d'un bloc, le premier bloc de chaque fichier WAV est Riff. Les 4 premiers octets contiennent la chaîne "Riff", et les 4 octets suivants contiennent la taille du fichier moins les 8 octets utilisés par ces deux parties de données. Les 4 derniers octets du bloc Riff contiennent la chaîne "Wave". Vous pouvez deviner quel est le but de ces données. Dans ce cas, vous pouvez les utiliser pour identifier si le fichier que vous analysez est en fait un fichier WAV, comme je l'ai fait dans la méthode <section></section> de la classe WAV de la bibliothèque. Une autre chose intéressante à expliquer est de calculer la durée d'un fichier WAV. Toutes les informations dont vous avez besoin peuvent être récupérées à partir des deux blocs nécessaires mentionnés précédemment, à savoir: la taille du bloc de données, le taux d'échantillonnage, le nombre de canaux et le nombre de bits par échantillon. La formule pour calculer le temps du fichier (en secondes) est la suivante: setFilePath()

<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Supposons que nous ayons:

<code>dataChunkSize = 4498170
sampleRate = 22050
channelsNumber = 16
bitsPerSample = 1</code>
Copier après la connexion
Copier après la connexion
Appliquez ces valeurs à la formule et nous obtenons:

<code>time = 4498170 / (22050 * 1 * 16 / 8)</code>
Copier après la connexion
Le résultat est de 102 secondes (arrondi). Une explication approfondie de la structure du fichier WAV dépasse le cadre de cet article. Si vous souhaitez l'étudier davantage, lisez ces pages que j'ai rencontrées tout en traitant ceci:

  • https://www.php.cn/link/21c1da87c1afdd4ed2836bdb521bea78
  • https://www.php.cn/link/3493d96f8fcb16313a77ecfd294734c9

Qu'est-ce que l'extracteur AUDERO WAV

Extracteur WAV AudeRo est une bibliothèque PHP qui vous permet d'extraire des fragments à partir de fichiers WAV. Vous pouvez enregistrer le fragment extrait sur votre disque dur local, le télécharger via le navigateur de l'utilisateur ou le renvoyer en tant que chaîne pour un traitement ultérieur. La seule exigence spéciale pour cette bibliothèque est PHP 5.3 ou version ultérieure car elle utilise un espace de noms. Toutes les classes de la bibliothèque sont dans le répertoire Wavextractor, mais vous remarquerez qu'il y a un répertoire de chargeur supplémentaire où vous pouvez trouver l'autoloader de la bibliothèque. Le point d'entrée du développeur est la classe AuderowAVExtractor, qui a trois méthodes principales dans le projet:

  • downloadChunk(): Téléchargez le clip
  • saveChunk(): Enregistrez-le sur le disque dur
  • getChunk(): Recherchez le fragment comme une chaîne

Les deux premiers paramètres de toutes ces méthodes sont les mêmes: $start et $end, qui représentent les temps de début et de fin (en millisecondes) de la partie à extraire, respectivement. De plus, downloadChunk() et saveChunk() acceptent un troisième paramètre facultatif pour définir le nom du fragment extrait. Si aucun nom n'est fourni, la méthode génère un nom lui-même au format "InputFileName-Start-end.wav". Dans le répertoire Wavextractor, il existe deux sous-dossiers: l'utilitaire, qui contient la classe de convertisseur avec certaines méthodes d'utilité; Ce dernier contient les classes WAV, Chunk et Chunkfield. Le premier, comme vous pouvez vous y attendre, représente un fichier WAV, qui se compose d'un ou plusieurs blocs (type de morceau). Cette classe vous permet de récupérer des en-têtes WAV, des durées audio et d'autres informations utiles. Sa méthode la plus importante est getWavChunk(), qui récupère la partie audio spécifiée en lisant les octets dans le fichier. La classe Chunk représente un bloc d'un fichier WAV étendu par une classe dédiée contenue dans le dossier Chunk. Ce dernier ne prend pas en charge tous les types de blocs existants, seulement les types de blocs les plus importants. La partie non identifiée est gérée par la classe générale et est simplement ignorée tout au long du processus. La dernière classe décrite est Chunkfield. Comme je l'ai souligné, chaque bloc a son propre type et champ, et chaque champ a une longueur (en octets) et un format différent. Il s'agit d'un message très important car vous devez passer les paramètres corrects pour analyser correctement les octets en utilisant les fonctions de PHP pack() et unpack(), sinon vous recevrez une erreur. Pour aider à gérer les données, j'ai décidé de les emballer dans une classe qui contient le format, la taille et les valeurs de chaque champ.

Comment utiliser l'extracteur WAV AudeRo

Vous pouvez obtenir le "Extracteur AUDERO WAV" via Composer, ajouter les lignes suivantes à votre fichier composer.json et exécuter sa commande d'installation:

<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion

Composer téléchargera et placera la bibliothèque dans le répertoire vendor/audero du projet. Alternativement, vous pouvez télécharger la bibliothèque directement à partir de son référentiel. Pour extraire le fragment et forcer le téléchargement du navigateur de l'utilisateur, vous écrirez un code similaire à ce qui suit:

<code>time = dataChunkSize / (sampleRate * channelsNumber * bitsPerSample / 8)</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans la première ligne, j'ai inclus le compositeur Autoloader, puis j'ai défini la valeur que je vais utiliser. Comme vous pouvez le voir, je fournis le fichier source, le chemin de sortie comprenant le nom du fichier et la plage de temps que je souhaite extraire. Ensuite, j'ai créé une instance d'AuderowAvExtractor, j'ai pris le fichier source en tant que paramètre et appelé la méthode downloadChunk(). Notez que parce que le chemin de sortie est passé par référence, vous devez toujours le définir en tant que variable. Regardons un autre exemple. Je vais vous montrer comment sélectionner une plage de temps et enregistrer le fichier sur votre disque dur local. De plus, j'utiliserai l'autoloader inclus dans le projet.

<code>dataChunkSize = 4498170
sampleRate = 22050
channelsNumber = 16
bitsPerSample = 1</code>
Copier après la connexion
Copier après la connexion

En dehors de la configuration du chargeur, cet extrait de code est très similaire à l'extrait de code précédent. En fait, je n'ai apporté que deux modifications: la première est la méthode appelée, saveChunk() au lieu de downloadChunk(), et la seconde est que je n'ai pas définie le nom du fichier de sortie (il utilisera le format par défaut expliqué précédemment).

Conclusion

Dans cet article, je vous montre "Extracteur WAV auderon" et comment extraire facilement un ou plusieurs fragments d'un fichier WAV donné. J'ai écrit la bibliothèque pour un projet de travail qui nécessite un ensemble de tuiles très étroit, donc si l'onde ou son en-tête est gravement corrompu, la bibliothèque peut échouer, mais j'ai écrit le code pour essayer si possible de récupérer de l'erreur. N'hésitez pas à utiliser les démos et les fichiers contenus dans le référentiel, car je l'ai publié sous la licence CC BY-NC 3.0.

(Ce qui suit est une œuvre pseudo-originale dans la partie FAQ d'origine, qui maintient la signification d'origine et ajuste la langue)

FAQS (FAQ) sur l'extraction des fragments de fichiers wav

Comment extraire des parties spécifiques d'un fichier WAV?

Pour extraire des parties spécifiques d'un fichier WAV, vous devez utiliser un logiciel d'édition audio comme Audacity. Ouvrez le fichier WAV dans Audacity, utilisez l'outil de sélection pour sélectionner la section que vous souhaitez extraire, puis sélectionnez la sélection des exportations dans le menu Fichier. Vous pouvez ensuite enregistrer la partie sélectionnée en tant que nouveau fichier WAV.

Puis-je extraire des données des fichiers WAV dans un langage de programmation?

Oui, vous pouvez extraire des données à partir de fichiers WAV à l'aide d'un langage de programmation comme Python. Des bibliothèques telles que scipy.io.wavfile et wave peuvent être utilisées pour lire les fichiers WAV et extraire des données. Vous pouvez ensuite utiliser ces données en fonction de vos besoins.

Comment extraire des informations secrètes à partir de fichiers audio?

L'extraction des informations secrètes d'un fichier audio implique un processus appelé Steganography. Ce processus consiste à cacher des informations dans un texte ou des données non secret. Il existe différents logiciels et outils qui peuvent vous aider à extraire des messages cachés à partir de fichiers audio.

Puis-je extraire une voix ou une voix d'un fichier WAV?

Extraire un son d'un fichier WAV est une tâche complexe qui implique la séparation des sources audio ou la séparation de la parole. Cela peut être réalisé en utilisant des techniques de traitement des signaux avancées et des algorithmes d'apprentissage automatique. Des logiciels comme Audacity peuvent aider dans une certaine mesure, mais pour des tâches plus complexes, vous devrez peut-être utiliser des outils ou des services plus avancés.

Quelle fonction dans R extrait les valeurs DB d'un fichier wav?

Dans R, vous pouvez utiliser le package tuner pour lire les fichiers WAV et extraire les données. La fonction readWave() peut être utilisée pour lire un fichier WAV, et l'objet généré peut être utilisé pour accéder aux valeurs DB. Cependant, vous devrez peut-être convertir la valeur d'amplitude en DB en utilisant la formule mathématique appropriée.

Comment extraire les informations de fréquence des fichiers WAV?

L'extraction des informations de fréquence d'un fichier WAV consiste à effectuer une transformée de Fourier sur les données. Cela peut être fait en utilisant la bibliothèque Numpy dans Python ou la bibliothèque FFT dans R. Les résultats de la transformée de Fourier vous donneront les composants de fréquence du signal audio.

Puis-je extraire des métadonnées à partir de fichiers WAV?

Oui, vous pouvez extraire des métadonnées à partir de fichiers WAV. Cela peut inclure des informations telles que le taux d'échantillonnage, la profondeur du bit, le nombre de canaux et la durée. Cela peut être fait à l'aide de bibliothèques de traitement audio dans divers langages de programmation.

Comment extraire plusieurs pièces à partir d'un fichier WAV?

Pour extraire plusieurs pièces à partir d'un fichier WAV, vous pouvez utiliser un logiciel d'édition audio comme Audacity. Vous pouvez sélectionner chaque pièce que vous souhaitez extraire et l'exporter en tant que nouveau fichier. Ce processus peut être répété pour que chaque partie soit extraite.

Puis-je extraire l'audio à partir d'un fichier vidéo et l'enregistrer en tant que fichier WAV?

Oui, vous pouvez extraire l'audio à partir d'un fichier vidéo et l'enregistrer en tant que fichier WAV. Cela peut être fait à l'aide d'un logiciel d'édition vidéo ou d'outils de conversion. Ce processus consiste à ouvrir un fichier vidéo, à extraire une piste audio et à l'enregistrer en tant que fichier WAV.

Comment convertir un fichier WAV en un autre format audio?

Pour convertir un fichier WAV en un autre format audio, vous pouvez utiliser des logiciels ou des outils de conversion audio. Ces outils vous permettent d'ouvrir un fichier WAV et de l'enregistrer dans un autre format, tel que MP3, FLAC ou AAC. Le processus de conversion consiste généralement à sélectionner le format de sortie et à définir la fréquence de masse ou binaire requise.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal