Traduction automatique du turc (Cloudflare Workers AI), non relue par l'auteur. Lire l'original en turc

← Articles

Optimisation audio de bout en bout avec l'intelligence artificielle sur Omarchy Linux : AIYIMA DAC-A5 Pro et Koss Pro/4AA (250 Ohm)

Note —

L'optimisation sans perte en 24 bits/192 kHz que nous avons réalisée avec Google Antigravity et un conseil de 12 intelligences artificielles sur Omarchy (Arch Linux) pour le DAC/ampli USB AIYIMA DAC-A5 Pro (Savitech SA9123L + ESS ES9018K2M) et le casque de studio Koss Pro/4AA (250 Ohm), via PipeWire, WirePlumber et un égaliseur paramétrique Biquad.

· 10 min de lecture
Sommaire

Résumé : Brancher un DAC/ampli USB externe et un casque de studio à haute impédance sur un système Linux de bureau suffit pour obtenir un son « plug-and-play », mais ne permet pas à lui seul de révéler la véritable capacité du matériel. Les identifications génériques du pont audio USB, la capture de la source audio par défaut par des entrées micro inexistantes, les bruits de pop/click au réveil après veille, les fréquences d'échantillonnage manquantes et les creux de fréquence propres à un casque fermé de 250 Ohm dégradent sérieusement la qualité sonore lorsqu'ils ne sont pas corrigés. Dans cet article, j'aborde d'abord les concepts d'ingénierie fondamentaux à connaître dans l'architecture audio Linux (ALSA, PipeWire, WirePlumber). Ensuite, sur notre station de travail Omarchy (Arch Linux), je partage avec tous les fichiers de configuration la manière dont nous avons optimisé pas à pas, du noyau au navigateur, le duo formé par le DAC/ampli de bureau Google Antigravity (Gemini 4 Argon) avec AIYIMA DAC-A5 Pro (Savitech SA9123L + ESS ES9018K2M) et le casque de studio classique Koss Pro/4AA (250 Ohm).

Quels sont les concepts fondamentaux à connaître dans l'architecture audio Linux ?

Lors de la configuration d'un bon matériel audio sous Linux, la plupart des problèmes rencontrés commencent par la question « y a-t-il un pilote ? ». Cependant, dans le noyau Linux moderne, le facteur déterminant de la qualité sonore n'est pas tant l'existence du pilote que les paramètres avec lesquels la pile audio (ALSA -> PipeWire -> WirePlumber) communique avec le matériel :

1. USB Audio Class 2.0 (UAC2) et contrôle d'horloge asynchrone

Les appareils DAC externes modernes utilisent la norme USB Audio Class 2.0 (UAC2). Le module intégré snd-usb-audio du noyau Linux prend directement en charge la norme UAC2 sans nécessiter de pilote externe. Le point critique ici est que le transfert de données USB fonctionne en mode asynchrone (ASYNC). En mode asynchrone, le signal d'horloge (clock) du flux audio n'est pas géré par le contrôleur USB bruyant de l'ordinateur, mais directement par l'oscillateur à cristal à faible gigue (low-jitter) du DAC.

2. Équilibre entre profondeur de bits (16 bits et 24 bits) et fréquence d'échantillonnage (Sample Rate)

Un DAC USB propose généralement plusieurs ensembles alternatifs (Altset) sur l'interface USB pour la rétrocompatibilité :

  • Altset 1 (S16_LE) : 16 bits (plage dynamique de 96 dB), qualité CD standard.
  • Altset 2 (S24_3LE) : 24 bits (plage dynamique théorique de 144 dB), qualité studio haute résolution.

Si les fréquences d'échantillonnage autorisées (allowed-rates) et le format de bits ne sont pas explicitement définis dans le serveur audio (PipeWire), le système peut compresser chaque flux audio à un niveau fixe de 48 000 Hz / 16 bits ou rééchantillonner inutilement (resampling), altérant ainsi la transparence du son.

3. Mise en veille au repos (Idle Suspend) et latence de réveil

