Electronique > Théorie > Puces sonores

Dernière mise à jour : 11/03/2013

Présentation

Qu'est-ce qu'une puce sonore ? Ce n'est ni plus ni moins qu'une certaine quantité de mémoire dans laquelle on stocke un signal audio sous une forme numérique ou analogique et qu'on peut rejouer à volonté. Cet article parle un peu des méthodes utilisées pour stocker et restituer des signaux audio à la demande, avec un circuit purement électronique et autonome. Y sont abordées les notions de durée, de qualité sonore et d'espace mémoire.

Divers types de mémoires

Nous vivons dans une ère numérique où le stockage de masse s'empiffre de 0 et de 1. Et quand on dit que le son peut être enregistré sous une forme analogique, on se dit qu'il y a erreur sur le sujet. Que l'auteur a fait un bond en arrière de 30 ans et qu'il n'arrive pas à se détacher de son vieux magnétophone à cassette. Pourtant, les mémoires analogiques ont la vie dure, puisqu'on en trouve encore sur le marché de l'électronique (série ISD1700). Pourquoi ? J'imagine qu'il y a sans doute un rapport avec le coût de revient et la durée d'enregistrement possible... Car en fait, où se trouve la difficulté ? Un lecteur MP3 complet avec son écouteur peut sans doute tenir dans une oreille et proposer plusieurs heures d'écoute avec une mémoire flash de quelques centaines de MO ou quelques GO. Et le signal audio enregistré (musique la plupart du temps) est sous sa noble forme électronique, numérique, hi-fidelity. Pour l'instant, gardons juste à l'esprit qu'il existe deux types de mémoires : les mémoires purement numériques et les mémoires analogiques en circuit intégré (on ne parlera pas de bande magnétique, c'est promis).

Mémoires numériques
Il s'agit des plus connues. Ce sont des mémoires de ce type qu'on utilise dans les ordinateurs, clés USB, appareils photo, camescopes, lecteurs multimédia et autres tablettes. Mémoires répendues et dont le prix au MO ou GO ne fait que baisser, quand les usines de fabrication n'explosent pas. A priori, ce type de mémoire peut se voir proposé à un coût raisonnable, vu sa large diffusion. Oui mais sous quelle forme ? Quand on veut construire un circuit électronique qui restitue un son à la demande, une carte SD ou une clé USB ne suffit pas. Il faut bien un appareil pour lire son contenu, à l'endroit où on le désire et quand on le veut. Ce type de mémoire convient très bien à l'amateur, s'il maîtrise les procédures de conversion du signal audio (convertisseurs A/N et N/A) et la lecture en continu sans heurt.

Mémoires analogiques
Les mémoires analogiques ont permis très tôt de conserver un enregistrement sonore dans un circuit intégré avec très peu de moyens. Le circuit ISD1016 (série ISD1000) par exemple permettait de sauver jusqu'à 16 secondes de son dans des cellules de type "condensateur", avec une durée de stockage de 10 à 100 ans sans alimentation (je n'ai pas vérifié).

puces_sonores_003a

Le son était échantillonné (découpé) mais pas numérisé - on stockait directement la valeur analogique échantillonée. C'est ce type de circuit qui a équipé un certain temps des porte-clés et des jouets "perroquets" qui répétaient ce qu'on disait. Si vous avez connu ce type de circuit, vous devez sûrement vous souvenir du côté "étouffé" du son. Ca passait encore pour de la voix ou un aboiement de chien (déclanché par une alarme), mais pour de la musique... Les circuits ISD étaient en effet assez restreints côté bande passante (échantillonnage à 8 kHz pour le ISD1016), nous verrons plus loin comment ce point technique joue sur la qualité. Mais d'un autre côté, ce type de circuit permet de disposer d'un système d'enregistrement / lecture avec un seul circuit intégré, on y relie directement le microphone et le haut-parleur, et hop ! ça roule. Quand on recherche aujourd'hui (mars 2013) de tels circuits, on se rend compte qu'il existe plusieurs séries de circuits ISD avec la même simplicité de mise en oeuvre (fabricant Nuvoton), et que pour certains le signal audio est désormais converti en numérique avant d'être stocké en ADPCM dans de la mémoire flash... Normal mon brave monsieur, les temps changent et il faut s'adapter. 

