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).
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) :
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").
8 kHz / 8 bits / 1 sec => 8000 * 8 * 1 = 64000 bits,
soit 8 KO (basse qualité mais suffisant pour de la parole)
48 kHz / 16 bits / 1 sec => 48000 * 16 * 1 = 768000
bits, soit 96 KO (très bonne qualité, convient pour de la musique)
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.
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)..
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.
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.
(modules dispos en France chez Lextronic, chercher "Restitution sonore")
(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.