Skip to content

Latest commit

 

History

History
64 lines (42 loc) · 4.45 KB

tecnologie.md

File metadata and controls

64 lines (42 loc) · 4.45 KB

Tecnologie e Scelte Implementative

Librerie e framework importanti: Express (4.6.1), Bootstrap (4.0), jQuery (3.3.1), Handlebars (4.0.1).

Tutte le dipendenze segnate su package.json nella cartella webserver.

File Upload

Cosa vogliamo ottenere

L'upload di un file da locale al webserver in express.
I file saranno in particolare le registrazioni, quindi se salvate con un formato lossless raggiungeranno dai 20-100 MB (10 min di .wav registrato quanto pesa?).

Soluzioni considerate

Ogni richiesta per express passa per un middleware, di default abbiamo body-parser, che transforma automaticamente JSON e si occupa degli url codificati.

Per i file tuttavia è necessario un altro middleware, e dopo varie ricerche: express 4+ ha tolto il supporto a req.files, il miglior middleware è busboy.

Soluzione scelta

busboy è stato portato su express sotto il nome di multer. Può essere usato come middleware per-route e permette la gestione dei file comodamente.

Implementazione

  • Aggiungere ad una route (Come?)
  • Il file è disponibile nella request, su req.file

Riferimenti: "File uploading in express 4"; "Express 4 simple file uploads (multer)".

Registrazione

Cosa vogliamo ottenere

Creare un file audio comprensibile da Google Cloud Speech. Specifiche:

  • Encoding: Per i risultati migliori usare FLAC o LINEAR16 (pesanti), altrimenti OGG_OPUS (leggero ma qualità inferiore);
  • SampleRateHertz: minima/default 16000 Hz, di solito si aggira sui 44100hz;
  • Canali: deve essere mono-canale.

Soluzioni da considerare

Soluzione scelta

opus-recorder. Supportato da tutti i browser moderni e rientra esattamente nelle specifiche di codifica richieste da Google Cloud Speech.

Implementazione

  1. Richiede i permessi del microfono e assicura il funzionamento;
    1. Se non sento niente o livello molto basso segnalo con un feedback visivo;
  2. Registra localmente tramite JS un audio tramite una delle soluzioni sopra elencate;
  3. Stoppata la registrazione uploada automaticamente il file su Storage:
    • identificato dal nome-progetto e data-registrazione (YYYY-MM-DD HH:mm:ss)
    • vanno salvate altre informazioni nei metadata, come encoding, sampleRate, ecc?
  4. Finito l'upload chiede se si vuole scaricare (per backup?).