Taille mémoire, durée de stockage et qualité sonore

De nos jours, on a une tendance naturelle à penser qu'un enregistrement numérique est forcément meilleur qu'un enregistrement analogique. Normal, on a été un peu formaté pour ça. Pourtant, je peux vous prouver qu'un enregistrement numérique peut être de très haute qualité, de qualité convenable ou médiocre. Voici quelques échantillons sonores basés sur une même source audio de qualité 48 kHz / 24 bits (exports en MP3 à 48 kHz / 256 kbps, possible que vous entendiez peu de différence entre les deux premiers extraits en MP3, différences plus flagrantes avec les fichiers WAV) :


Extrait - 48 kHz / 24 bits - MP3 / WAV

Extrait - 22 kHz / 16 bits - MP3 / WAV

Extrait - 8 kHz / 8 bits - MP3 / WAV

La qualité sonore d'un enregistrement numérique dépend de la qualité sonore de la source originale bien sûr, mais aussi de paramètres techniques tels que fréquence d'échantillonnage (résolution temporelle) et quantification (résolution d'amplitude). Dans tous les cas, la source sonore originale doit être de la meilleure qualité possible, même si après on sait qu'elle va être dégradée.

Fréquence d'échantillonnage
La fréquence d'échantillonnage (exprimée en kHz dans le domaine du son) représente la précision de découpage du son dans le sens de la largeur (temps). Plus elle est élevée et plus on peut enregistrer des sons aigus (plus un son est aigu et plus son onde bouge vite, pour le suivre il faut donc aller plus vite). Par exemple avec une fréquence d'échantillonnage de 8 kHz, il est techniquement impossible d'enregistrer des sons dont la fréquence dépasse 3,5 kHz (en théorie 4 kHz mais ce n'est pas bon du tout). Cela convient bien pour de la voix ou des bruitages simples, mais pour de la musique c'est un peu léger. Avec une fréquence d'échantillonnage de 48 kHz, on peut enregistrer des sons dont la fréquence atteint 20 kHz, qui est la limite haute de l'oreille humaine quand on est jeune (en théorie on pourrait aller jusqu'à 24 kHz, mais je passe les détails). Evidement, une telle explication se résume à dire : eh bien dans ce cas, autant utiliser une fréquence d'échantillonnage la plus élevée possible et tout est bon ! Oui, c'est vrai. Et c'est bien ce qu'on fait sur un ordinateur quand on travaille dans le domaine du son (48 kHz ou 96 kHz, voire plus). Seulement voilà, là nous ne sommes pas sur un ordinateur avec ses GO de RAM et ses TO de mémoire de masse. On est dans un petit circuit intégré dont la taille mémoire est comptée. Quand le nombre de cellules mémoire augmente, le prix suit.

