Module Audio (mirza.audio)

Le module mirza.audio gère la capture microphone, la détection d’activité vocale (VAD) et le traitement acoustique bas niveau.


Pipeline de Capture Audio

Séquence de traitement audio en capture

Étape

Composant

Rôle

1

DeviceManager

Détection automatique du micro par défaut via SoundDevice

2

AudioProcessor

Enregistrement PCM en anneau (ring buffer), calcul RMS, pre-roll de 16 chunks

3

SileroVadDetector

Analyse VAD par fenêtre de 512 samples — décision speech/silence


Routage des Périphériques Audio (DeviceManager)

Module de gestion et de routage dynamique des peripheriques audio. Permet d’enumerer et de selectionner dynamiquement les entrees micro et sorties audio sans regles materielles specifiques hardcodees.

class mirza.audio.deviceManager.DeviceManager[source]

Bases : object

Selection des peripheriques audio d’entree et de sortie, a chaud depuis le widget.

micId

Index du micro selectionne.

Type:

int

micName

Libelle du micro selectionne.

Type:

str

speakerId

Index de la sortie selectionnee.

Type:

int

speakerName

Libelle de la sortie selectionnee.

Type:

str

__init__()[source]

Initialise le gestionnaire et prend les interfaces par defaut.

Type renvoyé:

None

getAvailableDevices()[source]

Renvoie la liste exhaustive de tous les peripheriques audio disponibles.

Renvoie:

Dictionnaire contenant deux cles : “inputs” et “outputs”, chacune associant une liste de dictionnaires descriptifs des peripheriques.

Type renvoyé:

dict

detectDefaultDevices()[source]

Initialise les peripheriques sur les valeurs par defaut du systeme d’exploitation.

Renvoie:

Tuple contenant (micId, micName, speakerId, speakerName).

Type renvoyé:

tuple

setMicDevice(deviceId)[source]

Modifie le microphone actif.

Paramètres:

deviceId (int) – Identifiant entier du peripherique audio d’entree.

Renvoie:

True si le peripherique a ete selectionne avec succes, False sinon.

Type renvoyé:

bool

setSpeakerDevice(deviceId)[source]

Modifie la sortie audio active.

Paramètres:

deviceId (int) – Identifiant entier du peripherique audio de sortie.

Renvoie:

True si le peripherique a ete selectionne avec succes, False sinon.

Type renvoyé:

bool


Détecteur d’Activité Vocale Neuronal (SileroVadDetector)

Important

Le modèle de détection VAD neural est un réseau léger (~1 Mo) chargé une seule fois au démarrage. Il opère sur des fenêtres de 512 samples à 16 kHz et atteint une précision > 95 % sur la détection de parole française.

Paramètres VAD configurables

Paramètre

Défaut

Description

sampleRate

16000

Fréquence d’échantillonnage en Hz

speechThreshold

0.45

Probabilité minimale pour considérer un chunk comme parole

silenceDurationThreshold

0.85 s

Durée de silence consécutif avant commitAudioStream

preRollChunks

16

Chunks conservés avant la détection de parole (pre-roll)

Détection d’activité vocale (VAD) neuronale via Silero VAD ONNX.

Module encapsule le modèle Silero VAD v4 pour segmenter en temps réel les trames de parole et les silences sans solliciter la mémoire GPU.

class mirza.audio.vadDetector.SileroVadDetector(modelPath='/tmp/silero_vad.onnx', sampleRate=16000, speechThreshold=0.45)[source]

Bases : object

Detection d’activite vocale par Silero VAD, execute sur CPU en moins d’une milliseconde par tranche de 32 ms et sans occupation de VRAM.

Paramètres:
  • modelPath (str)

  • sampleRate (int)

  • speechThreshold (float)

modelPath

Chemin du fichier ONNX, telecharge au premier besoin.

Type:

str

sampleRate

Frequence d’echantillonnage attendue.

Type:

int

speechThreshold

Probabilite au-dessus de laquelle la tranche compte comme de la parole.

Type:

float

__init__(modelPath='/tmp/silero_vad.onnx', sampleRate=16000, speechThreshold=0.45)[source]

Initialise le modèle Silero VAD ONNX et prépare la session d’inférence.

