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¶
Étape |
Composant |
Rôle |
|---|---|---|
1 |
|
Détection automatique du micro par défaut via SoundDevice |
2 |
|
Enregistrement PCM en anneau (ring buffer), calcul RMS, pre-roll de 16 chunks |
3 |
|
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 :
objectSelection des peripheriques audio d’entree et de sortie, a chaud depuis le widget.
- 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é:
- detectDefaultDevices()[source]¶
Initialise les peripheriques sur les valeurs par defaut du systeme d’exploitation.
- Renvoie:
Tuple contenant (micId, micName, speakerId, speakerName).
- Type renvoyé:
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ètre |
Défaut |
Description |
|---|---|---|
|
16000 |
Fréquence d’échantillonnage en Hz |
|
0.45 |
Probabilité minimale pour considérer un chunk comme parole |
|
0.85 s |
Durée de silence consécutif avant |
|
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 :
objectDetection d’activite vocale par Silero VAD, execute sur CPU en moins d’une milliseconde par tranche de 32 ms et sans occupation de VRAM.
- speechThreshold¶
Probabilite au-dessus de laquelle la tranche compte comme de la parole.
- Type:
- __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:
- 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é:
tupleof(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 :
objectTraitement 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 (
intorNone) – 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.ndarrayorNone