Quantification
La quantification représente la précision de découpage du son dans le sens de la hauteur (amplitude électrique) et est exprimée en bits. Un son peut être quantifié en 4, 8, 12, 16, 20 ou 24 bits. Et même en 1 bit, le cerveau est capable de d'accrocher des choses utiles, il faut l'entendre pour le croire (j'ai entendu) ! Plus la quantification est élevée et meilleur sera le résultat sonore. Une quantification de 8 bits suffit pour de la parole (certains systèmes se contentent de 4 bits) alors qu'une quantification de 16 bits au minimum est requise pour de la musique de bonne qualité. Pour faire simple, disons qu'à chaque bit de quantification supplémentaire on multiplie par deux la précision. Avec 8 bits en effet, on dispose de 256 barreaux d'échelle pour situer l'amplitude du signal sonore à un instant donné, alors qu'avec 16 bits on dispose de 65536 barreaux !

Taille mémoire et durée
Plus la fréquence d'échantillonnage est élevée et meilleur est le rendu sonore. Et plus la résolution de quantification est élevée et meilleur est le rendu sonore. Max + Max = 2Max. Prenons un exemple pour situer un peu les choses du point de vue technique, avec un enregistrement sonore monophonique d'une durée d'une seconde (message "bonjour").
Le constat est évident : la place que va occuper un ou plusieurs messages peut enfler à la vitesse grand V. Il faut donc trouver un compromis entre espace mémoire, qualité sonore et durée, les trois paramètres allant de pair (si on en augmente un, l'autre diminue). Procéder comme suit :
1 - Déterminer la durée d'enregistrement max.
2 - Définir la qualité sonore requise.
3 - Décider si l'enregistrement sera oui ou non définitif (de ce choix dépendra la solution finale).
Prenons un exemple concret : vous désirez restituer un message de bienvenue quand un visiteur traverse une barrière infrarouge entre deux sculptures dans une exposition. Ce message dure 5 secondes et il ne s'agit que de parole. Une fréquence d'échantillonnage de 8 kHz et une quantification de 8 bits pourraient à priori suffire, mais après avoir écouté les extraits ci-avant, vous vous dites qu'il est préférable d'opter pour du 22 kHz / 16 bits. Dans ce cas, la taille mémoire qu'occupera votre message sera de :
Qté = 22 kHz / 16 bits / 5 sec => 22000 * 16 * 5 = 1760000 bits, soit 220 KO (un octet = huit bits)
Il ne vous reste plus qu'à trouver une mémoire pour stocker cela, sachant que le plus souvent les références font allusion à la taille en bits et non en octets. Par exemple, la mémoire 24FC512 (liaison I2C) comporte 512 Kbit, ce qui correspond à 64 KO - et la mémoire 24FC1025 dispose du double, soit 128 KO. Pour ces deux modèles, ce n'est pas suffisant et il vous faut chercher un modèle de taille suppérieure. Vous n'en trouvez pas ? Et si la solution était d'utiliser deux circuits intégrés de mémoire et non un seul ? Plus de fils de liaisons ? Pas vraiment, puisque plusieurs mémoires à accès série (I2C ou SPI) peuvent être câblées "en parallèle" (distinction entre elles par adresses différentes).

Format des enregistrements audio
La solution la plus simple est à priori d'utiliser un format audio "brut" et sans compression de débit, tel que le format WAV ou RAW (le RAW est comme le WAV, mais sans entête). Ce format convient en tout cas pour des messages courts. Pour des messages longs et/ou de très bonne qualité, on peut commencer à envisager un système de lecture capable de prendre en charge le format MP3. Mais là, ce n'est pas la peine de compter sur un PIC 16F ou 18F pour assurer la décompression du fichier en un flux audible. A ce stade, il faut passer par un composant spécifique qui gère le MP3 pour soulager le reste de la mécanique (par exemple un VS1011E) et y ajouter ce qu'il faut pour piloter le tout (un PIC par exemple, mais il va de soi que d'autres microcontrôleurs conviennent). MikroPascal donne à ce sujet un exemple assez parlant sur son site (lecture MP3 avec PIC 18F4550 et décodeur VS1011E), qui montre que la prise en charge du MP3 n'est pas si complexe qu'il y paraît d'abord, et que même un débutant averti et débrouillard peut y arriver.

Enregistrements définitifs ou modifiables ?

L'avantage d'utiliser des mémoires de type flash / EEProm, I2C ou SPI est de pouvoir changer à tout moment leur contenu, et donc de pouvoir modifier ultérieurement le message enregistré. Mais il est aussi possible d'utiliser des mémoires que l'on ne peut programmer qu'une seule fois et qui bien souvent coûtent moins cher. Le tout est de savoir ce qu'on veut. Dans tous les cas, il faut recourir à un programmateur, et si vous n'êtes pas équipé il faut demander gentiment à votre voisin qui lui est forcément outillé. En effet, la sauvegarde de vos échantillons sonores dans une (E)PROM nécessite un programmateur de (E)PROM et si vous décidez d'utiliser des mémoires réinscriptibles pilotées par un microcontrôleur, il faudra programmer le microcontrôleur. Un conseil quelque soit votre choix : utilisez un support de circuit intégré pour pouvoir changer le composant programmé, le cas échéant. Pas forcément requis pour un système ré-enregistrable, mais pour un système à usage unique... Pour un usage "simple" et pour des messages qui ne dépassent pas quelques minutes, vous pouvez vous contenter d'un circuit de la série ISD1700 ou ISD4003 qui permet d'adopter un rythme d'échantillonnage cohérent avec la qualité et la durée souhaitée (par exemple ISD4003-04M pour 4 minutes d'enregistrement à 8 kHz, bande pasante de 3,4 kHz). Si votre projet est de type industriel et qu'il doit prendre peu de place (par exemple s'il doit tenir dans une carte d'anniversaire ou dans la couverture d'un livre), la chose se corse. Il faut en effet réaliser le montage en miniature, avec des composants CMS.