WirePlumber suspend par défaut le nœud audio ALSA (suspend) après quelques secondes sans lecture, dans un but d'économie d'énergie. Sur les appareils DAC/ampli USB externes, ce comportement entraîne deux problèmes ennuyeux :

  1. Lorsque le son reprend, un bruit de « pop / clic » audible se produit dans le casque au réveil du relais du DAC ou de l'étage d'amplification.
  2. La première demi-seconde des sons de notification ou des morceaux est avalée jusqu'au réveil de l'appareil.

Comme un DAC/ampli de bureau est déjà alimenté par un adaptateur secteur externe, la remise à zéro du délai de veille (session.suspend-timeout-seconds = 0) offre une expérience d'écoute ininterrompue et sans bruit.

4. Compensation acoustique sur les casques fermés à haute impédance (250 Ohm)

Les casques de studio — en particulier les modèles fermés (closed-back) lourds et à fort isolement comme le Koss Pro/4AA, utilisé dans les studios de diffusion et d'enregistrement depuis 1970 — n'ont pas une réponse en fréquence plate. Le boîtier épais et les coussinets à fort amortissement utilisés pour couper le bruit extérieur provoquent une baisse dans les basses fréquences (sous 100 Hz), un creux dans les médiums (1 kHz) et une dureté due aux réflexions internes au boîtier dans le haut-médium (2,5 kHz). La manière la plus correcte de corriger cette caractéristique physique sans distorsion est une chaîne de filtres égaliseur paramétrique Biquad (PEQ) fonctionnant en précision virgule flottante 32 bits (float) dans PipeWire.

Le duo matériel : analyse de l'AIYIMA DAC-A5 Pro et du Koss Pro/4AA (250 Ohm)

Avant de commencer le processus d'optimisation, clarifions l'architecture interne et les limites électriques des deux appareils présents sur notre bureau :

Composant matériel AIYIMA DAC-A5 Pro Koss Pro/4AA
Classe d'appareil DAC USB et amplificateur de casque de bureau Casque de studio fermé (Closed-Back)
Pont audio USB Savitech SA9123L (USB ID 262a:9123) —
Puce DAC ESS Sabre ES9018K2M (architecture HyperStream 32 bits) —
Étage d'amplification et op-amp Amplificateur de casque TI TPA6120A2 + double NE5532 (DIP8 interchangeable) —
Impédance et sensibilité Prise en charge de 16 Ohm à 300 Ohm (commutateur High/Low Gain) Impédance nominale de 250 Ohm, 95 dB SPL / 1 mW
Fréquence / Résolution PCM 24 bits / 44,1 - 192 kHz (USB), THD+N de 0,003% Plage de fréquences de 10 Hz - 25.000 Hz

Grâce à sa puce d'amplification à courant élevé Texas Instruments TPA6120A2 et à son commutateur High/Low Gain en façade, l'AIYIMA DAC-A5 Pro dispose de la puissance nécessaire pour alimenter sans difficulté les transducteurs du Koss Pro/4AA d'une impédance de 250 Ohm. Cependant, lors de la première connexion de l'appareil à notre système Omarchy, nous avons identifié trois défauts importants du côté logiciel.

1. Premier diagnostic assisté par l'IA : l'identité « USB HIFI Audio » et le faux microphone

Après avoir branché l'appareil sur un port USB, nous avons examiné les sorties système via Antigravity (lsusb, aplay -l, wpctl status et /proc/asound/card2/stream0) et nous sommes tombés sur le tableau suivant :

Bus 003 Device 008: ID 262a:9123 SAVITECH Corp. USB HIFI Audio

card 2: Audio [USB HIFI Audio], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

Le descripteur matériel présent dans le fichier /proc/asound/card2/stream0 montrait clairement toutes les capacités de l'appareil :

Feixiang USB HIFI Audio at usb-0000:00:14.0-6.4, high speed : USB Audio

