Un rilevatore di lingua risponde sempre, anche davanti a un colpo di tosse. Lascia attivo il rilevamento per audio pulito o in più lingue, e indica la lingua quando si parla una sola lingua su rumore o con un forte accento.
Ogni trascrizione inizia con una domanda che chi legge non vede mai: che lingua è questa? Se la risposta è sbagliata, il resto della pipeline lavora duramente per produrre un'assurdità scorrevole. Questo articolo spiega che cosa ascolta un rilevatore di lingua, come si comporta il rilevamento per l'audio in diretta e per i file, e quando conviene indicare tu stesso la lingua.
Un rilevatore di lingua non capisce quello che viene detto. Osserva il suono in sé: l'inventario di consonanti e vocali, come vengono accentuate le sillabe, il ritmo delle frasi e le parole brevi e frequenti su cui ogni lingua si appoggia. Lo spagnolo ha un proprio insieme di vocali e un proprio ritmo; olandese e tedesco condividono moltissimo, ma si separano su alcuni suoni. Pochi secondi di parlato chiaro bastano di solito a distinguerli.
Molti riconoscitori lo fanno come effetto collaterale del riconoscimento delle parole. Decidono la lingua dall'inizio dell'audio, come una probabilità per ogni lingua che conoscono. Da questa scelta di progetto derivano due conseguenze. Le probabilità sommano sempre a uno, quindi non esiste una risposta «nessuna lingua»: silenzio, un colpo di tosse o una sigla musicale ricevono comunque una lingua, spesso con un punteggio di sicurezza allegato. E la decisione si basa sull'inizio, che è il campione peggiore che si possa scegliere. Molte registrazioni si aprono con saluti, nomi e toponimi, che portano pochissimo segnale linguistico: «Good morning, Maria, welcome to Berlin» è quasi tanto tedesco quanto inglese. Altre si aprono con silenzio o con un colpo di tosse, e a un rilevatore chiesto di decidere su quello, decide comunque, con sicurezza, su niente. Anche l'audio reale fa lo stesso: un sermone in romeno che si apre con rumore di sala e «Bună dimineața» può essere sentito facilmente come l'italiano «Buona domenica», con totale certezza.
L'errore costa più di quanto sembri. Un riconoscitore che decodifica nella lingua sbagliata non sbaglia l'ortografia: riscrive. «For God so loved the world», decodificata come romeno, è diventata «Forgot to love the world». Il romeno «mândria slujește», decodificato come inglese, è diventato «Pride serves», che è una traduzione accurata di una frase che nessuno aveva chiesto di tradurre. Le parole sono scorrevoli e la trascrizione non dà alcun segno che qualcosa non va, ed è proprio questo a rendere l'errore così costoso.
Cinque cose ingannano i rilevatori più spesso:
Quale di questi ti colpisce dipende dal fatto che l'audio arrivi in diretta o sia già in un file.
Per una trascrizione in diretta non esiste una registrazione completa da esaminare. L'audio arriva mentre viene pronunciato, e la trascrizione deve arrivare insieme ad esso. Quindi la lingua viene rilevata mentre il parlante parla, e viene seguita se cambia. È questo che significa la nota sotto l'interruttore Spoken language quando avvii una trascrizione in diretta nella Dashboard: la lingua del parlante viene rilevata automaticamente, e può cambiare in qualsiasi momento.
Un cambio di lingua viene confermato prima di essere applicato, così una singola porzione rumorosa non trascina la trascrizione in un'altra lingua. Il punto debole è l'inizio: se le prime parole sono un saluto rumoroso, la prima riga potrebbe uscire nella lingua sbagliata. Indicare la lingua evita il problema.
I file funzionano in modo diverso, perché l'intera registrazione è già disponibile.
Un file è un problema più facile: non c'è bisogno di fidarsi dei primi secondi. Per un file la lingua viene decisa dall'intera registrazione, quindi un saluto rumoroso all'inizio non può determinarla da solo.
La lingua di un file è comunque un'ipotesi di lavoro, non un verdetto. Una registrazione che cambia davvero lingua a metà, come un'intervista che passa dall'inglese al romeno nella sua seconda metà, viene seguita e non forzata, e viene gestita anche quella che alterna le lingue per tutta la durata.
Un rilevatore che decide una volta e non torna mai indietro è sicuro di sé nel punto sbagliato.
Nessun rilevatore aiuta molto quando l'intera registrazione è rumorosa. Il rilevamento è l'impostazione predefinita perché è corretto nella maggior parte dei casi e non ti costa nulla. Per alcune registrazioni, però, dovresti indicare la lingua, e la Dashboard ti dice quali: indicare la lingua parlata migliora la precisione su registrazioni rumorose e con accenti marcati.
Sono i casi in cui il rilevatore ha meno elementi su cui lavorare. Il rumore elimina gli indizi da cui dipende; un accento marcato li sposta verso un'altra lingua; una coppia di lingue affini offre pochi indizi già in partenza. Un parlante inglese con un forte accento portoghese in una sala riverberante è difficile da collocare dal solo suono, e se il rilevatore lo colloca male, la trascrizione traduce in portoghese il parlato inglese per tutto il tempo in cui dura l'errore. Indicare la lingua elimina la domanda, così tutto lo sforzo va sulle parole.
Una breve lista di controllo:
Indicare la lingua è un'impostazione della trascrizione, non del tuo account, quindi puoi decidere registrazione per registrazione. Tutto quanto detto sopra si riduce a un'unica opzione dell'API.
spokenLanguage assente significa rilevare; session.update a metà flussoNell'API, spokenLanguage è un codice lingua come en; se lo ometti, la lingua viene rilevata. Compare nelle settings di una trascrizione di file o di link e nelle opzioni di una sessione in tempo reale. Rilevamento e indicazione coprono le stesse 100 lingue. La traduzione in fino a 10 di esse è una scelta separata e non dipende da quale lingua è stata rilevata o indicata. Come la traduzione tenga il passo con il parlato è l'argomento di Latenza della traduzione in diretta, spiegata.
{ "name": "Board meeting", "settings": { "spokenLanguage": "en", "speakerLabels": "auto" } }
Una sessione in tempo reale accetta la stessa opzione quando viene creata, e puoi cambiarla mentre l'audio sta scorrendo. Un frame di testo session.update con un nuovo spokenLanguage si applica al parlato da quel momento in poi; impostarlo a "" o "auto" riporta la sessione al rilevamento, e un codice non supportato viene ignorato. Una vista dei sottotitoli con un pulsante della lingua può permettere all'operatore di indicare la lingua nel momento in cui vede una prima riga sbagliata, senza riconnettersi.
{ "type": "session.update", "spokenLanguage": "ro" }
L'elenco dei codici, con i loro nomi, si trova in GET /v1/languages, che non richiede una chiave. Il flusso completo in tempo reale, dalla creazione di una sessione sul tuo server alla lettura delle bozze e dei commit, è in Trascrizione in tempo reale tramite WebSocket, e il riferimento interattivo è in {{api}}/docs. Nella Dashboard, la stessa scelta è l'interruttore Spoken language quando avvii una nuova trascrizione, e le chiavi per l'API si trovano in Developers.