1 of 13

PROJET - MODULE ARCHITECTURE AVANCÉE - 2026

NeuralCodec RPi

Neural Codecs for Real-Time Voice Transmission over

Low-Bandwidth Networks on Raspberry Pi

classique

neuronal

Réalisé Par: EL AMRANI Chakir - LASFAR Ibrahim - FELLAHI Zakaria

Université Mohammed V de Rabat - Master Informatique et Télécommunications (M.I.T)

Jury : Pr. BELMAJDOUB Hanae

github.com/AmraniCh/neuralcodec-rpi

REPOSITORY

2 of 13

PROBLÉMATIQUE

Le problème du faible débit

1

Les limites des codecs classiques

Opus, AMR-WB deviennent inutilisables sous 6–8 kbps.

2

Des réseaux très contraints

Satellite, radio HF, IoT : quelques kbps disponibles seulement.

3

Le neuronal, une promesse non prouvée

Meilleure qualité à bas débit — mais tient-il sur du matériel embarqué ?

QUESTION CENTRALE

Pour un réseau à faible débit, quel type de codeur est le plus adapté ?

Classique

ou

Neuronal

… et peut-il tourner en temps réel sur un Raspberry Pi 4 (2 Go) ?

NeuralCodec-RPi · Architecture Avancée

02

3 of 13

CADRAGE

Réseaux cibles & points de fonctionnement

Les réseaux à faible débit visés imposent quelques kbps pour la voix. Nous fixons deux points de test.

RÉSEAU

DÉBIT VOIX

Radio HF (militaire)

0,6 – 2,4 kbps

Satellite Iridium

2,2 – 3,8 kbps

IoT LoRa

0,3 – 1,3 kbps

2G GPRS

30 – 50 kbps

2G EDGE

130 – 200 kbps

Tableau 1 — Débits voix des réseaux à faible débit visés.

Deux points de fonctionnement retenus

POINT BAS

3 kbps

Compatible satellite Iridium & radio HF militaire.

POINT HAUT

6 kbps

Qualité acceptable pour de la 2G dégradée.

NeuralCodec-RPi · Architecture Avancée

03

4 of 13

LES CANDIDATS

Quatre codecs, deux familles

Tons chauds = codecs classiques (règles DSP) · tons froids = codecs neuronaux (IA)

CLASSIQUE

Opus

DÉBIT

6 – 64 kbps

Xiph.Org — standard du web

CLASSIQUE

Codec2

DÉBIT

1,2 – 3,2 kbps

David Rowe — radio très bas débit

NEURONAL

EnCodec

DÉBIT

1,5 – 24 kbps

Meta AI (2022)

NEURONAL

SoundStream

DÉBIT

3,2 – 9,2 kbps

Google (2021) — via Lyra v2

NeuralCodec-RPi · Architecture Avancée

04

5 of 13

MÉTHODOLOGIE

Benchmarking

Qualité — PESQ

Standard international ITU-T P.862. Score perceptuel de 1,0 à 4,5. Seuil d'intelligibilité : 2,5.

Débit réel

Calculé depuis la taille du fichier compressé (kbps).

Temps réel — RTF

Temps de calcul / durée audio. RTF < 1 = temps réel.

SETUP EXPÉRIMENTAL

CARTE

Raspberry Pi 4 · 2 Go RAM

CPU

4× Cortex-A72 @ 1,8 GHz

JEU DE TEST

LibriSpeech · 11,72 s

FORMAT

16 kHz · mono · PCM

NeuralCodec-RPi · Architecture Avancée

05

6 of 13

RÉSULTATS · QUALITÉ

Qualité (PESQ) en fonction du débit

À 6 KBPS

EnCodec 3,14 vs Opus 2,44

+0,73 PESQ pour le neuronal

SOUS 8 KBPS

Opus s'effondre (2,44 à 6 kbps)

les classiques décrochent

ZONE 3–6 KBPS

seuls les neuronaux passent 2,5

= seuil d'intelligibilité

NeuralCodec-RPi · Architecture Avancée

06

7 of 13

RÉSULTATS · MATÉRIEL

Tient-il en temps réel sur le Pi ? (RTF)

RTF < 1 = temps réel. Mesuré à l'encodage et au décodage sur le Raspberry Pi 4.

CODEC

RTF ENCODE

RTF DÉCODE

TEMPS RÉEL

● Codec2

0,007

0,006

✓ OUI

● Opus

0,04

0,02

✓ OUI

● SoundStream

0,07

0,07

✓ OUI

● EnCodec

1,50

1,67

✗ NON

EnCodec offre la meilleure qualité mais dépasse RTF 1 → impossible en temps réel sur le Pi. SoundStream : marge ×14.

