Un microphone dans les appareils mobiles est un transducteur acoustique-électrique qui convertit les ondes sonores en un signal électrique pour une numérisation et un traitement ultérieurs. Les smartphones modernes utilisent des microphones MEMS avec un principe de fonctionnement capacitif et un ADC intégré. Selon Yole Group, 2025, plus de 6 milliards de microphones MEMS sont expédiés chaque année, dont 35% sont installés dans les smartphones — 3 à 4 microphones par appareil.
Points clés
Microphone est un dispositif électroacoustique qui convertit les oscillations de pression sonore en un signal électrique. Selon le principe de fonctionnement, ils se divisent en dynamiques (bobine dans un champ magnétique), à condensateur (changement de capacitance) et piézoélectriques. Dans les appareils mobiles, la grande majorité sont des microphones MEMS à condensateur en raison de leur taille miniature (2,5 × 1,5 mm) et de leur compatibilité avec le montage en surface (SMD).
Un microphone se compose d'une membrane qui vibre sous la pression sonore et d'une électrode fixe, formant un condensateur. Le changement de distance entre les plaques modifie la capacitance, ce qui module la tension de sortie. Dans les microphones MEMS, la membrane est fabriquée en polysilicium par photolithographie — cela garantit des caractéristiques identiques pour tous les microphones d'un lot.
Le signal de sortie d'un microphone MEMS est le PDM (Pulse Density Modulation) — un flux à un bit avec une fréquence d'échantillonnage de 1 à 4 MHz. Les codecs du smartphone décodent le PDM en PCM (Pulse Code Modulation) via un filtre de décimation numérique, obtenant un format audio standard de 16 à 24 bits à 44,1–96 kHz pour le traitement par l'application.
Avant l'avènement du MEMS, les appareils mobiles utilisaient des microphones électret à condensateur (ECM). Dans ceux-ci, la membrane avait une charge électrique permanente (électret), et les vibrations de la membrane créaient une tension alternative. Les microphones ECM sont plus grands (4–6 mm) et nécessitent un préamplificateur séparé, ce qui augmente la surface sur le circuit imprimé.
| Paramètre | Microphone MEMS | Électret (ECM) |
|---|---|---|
| Taille du boîtier | 2,5 × 1,5 × 1,0 mm | 4 × 2,5 × 1,5 mm |
| Sensibilité | −26 ± 1 dB (FS) | −38 ± 3 dB (FS) |
| SNR (typique) | 64–69 dBA | 58–64 dBA |
| AOP (SPL max.) | 125–135 dB | 115–125 dB |
| Consommation de courant | 150–300 µA | 300–500 µA |
| Plage de température | −40…+105 °C | −20…+70 °C |
Les microphones MEMS dominent grâce à leur taille plus petite, leurs caractéristiques stables et leur soudabilité sur les lignes SMD standard. Cependant, les ECM continuent d'être utilisés dans les appareils économiques en raison du coût inférieur du composant (0,15–0,30 $ contre 0,25–0,60 $ pour les MEMS).
Les smartphones modernes contiennent 3 à 4 microphones, dont l'emplacement détermine la qualité d'enregistrement et la suppression du bruit. Le microphone principal (inférieur) est situé sur le bord inférieur à côté du port USB-C — il enregistre la voix de l'utilisateur lors des appels et de l'enregistrement vidéo. Le microphone avant (supérieur) se trouve sur le bord supérieur pour les commandes vocales et un deuxième canal en enregistrement stéréo.
Le microphone arrière (postérieur) est généralement placé près de la caméra sur le panneau arrière et est utilisé exclusivement pour la suppression du bruit. Son signal n'est pas enregistré dans le fichier audio — il est seulement soustrait par le processeur numérique du signal du microphone principal. Dans certains flagships (iPhone 16 Pro, Samsung Galaxy S25), un quatrième microphone est installé — dans l'encoche de la caméra frontale pour améliorer l'enregistrement lors des appels vidéo.
L'enregistrement vidéo stéréo est réalisé par une combinaison des microphones inférieur et supérieur. iOS sélectionne automatiquement la paire de microphones en fonction de l'orientation de l'appareil — en mode paysage, le canal gauche provient du bord gauche, le droit du bord droit. Sur Android, cette logique dépend de l'implémentation du fabricant OEM et peut différer entre les modèles.
val recorder = AudioRecord(
MediaRecorder.AudioSource.CAMCORDER,
44100,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
bufferSize
)
recorder.startRecording()
val buffer = ShortArray(bufferSize)
while (recorder.recordingState == AudioRecord.RECORDSTATE_RECORDING) {
recorder.read(buffer, 0, buffer.size)
// Traitement du tampon PCM
}
AudioSource.CAMCORDER sélectionne le microphone optimal pour l'enregistrement vidéo — généralement le microphone principal inférieur avec contrôle automatique du gain. Pour l'enregistrement vocal, VOICE_RECOGNITION est utilisé — cette source désactive tous les filtres et la suppression du bruit pour obtenir un signal propre pour la reconnaissance vocale.
La suppression active du bruit (ANC) dans les smartphones est basée sur la méthode différentielle : un deuxième microphone (de référence) enregistre principalement le bruit ambiant, tandis que le microphone principal capture un mélange de voix et de bruit. Un processeur de signal numérique (DSP) soustrait le signal de référence du signal principal, ne laissant que la voix propre.
La qualité de la suppression du bruit dépend de la distance entre les microphones et de leur directivité. La suppression typique du bruit uniforme (avion, ventilateur) est de 20–35 dB. Pour les bruits impulsifs (claquement de porte, choc de vaisselle), un bloc supplémentaire de suppression des transitoires est utilisé, qui remplace le segment distordu par un signal approximé à partir d'échantillons voisins.
Les développeurs peuvent influencer les algorithmes de suppression du bruit uniquement via les paramètres de la session audio : sur Android — AudioManager.setParameters("noise_suppression=on/off"), sur iOS — catégorie AVAudioSession .playAndRecord avec option .allowBluetoothA2DP. Lors de l'enregistrement pour la reconnaissance, la suppression du bruit est généralement désactivée — les algorithmes STT fonctionnent plus précisément avec le signal d'origine.
AudioRecord (Android) est une API de bas niveau pour l'enregistrement direct de données PCM depuis le microphone. L'application reçoit des tampons avec des données audio brutes qui peuvent être traitées en temps réel : analyse de volume, analyse de fréquence (FFT), VAD (Voice Activity Detection). Le tampon minimum est calculé via AudioRecord.getMinBufferSize() — l'utilisation d'une taille plus petite provoque un retard ou un échec d'enregistrement.
AVAudioEngine (iOS) est un graphe modulaire de traitement audio où le nœud d'entrée (AVAudioInputNode) se connecte au mixeur principal ou directement à un gestionnaire tap. Le moteur permet l'analyse en temps réel du RMS (Root Mean Square) — un indicateur du volume du signal — et du spectre de fréquence via AVAudioUnitEQ.
Différences clés entre les plateformes : sur iOS, l'enregistrement nécessite l'activation obligatoire de AVAudioSession avec la catégorie .playAndRecord ou .record ; sur Android, l'autorisation RECORD_AUDIO (autorisation d'exécution) et une source audio microphone sont requises. Flutter utilise le plugin record pour abstraire ces différences.
import AVFoundation
let engine = AVAudioEngine()
let inputNode = engine.inputNode
let format = inputNode.outputFormat(forBus: 0)
inputNode.installTap(onBus: 0, bufferSize: 1024,
format: format) { buffer, time in
guard let channelData = buffer.floatChannelData else { return }
let frameLength = Int(buffer.frameLength)
var sumSquares: Float = 0
for i in 0..<frameLength {
sumSquares += channelData[0][i] * channelData[0][i]
}
let rms = sqrt(sumSquares / Float(frameLength))
print("Volume RMS : \(rms)")
}
try engine.start()
Le code définit un tap sur le nœud d'entrée de AVAudioEngine. Chaque tampon audio contient des données float du signal monophonique du microphone. Le RMS est calculé comme la racine carrée moyenne de l'amplitude — un indicateur standard du volume sonore dans la plage de 0,0 (silence) à ~0,5–1,0 (voix forte).
Des paramètres clés sont utilisés pour évaluer la qualité du microphone. SNR (Signal-to-Noise Ratio) est le rapport entre le niveau du signal et le bruit propre du microphone, mesuré en dBA. Plus le SNR est élevé, plus le bruit de fond dans l'enregistrement est faible. Pour les appels vocaux, 62–64 dBA suffisent ; pour l'enregistrement musical, 68+ dBA sont nécessaires.
AOP (Acoustic Overload Point) est le niveau de pression acoustique maximum (SPL) qu'un microphone peut convertir sans écrêtage. Pour un microphone MEMS typique, AOP = 125 dB. Lors de concerts (110–120 dB), l'enregistrement sera propre, mais à 130+ dB (feux d'artifice à proximité), une distorsion non linéaire apparaîtra (THD > 10%).
La plage de fréquences détermine quelles fréquences le microphone enregistre sans atténuation. Pour la voix, 300–3400 Hz (norme téléphonique, POTS) suffisent. Pour la musique et la vidéo — 20–20000 Hz. Les microphones MEMS des dernières générations de smartphones (Knowles SPH9855) offrent une plage de 30–18000 Hz avec une planéité de ±3 dB.
Foire aux questions
Les smartphones modernes contiennent 3 à 4 microphones : principal (bord inférieur, pour les appels et l'enregistrement vidéo), avant (bord supérieur, commandes vocales), arrière (panneau arrière, suppression du bruit). Les flagships (iPhone 16 Pro, Galaxy S25) ajoutent un quatrième microphone près de la caméra frontale pour améliorer l'enregistrement lors des appels vidéo.
Sur Android — demander l'autorisation d'exécution RECORD_AUDIO et utiliser AudioRecord ou MediaRecorder. Sur iOS — activer AVAudioSession avec la catégorie .playAndRecord et utiliser AVAudioEngine ou AVAudioRecorder. Les deux plateformes exigent le consentement explicite de l'utilisateur via une boîte de dialogue système.
SNR (Signal-to-Noise Ratio) est le rapport entre le signal utile et le bruit propre du microphone. Une valeur de 64 dBA signifie que lors de l'enregistrement vocal, le niveau de bruit sera 64 dB en dessous du niveau de la voix. Un SNR de 62–64 dBA est considéré comme bon pour les appels et de 68+ dBA pour l'enregistrement musical.
Raisons typiques : l'autorisation d'exécution RECORD_AUDIO n'a pas été demandée (Android 6+) ; AudioSource n'a pas été spécifié (par exemple, CAMCORDER au lieu de VOICE_RECOGNITION) ; l'appareil n'a pas de microphone (Android TV) ; un autre processus a déjà capturé le microphone. Vérifiez l'état d'initialisation via AudioRecord.getState().
Sur Android — obtenir un tampon PCM via AudioRecord.read(), calculer le RMS comme sqrt(sum(échantillons²) / count). Sur iOS — définir un tap sur AVAudioInputNode via installTap(forBus:) et calculer le RMS de la même manière à partir de floatChannelData. Le RMS est normalisé : 0,0 (silence) à environ 1,0 (maximum ADC).
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi