Fichiers audio au format WAV dans LTspice : utilisation de la syntaxe stéréo et cryptage de messages vocaux

1 Star2 Stars3 Stars4 Stars5 Stars (Aucune évaluation pour le moment)
Loading...
70 vues

Question :
Est-il possible d’utiliser les données stéréo et de crypter des messages vocaux à l’aide de fichiers audio au format WAV dans LTspice ?


Réponse :
Si la musique nourrit l’amour, simulons-la. (d’après La Nuit des rois, William Shakespeare)

Cet article explique comment utiliser des fichiers audio au format WAV dans LTspice® pour tirer parti de la syntaxe stéréo (et accroître le nombre de canaux).

LTspice permet de générer des fichiers WAV à l’aide d’une sortie de simulation de circuit, mais aussi d’importer des fichiers WAV pour exciter un circuit simulé. La possibilité d’avoir recours à des fichiers audio mono au format WAV comme entrée dans LTspice est très bien connue, de même que l’utilisation de LTspice pour produire un signal au format WAV.

On ne compte plus les superpouvoirs de LTspice, et son aptitude à gérer des fichiers audio n’est pas le moindre de ses talents. Il est évidemment fascinant de voir un circuit s’animer à l’écran d’un ordinateur, mais la création d’un fichier son exploitable en dehors de LTspice élargit le champ de perception des ingénieurs pour évaluer des simulations. L’utilisation de fichiers audio mono au format WAV dans LTspice est bien documentée. Cet article étend la discussion aux signaux stéréo (et au-delà) et décrit comment exporter des données stéréo vers et depuis LTspice à l’aide de fichiers WAV. Il contient également quelques conseils et astuces relatifs aux fichiers WAV qui permettront au lecteur d’aller plus loin avec ce type de fichiers.

Génération d’un fichier stéréo au format WAV

Commençons par produire un fichier WAV stéréo à partir d’un signal mono. La figure 1 représente un circuit destiné à générer une onde sinusoïdale de 1 V, 1 kHz et à la répartir sur deux canaux, en alternant le signal sur l’un ou l’autre — le son à 1 kHz est commuté par intervalles de 2 secondes entre CH1 et CH2.

Figure 1. Dans cette simulation, une onde sinusoïdale à 1 kHz est commutée par intervalles de deux secondes entre CH1 et CH2. Le signal bicanal obtenu est exporté vers un fichier audio au format WAV.

La commande .wave “C:\export.wav” 16 44.1k V(CH1) V(CH2) numérise chaque canal avec une résolution de 16 bits, à une fréquence d’échantillonnage de 44,1 kÉch/s, et stocke le signal audio obtenu dans le dossier C:\export.wav. Dans cette commande, chaque signal indiqué après la fréquence d’échantillonnage devient son propre canal dans le fichier WAV. LTspice peut enregistrer jusqu’à 65 535 canaux dans un seul fichier audio WAV. Il suffit, pour ce faire, d’ajouter des signaux à la commande ci-dessus.

Par défaut, la commande .wave de LTspice enregistre la première voie indiquée comme canal audio gauche et la deuxième comme canal droit. Dans le cas présent, si nous lisons le fichier export.wav à l’aide d’un lecteur multimédia, CH1 et CH2 seront considérés, respectivement, comme les canaux gauche et droit, indépendamment de la convention choisie pour nommer les nœuds du circuit. À noter que dans le fichier .wav, CH1 et CH2 sont enregistrés par défaut comme chan 0 et chan 1, respectivement, ce qui est important pour lire le fichier abordé ci-après.

Ce fichier audio stéréo exporté est utilisable pour stimuler un autre circuit, illustré par la figure 2, en utilisant, comme signaux d’entrée, les deux canaux contenus dans le fichier export.wav.

Figure 2. Les deux voies stéréo du fichier export.wav servent à stimuler deux circuits indépendants.

Les sources de tension, V1 et V2, sont placées comme à l’accoutumée. Les signaux de tension issus du fichier export.wav sont ensuite affectés en maintenant l’appui sur la touche CTRL, puis en cliquant avec le bouton droit de la souris (ou du pavé tactile) sur chacune des sources de tension. L’éditeur d’attributs de composants apparaît alors comme le montre la figure 3.

Figure 3. Les signaux stéréo du fichier export.wav servent d’entrées pour le circuit de la figure 2. La figure illustre l’affectation de V1, avec une valeur définie pour extraire le canal 0 du fichier export.wav.

Comme indiqué précédemment, lors de la génération initiale du fichier audio WAV avec LTspice, il est possible de créer jusqu’à 65 535 canaux dans un seul fichier. Il suffit pour cela d’ajouter les canaux souhaités à la fin de la commande .wave. Gardez à l’esprit que, par défaut, LTspice baptise le premier canal Channel 0, le suivant Channel 1, etc. Dans le cas présent, le fichier export.wav (obtenu à l’aide de la simulation représentée à la figure 1) enregistre la tension V(CH1) sous le libellé Channel 0 et V(CH2) Channel 1. Pour reproduire ces canaux à l’aide d’une source de tension, indiquez le fichier .wav et le canal comme valeur de source de tension. Dans ce cas :
• Pour indiquer que V1 reproduise la tension V(CH1) représentée sur la figure 1 : wavefile=”C:\export.wav” chan=0
• De même, pour indiquer que V2 reproduise la tension V(CH2) représentée sur la figure 1 : wavefile=”C:\export.wav” chan=1