Playback:
  Interface 2 / Altset 1: Format: S16_LE, Channels: 2, Endpoint: 0x03 (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000 (Bits: 16)
  Interface 2 / Altset 2: Format: S24_3LE, Channels: 2, Endpoint: 0x03 (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000 (Bits: 24)

Capture:
  Interface 3 / Altset 1-2: Format: S16_LE / S24_3LE, Endpoint: 0x82 (ADAPTIVE)

Cet examen a révélé trois constats critiques :

  1. Dénomination EEPROM générique : Le fabricant (Feixiang/Aiyima) avait écrit le texte générique "USB HIFI Audio" dans la mémoire du pont audio USB Savitech SA9123L, au lieu du véritable modèle de l'appareil. C'est pourquoi, dans le menu audio d'Omarchy et dans toutes les applications, l'appareil apparaissait sous le nom "USB HIFI Audio".
  2. La fausse entrée microphone s'emparait du microphone par défaut : Bien que l'AIYIMA DAC-A5 Pro ne possède aucune entrée microphone physique, sa puce Savitech SA9123L, en raison de son firmware standard, déclarait au système une fausse entrée audio nommée Interface 3 Capture. Plus important encore, comme WirePlumber accorde une priorité élevée à une carte son USB nouvellement branchée, il avait redirigé le microphone par défaut du système vers cette fausse entrée (* 104. USB HIFI Audio Analog Stereo). Si ce problème n'avait pas été corrigé, le microphone serait resté totalement muet lors des appels vocaux.
  3. Fréquence d'échantillonnage manquante (176.400 Hz) : La valeur 176400 ne figurait pas parmi les fréquences d'horloge autorisées dans notre configuration PipeWire, alors que le DAC prenait en charge matériellement toutes les fréquences (44100, 48000, 88200, 96000, 176400 et 192000 Hz).

2. Configuration sans perte 24 bits / 192 kHz sur PipeWire et WirePlumber

Dans un premier temps, nous avons mis à jour notre fichier ~/.config/pipewire/pipewire.conf.d/99-custom-audio.conf en définissant toutes les fréquences natives prises en charge par le DAC-A5 Pro ainsi que la qualité de rééchantillonnage maximale (resample.quality = 10) :

context.properties = {
    default.clock.rate = 48000
    default.clock.allowed-rates = [ 44100, 48000, 88200, 96000, 176400, 192000 ]
    default.clock.min-quantum = 32
    default.clock.max-quantum = 2048
    default.clock.quantum = 512
    resample.quality = 10
}

Ensuite, en créant le fichier ~/.config/wireplumber/wireplumber.conf.d/aiyima-dac-a5-pro.conf, nous avons résolu les trois problèmes avec un seul ensemble de règles :

  • Nous avons renommé le nom du périphérique et du nœud de sortie en AIYIMA DAC-A5 Pro.
  • Nous avons imposé le format S24_3LE (24 bits) et désactivé la mise en veille en cas d'inactivité (session.suspend-timeout-seconds = 0, node.pause-on-idle = false).
  • Nous avons complètement désactivé la fausse entrée microphone créée par la puce Savitech SA9123L (~alsa_input.usb-Feixiang_USB_HIFI_Audio-01.*) (node.disabled = true), de sorte que le microphone numérique intégré de l'ordinateur est automatiquement redevenu l'entrée par défaut.
## AIYIMA DAC-A5 Pro (Savitech SA9123L + ESS ES9018K2M - USB ID 262a:9123)
## 1. Cihaz ve cikis adini "USB HIFI Audio" yerine "AIYIMA DAC-A5 Pro" olarak duzeltir.
## 2. 24-bit (S24_3LE) bit-perfect formatini, tum yerel frekanslari (44.1-192 kHz)
##    ve sifir uyku gecikmesini (pop/click onleme) zorunlu kilar.
## 3. SA9123L USB koprusunun olusturdugu sahte mikrofon girisini devre disi birakir.

monitor.alsa.rules = [
  {
    matches = [
      {
        device.name = "alsa_card.usb-Feixiang_USB_HIFI_Audio-01"
      }
    ]
    actions = {
      update-props = {
        device.description = "AIYIMA DAC-A5 Pro"
        device.nick = "AIYIMA DAC-A5 Pro"
      }
    }
  }
  {
    matches = [
      {
        node.name = "~alsa_output.usb-Feixiang_USB_HIFI_Audio-01.*"
      }
    ]
    actions = {
      update-props = {
        node.description = "AIYIMA DAC-A5 Pro"
        node.nick = "AIYIMA DAC-A5 Pro"
        audio.format = "S24_3LE"
        audio.allowed-rates = [ 44100, 48000, 88200, 96000, 176400, 192000 ]
        resample.quality = 10
        session.suspend-timeout-seconds = 0
        node.pause-on-idle = false
        priority.driver = 2000
        priority.session = 2000
      }
    }
  }
  {
    matches = [
      {
        node.name = "~alsa_input.usb-Feixiang_USB_HIFI_Audio-01.*"
      }
    ]
    actions = {
      update-props = {
        node.disabled = true
      }
    }
  }
]

Nous avons également vérifié dans le mixeur matériel ALSA (amixer -c 2 contents) que la valeur PCM Playback Volume est à 7/7 (0,00 dB, niveau maximal sans perte).

3. Conception d'un égaliseur paramétrique Biquad PipeWire pour le Koss Pro/4AA (250 Ohm)

Dans un deuxième temps, nous avons examiné le casque Koss Pro/4AA (250 Ohm) que nous avons connecté à la sortie du AIYIMA DAC-A5 Pro. Des mesures acoustiques indépendantes en laboratoire (mesures de référence d'Audio Science Review et d'Innerfidelity) révèlent quatre caractéristiques acoustiques fondamentales du Koss Pro/4AA, dues à sa structure à coque fermée lourde :

  1. Chute profonde des infra-basses (60 - 110 Hz) : Bien que les épais coussinets remplis de liquide/air assurent l'étanchéité, ils amortissent prématurément l'énergie sous 100 Hz.
  2. Creux dans les médiums à 1 kHz : Un creux marqué au centre de 1.000 Hz repousse les voix et les instruments acoustiques à l'arrière de la scène.
  3. Résonance de caisse fermée à 2,5 kHz : Un pic étroit dû à la réflexion de la coque fermée se situe autour de 2.500 Hz ; il provoque une fatigue auditive lors d'écoutes prolongées.
  4. Amortissement des aigus au-delà de 3 kHz : La structure classique à grand diaphragme sonne sombre après 3.000 Hz et laisse de côté les détails d'air et de cymbales.

Les profils d'égalisation automatiques standard corrigent cette courbe mais appliquent une atténuation de préampli (preamp) très sévère, de l'ordre de -11,1 dB. Or, sur un casque d'impédance 250 Ohm et de sensibilité 95 dB/mW, une atténuation numérique de -11,1 dB réduit inutilement le volume sonore. Nous avons donc conçu notre profil d'égaliseur paramétrique Biquad à 5 bandes avec un préampli de -6,0 dB, qui évite totalement l'écrêtage (clipping) numérique tout en préservant la puissance de pilotage de l'ampli :

Étage Type de filtre PipeWire Fréquence ($F_c$) Gain Facteur $Q$ Rôle acoustique
Préampli bq_highshelf (0 Hz) 0,0 Hz -6,0 dB 1,0 Évite l'écrêtage numérique, préserve la puissance de pilotage à 250 Ohm
Bande 1 bq_lowshelf 61,0 Hz +5,0 dB 1,0 Restaure l'extension des infra-basses (sub-bass)
Bande 2 bq_lowshelf 108,0 Hz +3,5 dB 1,0 Équilibre le corps bas-médium et la chaleur des basses
Bande 3 bq_peaking 1000,0 Hz +4,0 dB 2,0 Ramène à un niveau naturel le creux des voix et des instruments à 1 kHz
Bande 4 bq_peaking 2500,0 Hz -3,0 dB 4,0 Lisse la dureté de la résonance à 2,5 kHz de la coque fermée
Bande 5 bq_highshelf 3000,0 Hz +5,5 dB 1,0 Ouvre les détails des aigus au-delà de 3 kHz et l'ampleur de la scène

Nous avons placé cette chaîne de filtres directement comme module noyau PipeWire (libpipewire-module-filter-chain), sans avoir besoin de lancer une application externe, dans le fichier ~/.config/pipewire/pipewire.conf.d/98-koss-pro4aa-eq.conf, et nous avons connecté sa sortie directement au matériel alsa_output.usb-Feixiang_USB_HIFI_Audio-01.analog-stereo :

# Koss Pro/4AA (250 Ohm) Referans Parametrik EQ Profili (AIYIMA DAC-A5 Pro Hedefli)
# ASR / AutoEQ akustik olcumlerine dayali 5-bant Biquad PEQ + Preamp zinciri

context.modules = [
    { name = libpipewire-module-filter-chain
        args = {
            node.description = "AIYIMA DAC-A5 Pro (Koss Pro/4AA EQ)"
            media.name       = "AIYIMA DAC-A5 Pro (Koss Pro/4AA EQ)"
            filter.graph = {
                nodes = [
                    {
                        type    = builtin
                        name    = eq_preamp
                        label   = bq_highshelf
                        control = { "Freq" = 0.0 "Q" = 1.0 "Gain" = -6.0 }
                    }
                    {
                        type    = builtin
                        name    = eq_band_1
                        label   = bq_lowshelf
                        control = { "Freq" = 61.0 "Q" = 1.0 "Gain" = 5.0 }
                    }
                    {
                        type    = builtin
                        name    = eq_band_2
                        label   = bq_lowshelf
                        control = { "Freq" = 108.0 "Q" = 1.0 "Gain" = 3.5 }
                    }
                    {
                        type    = builtin
                        name    = eq_band_3
                        label   = bq_peaking
                        control = { "Freq" = 1000.0 "Q" = 2.0 "Gain" = 4.0 }
                    }
                    {
                        type    = builtin
                        name    = eq_band_4
                        label   = bq_peaking
                        control = { "Freq" = 2500.0 "Q" = 4.0 "Gain" = -3.0 }
                    }
                    {
                        type    = builtin
                        name    = eq_band_5
                        label   = bq_highshelf
                        control = { "Freq" = 3000.0 "Q" = 1.0 "Gain" = 5.5 }
                    }
                ]
                links = [
                    { output = "eq_preamp:Out" input = "eq_band_1:In" }
                    { output = "eq_band_1:Out" input = "eq_band_2:In" }
                    { output = "eq_band_2:Out" input = "eq_band_3:In" }
                    { output = "eq_band_3:Out" input = "eq_band_4:In" }
                    { output = "eq_band_4:Out" input = "eq_band_5:In" }
                ]
            }
            audio.channels = 2
            audio.position = [ FL FR ]
            capture.props = {
                node.name        = "effect_input.koss_pro4aa_eq"
                media.class      = Audio/Sink
                device.icon-name = "audio-headphones"
                priority.driver  = 2100
                priority.session = 2100
            }
            playback.props = {
                node.name          = "effect_output.koss_pro4aa_eq"
                node.passive       = true
                target.object      = "alsa_output.usb-Feixiang_USB_HIFI_Audio-01.analog-stereo"
                stream.dont-remix  = true
            }
        }
    }
]

Grâce à cette architecture, le menu audio de la barre supérieure d'Omarchy (Quickshell) propose désormais deux sorties distinctes :

  1. AIYIMA DAC-A5 Pro (Koss Pro/4AA EQ) : la sortie par défaut à calibration acoustique, utilisée lorsque le Koss Pro/4AA est branché.
  2. AIYIMA DAC-A5 Pro : la sortie matérielle pure (plate), accessible en un clic lorsqu'un autre casque ou une enceinte de référence est connecté.

4. Contrôles matériels et validation de bout en bout avec YouTube Music (Opus 251)

Une fois la couche logicielle terminée, nous avons vérifié en direct la cohérence entre YouTube Music (réglage de qualité audio « Toujours élevée ») et les contrôles physiques de l'ampli.

Pourquoi la compatibilité entre YouTube Music et Opus 251 est-elle parfaite ?

En qualité élevée, YouTube Music transmet le flux audio au format Opus 251 (160 kbps VBR, 48 000 Hz). Comme l'horloge de notre système (default.clock.rate = 48000) coïncide exactement avec la fréquence d'échantillonnage native d'Opus 251 (48 000 Hz), les données audio entrent sans subir aucune conversion de fréquence d'échantillonnage (resampling) directement dans la chaîne de filtres Biquad en virgule flottante 32 bits (F32P), puis atteignent l'AIYIMA DAC-A5 Pro en 24 bits (S24_3LE).

Dans la sortie en direct de pw-top, les valeurs de latence et de format de toute la chaîne sont les suivantes :

S   ID  QUANT   RATE    WAIT    BUSY   W/Q   B/Q  ERR FORMAT           NAME
R   68   1024  48000 124,4us   9,8us  0,01  0,00    0    S24LE 2 48000 alsa_output.usb-Feixiang_USB_HIFI_Audio-01.analog-stereo
R   40      0      0   5,2us  10,4us  0,00  0,00    0         F32P 2 0  + effect_input.koss_pro4aa_eq
R   41      0      0   2,2us  47,1us  0,00  0,00    0         F32P 2 0  + effect_output.koss_pro4aa_eq
R  106   1024  48000  28,9us  29,9us  0,00  0,00    0    F32LE 2 48000  + Google Chrome

La charge imposée au processeur par l'égaliseur paramétrique à 5 bandes et le calcul du gain d'entrée n'est que de 47,1 microsecondes (0,00 B/Q) et le compteur d'erreurs est au niveau 0 (ERR = 0).

Règles d'or pour l'ampli physique et les réglages du lecteur

Voici les règles physiques que nous appliquons pour tirer la plus grande plage dynamique du duo Koss Pro/4AA de 250 Ohms et AIYIMA DAC-A5 Pro :

  • Commutateur de gain : le commutateur de gain du DAC-A5 Pro doit rester en position High (H / gain élevé) ; une excursion de tension élevée est indispensable pour le contrôle des basses profondes et la réponse aux transitoires des transducteurs de 250 Ohms.
  • Boutons Bass et Treble : la courbe de fréquence étant corrigée au millimètre par le PEQ Biquad logiciel, les potentiomètres physiques Bass et Treble de l'appareil doivent rester exactement au centre (position 12 heures / 0 dB neutre).
  • Audio numérique à 100 %, contrôle analogique : le curseur de volume de l'interface YouTube Music comme le volume système d'Omarchy doivent rester fixes à 100 % (1.00) ; le niveau sonore ne doit être contrôlé que par la molette analogique de l'AIYIMA DAC-A5 Pro. Ainsi, aucune perte de profondeur de bits due à une atténuation numérique ne se produit.

Mon analyse

  • Sous Linux, l'optimisation d'un DAC USB ne passe pas par l'installation d'un pilote, mais par une bonne configuration de la pile audio : l'AIYIMA DAC-A5 Pro, basé sur Savitech SA9123L et ESS ES9018K2M, fonctionne dès la sortie de boîte en 24 bits / 192 kHz asynchrone (ASYNC) avec le pilote snd-usb-audio du noyau Linux. Cependant, les règles WirePlumber sont essentielles pour corriger le nom générique « USB HIFI Audio », empêcher la fausse entrée micro de couper le vrai microphone et supprimer les bruits de détonation liés à la mise en veille.
  • Un casque classique de 250 Ohms comme le Koss Pro/4AA se métamorphose avec un égaliseur paramétrique bien réglé : le Koss Pro/4AA, sombre et aux médiums en retrait lorsqu'il est écouté seul, gagne à la fois des basses profondes et des voix claires lorsqu'il est associé à la chaîne de filtres Biquad à 5 bandes que nous avons mise en place dans PipeWire et à la puissance d'attaque en gain élevé (High Gain) de l'AIYIMA DAC-A5 Pro.
  • La gestion de système assistée par intelligence artificielle réduit le temps de diagnostic à quelques minutes : analyser en quelques minutes, avec Antigravity, toutes les couches, des tables de flux /proc/asound aux paramètres matériels ALSA, des faux points de capture USB à la chaîne de filtres DSP 32 bits, puis les transformer en fichiers de configuration permanents, a directement porté notre confort de travail quotidien et d'écoute musicale sur Omarchy à un niveau supérieur.

Sources