Domanda

Supponiamo che tu abbia una sala conferenze e che le riunioni si svolgano in orari arbitrari e improvvisati.Desideri conservare una registrazione audio di tutte le riunioni.Per renderlo il più semplice possibile da usare, non sarebbe richiesta alcuna azione da parte dei partecipanti alla riunione, sanno solo che quando avranno una riunione in una stanza specifica ne avranno una registrazione.

Ovviamente limitarsi a registrare ininterrottamente sarebbe inefficiente in quanto sarebbe uno spreco di archiviazione dei dati e una seccatura da vagliare.

Immagino che ci siano due modi fondamentali per farlo.

  1. La registrazione si avvia e si arresta semplicemente in base alle soglie del livello sonoro.
  2. La registrazione è continua, ma suddivisa in blocchi di X minuti.I blocchi che non contengono alcun contenuto vengono scartati.

Preferisco il secondo modo perché ritengo che ci sia meno rischio di perdere dati a causa di avvii ritardati o di trigger non riusciti.

Vorrei implementare in Python e su Windows, se possibile.

Suggerimenti per l'implementazione?

Considerazioni bonus che probabilmente meritano le proprie domande:

  • miglior formato audio e compressione per questo scopo
  • qualsiasi modo per determinare quanti parlanti sono presenti, presupponendo che l'identificazione non sia realistica
È stato utile?

Soluzione

Questo è uno di quei progetti in cui il percorso verrà definito maggiormente su ciò che è a portata di mano per un pronto riutilizzo.

Probabilmente troverai più semplice registrare continuamente e salvare i dati in blocchi (ad esempio, pezzi della durata di un'ora).

Il formato dipenderà da ciò che hai sotto forma di strumenti di registrazione e libreria di elaborazione audio.Potresti anche scoprire di usarne due.Un formato, come WAV codificato PCM per la registrazione e l'elaborazione, ma MP3 compresso per l'archiviazione.

Una volta ottenuto un flusso audio, dovrai accedervi in ​​un modulo PCM (elenco dei valori di ampiezza).Un semplice approccio di media sarà probabilmente sufficiente per rilevare quando c'è una conversazione.Attributi di ottimizzazione tipici:* Livello di energia medio da innescare * Il tempo è necessario essere al livello di energia o inferiore per identificare l'arresto e l'avvio (raccomando due valori diversi) * Dimensione della finestra di analisi per la media

Per quanto riguarda il numero dei partecipanti, a meno che non troviate una biblioteca che lo faccia, non vedo una soluzione facile.Ho già utilizzato motori di riconoscimento vocale e ho anche eseguito una quantità ragionevole di elaborazione audio e non ho visto alcun modo "semplice" per farlo.Se dovessi guardare, cerca le università che fanno ricerche sull'analisi del parlato.Potresti trovare alcuni prototipi che puoi modificare per dare alcuni indizi al tuo software.

Altri suggerimenti

Credo che avrai difficoltà a fare questo interamente in Python. Si sta parlando di fare frequenza / analisi ampiezza dei file MP3. Si dovrà aprire il file e cercare una soglia di volume, quindi tagliare le porzioni che vanno sotto di tale soglia. Capire quanti altoparlanti sono presenti richiederebbe l'elaborazione del segnale molto avanzato.

Una sommaria ricerca su Google alzato nulla per me. Si potrebbe avere più fortuna alla ricerca di un-off-shelf soluzione.

Come aside- ci possono essere complicazioni legali per avere un registratore in esecuzione 24/7 senza lasciare che la gente sappia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top