Séparation des signaux audio

En théorie, la lecture du fichier export.wav à l’aide d’un lecteur multimédia devrait reproduire intégralement le son à 1 kHz sur le haut-parleur (ou l’écouteur) de gauche pendant deux secondes, puis la même chose avec le haut-parleur de droite au cours des deux secondes suivantes. Néanmoins, la séparation complète des deux voies stéréo n’est nullement garantie, car elle dépend de la qualité du lecteur multimédia servant à la reproduction.

La lecture du fichier sur un ordinateur portable a montré qu’environ 30 % du canal gauche se retrouvait sur le canal droit, selon les mesures effectuées à l’oscilloscope représentées sur la figure 4.

Figure 4. Le canal gauche (jaune) provoque une diaphonie de près de 30 % sur le canal droit (bleu) lors de la lecture du fichier WAV sur un ordinateur portable.

La reproduction de fichiers sur un téléphone mobile (années 2000) a permis d’obtenir une meilleure séparation et une diaphonie imperceptible, mais avec une légère distorsion à plein volume, comme le montre la figure 5.

Figure 5. Le téléphone mobile des années 2000 n’a provoqué aucune diaphonie, mais a montré une distorsion à plein volume.

La répétition de l’expérience sur un téléphone plus récent (génération 2018) n’a provoqué aucune diaphonie perceptible. Le signal crête atteignait bien 1 V et avec une distorsion négligeable, comme le montre la figure 6. À noter la sensibilité de 500 mV/division pour obtenir le tracé à l’oscilloscope.

Figure 6. Un téléphone de génération récente s’est montré nettement supérieur concernant la diaphonie, la distorsion et l’amplitude.

Les trois plateformes ont utilisé le même fichier. Même si LTspice produit un fichier WAV avec une séparation parfaite, la reproduction obtenue dépend considérablement de la qualité de l’étage audio du lecteur.

Cryptage vocal

Le circuit représenté sur la figure 7 montre une méthode élémentaire de cryptage de contenus vocaux. Elle permet de crypter un signal audio à l’aide d’une séquence de nombres aléatoires, puis de le décrypter.

Figure 7. Utilisation d’une source de tension aléatoire pour crypter/décrypter un fichier audio.

Le fichier voice.wav contient les données audio d’origine. Une feuille de calcul Excel sert à générer une séquence de nombres aléatoires avec une période de changement de 100 µs. Les résultats sont copiés dans un fichier texte appelé random.txt. La figure 8 contient un extrait de ce fichier.

Figure 8. Tensions aléatoires générées à l’aide d’Excel, puis enregistrées dans un fichier texte.

Ce fichier sert à générer une tension à variation aléatoire, V(RAND), grâce à la source de tension linéaire par morceaux (PWL) de LTspice.

La tension V(RAND) est ajoutée au signal vocal en utilisant la source de tension comportementale B1. La sortie est ensuite multipliée par V(RAND) et le résultat enregistré dans le fichier encrypt.wav. L’écoute du contenu du fichier encrypt.wav a montré que le son d’origine était à peine perceptible.

La figure 9 représente le signal vocal d’origine, le signal vocal crypté et les signaux vocaux décryptés dans la fenêtre de tracé LTspice.

Figure 9. Signaux vocaux d’origine; crypté et décrypté obtenus en sortie

Une deuxième source de tension comportementale a ensuite servi à décrypter le signal audio d’origine et le résultat a été enregistré dans le fichier decrypt.wav.

Production d’un fichier au format WAV à partir d’une source de tension différentielle

La syntaxe de la commande .wave ne permet pas de numériser des tensions différentielles. Cependant, il est très facile de le faire à l’aide d’une source de tension comportementale, comme l’indique la figure 10.

Figure 10. Création d’un fichier au format WAV à partir d’une source de tension différentielle.

La source de tension comportementale produit une tension égale à V(OUT1) – V(OUT2), utilisable comme à l’accoutumée dans la commande .wave.

Bien entendu, les variables transmises à la fonction de la source de tension comportementale peuvent inclure les tensions et courants produits dans le circuit et toutes les fonctions mathématiques de LTspice leur sont applicables. Le résultat obtenu peut ensuite être exporté de manière normale à partir de LTspice vers un fichier audio au format WAV.

LTspice est un puissant simulateur dont les résultats ne sont pas nécessairement limités à ses capacités internes. Grâce à la commande .wave, LTspice peut importer, transformer et exporter des fichiers audio qui pourront ensuite être lus sur un lecteur multimédia.

Simon Bramble, Ingénieur d’applications senior – Analog Devices

Source :  com-trail.fr