NeuralCodec-RPi · Architecture Avancée

07

8 of 13

LA RÉPONSE

Quel codec gagne ?

Chaque codec a sa zone d'excellence. Le gagnant doit combiner qualité (PESQ) ET faisabilité temps réel (RTF).

< 3 kbps

Codec2 / EnCodec

PESQ ~1,8–2,0

RTF : Codec2 ✓ EnCodec ✗

EnCodec : bonne qualité mais RTF > 1 → pas temps réel

3 – 8 kbps

SoundStream / EnCodec

PESQ 2,5 – 3,1

RTF : SoundStream 0,07 ✓

Seul codec au-dessus du seuil PESQ 2,5 ET temps réel

> 8 kbps

Opus

PESQ 4,0 +

RTF : 0,04 ✓

Meilleure qualité, coût CPU minimal

DÉCISION

SoundStream — seul codec intelligible (PESQ > 2,5) à bas débit ET temps réel sur le Pi (RTF 0,07). EnCodec écarté : RTF > 1.

NeuralCodec-RPi · Architecture Avancée

08

9 of 13

ARCHITECTURE

Pipeline en sept couches, deux Raspberry Pi

PI A — ÉMETTEUR

PI B — RÉCEPTEUR

Microphone

Entrée audio · 20 Hz – 20 kHz · échantillonnage 44,1 kHz

Couche 1 — Capture Audio

Trames de 20 ms · rééchantillonnage → 16 kHz

Couche 2 — Encodeur Neuronal

Compression du signal

Couche 3 — Quantification (RVQ)

≈ 8 octets / trame

Haut-parleur

Sortie audio

Couche 7 — Lecture Audio

Restitution temps réel

Couche 6 — Décodeur Neuronal

Reconstruction du signal

Couche 5 — Déquantification

Reconstruction du vecteur latent

Couche 4 — Transport UDP (socket réseau)

Compression SoundStream neuronale 100 % locale: débit ≈ 3,2 kbps, contre 256 kbps en PCM non compressé.

NeuralCodec-RPi · Architecture Avancée

09

10 of 13

FONDEMENTS THÉORIQUES

Mathématiques de la compression

Recherche du mot-code (RVQ)

À chaque étage de quantification résiduelle, l'algorithme sélectionne dans le dictionnaire (codebook) le mot-code minimisant la distance euclidienne au vecteur résiduel courant, puis propage le résidu à l'étage suivant.

i* : indice du mot-code retenu · rₙ : résidu après l'étage n · N ≈ 4 à 8 étages

Calcul du débit binaire

Avec un flux de 50 trames par seconde (trames de 20 ms) et environ 8 octets de codes RVQ par trame :

Débit net des seules données RVQ. Le débit global du système (≈ 3,2 kbps) inclut une marge de synchronisation et l'overhead protocolaire UDP.

NeuralCodec-RPi · Architecture Avancée

10

11 of 13

DÉMONSTRATION

Communication vocale en direct

Sur les deux Raspberry Pi : on parle dans le micro du Pi A, la voix sort du haut-parleur du Pi B.

Pi B — récepteur (démarré en 1er)

$ live_receiver.py --codec soundstream \� --bitrate 3.2 --play�En écoute sur le port UDP...�♪ Lecture en direct sur le haut-parleur

Pi A — émetteur

$ live_transmitter.py --host 10.168.39.101 \� --codec soundstream --bitrate 3.2�> Capture micro → encode → envoi�✓ Flux temps réel (~2 s de latence)

Résultat voix intelligible transmise à 3,2 kbps en temps réel entre deux Pi — soit ~80× de compression par rapport au signal brut (256 kbps).

NeuralCodec-RPi · Architecture Avancée

11

12 of 13

🔬

Démonstration

Simulation de transmission vocale en temps réel

entre deux Raspberry Pi

Pi A (10.168.39.100) → UDP → Pi B (10.168.39.101)

NeuralCodec-RPi · Architecture Avancée

12

13 of 13

CONCLUSION

Faisabilité démontrée

OUI

à la question centrale

les codecs neuronaux sont viables en temps réel sur Pi 4

3-6

kbps · ~80×

SoundStream : voix intelligible, compression 80×

0,07-0.08

RTF sur le Pi

SoundStream: marge ×14 par rapport au temps réel

PERSPECTIVES

1. Quantification INT8 d'EnCodec pour le rendre temps réel sur Pi

2. Évaluation subjective ViSQOL (objectif) pour comparer les codecs au-delà de PESQ

​

3. Élargir le benchmark: comparer d'autres codecs neuronaux récents (DAC, Funcodec)

Merci de votre attention — des questions ?