Paramètres:
  • modelPath (str, optional) – Chemin local de stockage du fichier ONNX, default is « /tmp/silero_vad.onnx ».

  • sampleRate (int, optional) – Fréquence d’échantillonnage de l’audio en Hz, default is 16000.

  • speechThreshold (float, optional) – Seuil de probabilité pour valider la parole, default is 0.45.

reset()[source]

Remet a zero l’etat recurrent du reseau.

Type renvoyé:

None

predict(audioChunk512)[source]

Évalue une tranche audio de 512 échantillons (32 ms à 16 kHz).

Paramètres:

audioChunk512 (np.ndarray) – Tranche audio mono float32 normalisée entre -1.0 et 1.0.

Renvoie:

Tuple (isSpeech, confidenceProbability) où isSpeech est True si la probabilité dépasse speechThreshold.

Type renvoyé:

tuple of (bool, float)


Traitement Audio et Enregistrement VAD (AudioProcessor)

Module de traitement du signal audio et gestion des flux PCM.

Fournit des utilitaires de décodage multi-formats (WebM, WAV, MP4, OGG), de calcul de puissance RMS, d’enregistrement cyclique basé sur VAD et de normalisation des niveaux crêtes.

mirza.audio.audioProcessor.TARGET_SAMPLE_RATE = 16000

Sample rate every STT engine expects. All decoding resamples to this rate, so it is a hard requirement of the ASR models rather than a tunable preference.

class mirza.audio.audioProcessor.AudioProcessor(config=None)[source]

Bases : object

Traitement du signal audio : capture, detection d’activite vocale, restitution.

Paramètres:

config (AudioConfig | None)

config

Configuration acoustique du systeme.

Type:

AudioConfig

__init__(config=None)[source]

Initialise le processeur audio avec sa configuration acoustique.

Paramètres:

config (AudioConfig, optional) – Configuration audio du système. Si None, les valeurs par défaut sont appliquées.

static decodeAudioBytes(audioBytes)[source]

Decode n’importe quel conteneur audio en tableau numpy float32 16kHz mono.

Paramètres:

audioBytes (bytes) – Flux binaire d’un conteneur audio (WAV, WebM, MP4, AAC, OGG).

Renvoie:

Tableau numpy contenant les echantillons audio float32 et la frequence d’echantillonnage.

Type renvoyé:

tuple[np.ndarray, int]

static normalizeAudio(audioSamples, targetPeak=0.95, minSignalThreshold=0.005, allowAmplification=False, maxGainFactor=3.5)[source]

Centre le signal audio (suppression DC) et evite l’ecretage numerique. Si allowAmplification est actif, calibre les signaux faibles avec un gain plafonne.

Paramètres:
  • audioSamples (np.ndarray) – Echantillons audio a normaliser.

  • targetPeak (float, optional) – Valeur crete maximale absolue souhaitee, default is 0.95.

  • minSignalThreshold (float, optional) – Seuil minimal d’amplitude crete pour l’amplification optionnelle, default is 0.005.

  • allowAmplification (bool, optional) – Si True, calibre les signaux faibles jusqu’a targetPeak (plafonne a maxGainFactor), default is False.

  • maxGainFactor (float, optional) – Facteur maximal de gain applique aux signaux faibles (+11 dB max), default is 3.5.

Renvoie:

Tableau numpy contenant les echantillons audio traites en float32.

Type renvoyé:

np.ndarray

static recordSpeechWithVad(micId, vadDetector, audioConfig, onAudioLevel=None, stopSignal=None)[source]

Capture la voix avec coupure rapide par Silero VAD et streaming des niveaux.

Paramètres:
  • micId (int or None) – Identifiant du peripherique audio d’entree ou None pour le peripherique par defaut.

  • vadDetector (SileroVadDetector) – Detecteur neuronal d’activite vocale.

  • audioConfig (AudioConfig) – Configuration acoustique et de coupure du silence.

  • onAudioLevel (callable, optional) – Fonction de rappel recevant le niveau RMS et la probabilite de parole.

  • stopSignal (callable, optional) – Fonction indiquant si l’enregistrement doit s’interrompre immediatement.

Renvoie:

Tableau des echantillons de parole enregistres ou None si aucun signal vocal detecte.

Type renvoyé:

np.ndarray or None