Cartes de voeux musicales
Pour les produits extra-plats tels que les cartes de voeux qui font de la musique quand on les ouvre, les puces sonores ne sont même plus dans un boîtier plastique mais sous une fine couche de résine. Il s'agit bien sûr de restituer un message sonore (musical la plupart du temps) qui ne peut être modifié, inutile de chercher à les reprogrammer.

puces_sonores_001a puces_sonores_001b puces_sonores_001c

Dans ce type de réalisation, le moindre millimètre de hauteur compte. A ce titre, la restitution sonore se fait soit avec un haut-parleur plat (comme on le voit sur la photo ci-avant) soit avec un transducteur piézo qui est encore moins épais. Le message subliminal est qu'avec de tels transducteurs, ce n'est peut-être pas la peine de s'acharner à vouloir traiter des fichiers de très haute qualité...

Système de lecture sonore à faire soi-même
La présence sur le marché de modules "compatibles Arduino" ou "compatibles uC quelconque" permet de simplifier la réalisation de lecteurs de sons basés sur une carte SD ou clé USB, et ce à un coût raisonnable. Il existe en effet des modules de lecture/décodage de fichiers son que l'on peut piloter avec n'importe quel type de microcontrôleur.

mikroe_mp3_click_001
Module décodage MP3 avec VS1053

Je ne me suis pas privé de faire quelques tests qui au final ont conduit à des produits finis bien sympas (lecteur audio 004 et lecteur audio 005).
 
Modules de restitution sonore prêts à l'emploi ?
Pour le plus grand bonheur de ceux qui ne veulent pas s'impliquer dans un projet électronique (par manque de temps ou de connaissances), il existe des modules prêt à l'emploi qui peuvent déclancher un ou plusieurs sons à la demande. Ces modules sont souvent basés sur la lecture de fichiers audio stockés dans une carte MMC, SD ou microSD, parfois sur une clé USB.

puces_sonores_002a puces_sonores_002b
(Modules dispos chez Lextronic, chercher "Restitution sonore")

Ces modules prennent en charge soit des fichiers WAV (résolution 8 bits pour les moins chers, 16 bits pour les plus performants), soit des fichiers MP3, soit des fichiers au format propriétaire qui nécessite un logiciel spécifique pour la conversion de vos enregistrements audio. Certains permettent le déclenchement des sons par des commandes directes en tout ou rien (interrupteur), certaines nécessitent l'envoi de commandes logicielles dans un format données et imposent dans ce cas l'ajout d'un petit microcontrôleur pour faire le boulot ingrat.