---
# System prepended metadata

title: Sviluppo integrazioni con servizi ASR

---

# Sviluppo integrazioni con servizi ASR

## Live

### Amberscript
- il processing dello stream audio di ciascun utente deve essere effettuato sul client (browser) dell'utente;
- verrà utilizzata la libreria RecordRTC per l'encoding dello stream audio nel formato PCM compatibile con Amberscript
- c'è un problema di sicurezza nell'utilizzo del servizio direttamente da browser, in quanto la chiave deve essere presente a livello di client; il problema può essere risolto implementando un nuovo servizio che faccia da proxy (vedi dettagli sotto);

### Deepgram
- l'interfacciamento con Daily è diretto
- introdurre l'implementazione di fix per l'eliminazione di termini ripetuti (es. "ciao" e "e")

## Batch
### Amberscript
- Daily restituisce come output video WebM
- Amberscript richiede MP4/audio
- Si rende quindi necessario il transcoding (previsto utilizzo di Amazon Elastic Transcoder)

Si stimano 7 gg di sviluppo per l'implementazione



## Gestione sviluppi
- Predisporre, in fase di creazione esperimenti, la possibilità di scegliere il servizio di ASR
- Predisporre la possibilità di accendere/spegnere il servizio batch

## Proxy transcript (Amberscript o servizio X)
![Diagram proxy](https://i.imgur.com/mYdIo0Y.png)

### Flusso
1. Durate la live interview all'intervistato e intervistatore verrà aperto uno Stream audio e i vari chunk saranno inviati via wss al server di proxy
2. Il server di proxy gestisce una queue dei chunk in entrara con altre info inviate dal client sender
    - Interview ID
    - User ID
    - User Name
4. La coda viene gestita inviando il payload al servizio di Transcribe _(via private token)_
5. La risposta del transcribe viene inviata all'applicativo in modo da salvare via DB Redis i vari transcribe, il timestamp e l'actor
6. La risposta verrà inviata anche al intervistatore, nel caso la connessione rimanga aperta, in modo da poter gestire lato Client intervistatore un broadcast al resto degli utenti


### Note
- Possibile altra implementazione è far collegare tutti gli utenti al wss e inviare a tutti i client con lo stesso `Interview ID` il transcribe, togliendo la logica di chat broadcast di daily
- Lo store lato applicativo serve sia per effettuare l'assemblamento dei transcribe e salvare l'intera chiamata, sia per inviare il parziale fino a quel momento se un seeker entra a call iniziata
- L'utilizzo di un servizio proxy consente di poter gestire l'aggiunta di eventuali nuovi servizi, mantenendo la logica lato client più stabile possibile
