Electronique > Théorie > Puces sonores

Dernière mise à jour : 05/04/2020

Présentation

Qu'appelle-t-on puce sonore ? 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 décrit sommairement les 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 se gave 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 sans doute a fait un bond en arrière de 30 ans et qu'il n'arrive pas à se détacher de son vieux magnétophone à cassettes. 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, caméscopes, lecteurs multimédias et autres tablettes. Mémoires répandues 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é si cela tenait aussi longtemps).

puces_sonores_003a

Le son était échantillonné (découpé) mais pas numérisé - on stockait directement la valeur analogique échantillonné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éclenché 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 (circuits "ChipCorder" du fabricant Nuvoton) avec la même simplicité de mise en oeuvre, 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, un enregistrement numérique peut être médiocre si on le désire (mais qui donc pourrait le désirer ?). 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 / en fréquence) et quantification (résolution en 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émoires 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. Même en 1 bit, le cerveau est capable 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-devant, 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 supé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). Si une grande quantité de mémoire est requise, peut-être cela vaut-il la peine de s'intéresser aux mémoires de masse qu'on trouve dans le grand public sous la forme de cartes SD ou clés USB...

Format des enregistrements audio : linéaire ou compressé ?
Dans un fichier "brut / linéaire" (WAV ou AIFF par exemple) on ne cherche pas à réduire la quantité d'informations numériques stockées, les échantillons d'origine qui composent le son sont tous présents. L'avantage est une qualité sonore supérieure, l'inconvénient est une plus grande occupation disque. Dans un fichier "compressé" (MP3, AAC ou OGG Vorbis par exemple) on réduit le débit des données en supprimant des informations supposées être "inaudibles". L'avantage est une occupation disque fortement réduite, l'inconvénient est une baisse de qualité sonore. Pour une écoute hi-fi, le format linéaire est recommandé, même si avec un fichier compressé MP3 auquel on a appliqué une faible réduction de débit (320 kbps) la perte de qualité est minime. Pour la restitution à la volée de "fragments sonores" (bruitages ou petites phrases) la notion de qualité perd un peu son sens, car dans ce contexte d'utilisation, ce qui importe est de reconnaître un son ou de comprendre des mots. Un fichier linéaire de faible qualité (8 bits / 32 kHz par exemple) ou un fichier MP3 fortement compressé en débit (64 kbps par exemple) peuvent très bien faire l'affaire.
D'un point de vue purement technique, la solution la plus simple est à priori d'utiliser un format audio "brut" et sans compression de débit, tel que le format WAV, AIFF 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à, il est inutile de compter sur un PIC 16F ou 18F pour assurer la décompression en temps réel du fichier en un flux audible. A ce stade, il faut passer par un composant spécifique qui gère le MP3 (par exemple un VS1011E ou VS1053) et y ajouter ce qu'il faut pour piloter le tout (un microcontrôleur 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. Pour preuve j'y suis arrivé, voir mon Lecteur audio 005.

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 déjà enregistré. Mais il est aussi possible d'utiliser des mémoires que l'on ne peut programmer qu'une seule fois et qui souvent coûtent moins cher. 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 passante 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 et livres audio
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 diffusion sonore se fait soit avec un haut-parleur plat (comme on le voit sur la photo ci-devant) soit avec un transducteur piézo qui est encore moins épais. Les livres audio électronique sont de la même veine. On y trouve le même type de "puce" enrobée et programmée une fois pour toute (tout à droite sur la photo ci-après)..

puces_sonores_004a
Photo fournie par Phlippe H. (merci)

Le message subliminal est qu'avec de tels transducteurs, il n'est pas utile de s'acharner à vouloir traiter des fichiers de très haute qualité... Mais la qualité sonore est-elle la première chose qui passe par la tête du bienheureux destinataire qui ouvre la carte de voeux ou le livre ?

Système de lecture sonore à faire soi-même

La présence sur le marché de modules "compatibles Arduino" ou "compatible uC quelconque" permet de simplifier la réalisation de lecteurs de son 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 sons que l'on peut piloter avec n'importe quel type de microcontrôleur.

mikroe_mp3_click_001
Module de décodage MP3 avec VS1053

Je ne me suis bien sûr pas privé de faire quelques tests avec divers circuits de décodage qui au final ont conduit à des produits finis bien sympas (lecteur audio 004, lecteur audio 005 ou encore lecteur audio 007).
 

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êts à l'emploi qui peuvent déclencher un ou plusieurs sons à la demande, soit par de simples boutons-poussoirs, soit par des commandes logicielles (en RS232 par exemple). Dans le deuxième cas, il faut rajouter un circuit de commande dédié, à base de microcontrôleur. 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 en France chez Lextronic, chercher "Restitution sonore")

mp3-player_yx5300_001a
(modules dispos sur divers sites chinois)

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. Pour la plupart de ces modules, on peut regretter le nombre limité de commandes directes, qui ne permettent pas de jouer un grand nombre de fichiers différents sans y ajouter un microcontrôleur qui transmet les commandes idoines. Ce qu'on peut retenir de ces modules tout faits, c'est qu'ils ne sont pas chers (certains ne coûtent qu'un euro), mais que leur mise en oeuvre n'est pas toujours aisée. Ayant travaillé avec plusieurs de ces modules, je peux apporter mon expertise pour répondre à des besoins spécifiques.