Un detector d'idioma sempre dona una resposta, fins i tot a una tos. Deixa la detecció activada per a àudio net o en diverses llengües, i indica l'idioma quan només es parla una llengua sobre soroll o amb un accent marcat.
Cada transcripció comença amb una pregunta que el lector no veu mai: en quina llengua és això? Si l'encerts malament, la resta de la cadena de processament s'hi esforça molt per produir un text fluid però absurd. Aquest article explica què escolta un detector de llengua, com es comporta la detecció en àudio en directe i en fitxers, i quan et convé més indicar tu mateix la llengua.
Un detector de llengua no entén què s'està dient. Mira el so en si: l'inventari de consonants i vocals, com s'accentuen les síl·labes, el ritme de les frases i les paraules curtes i freqüents de les quals totes les llengües en depenen. L'espanyol té el seu propi conjunt de vocals i ritme; el neerlandès i l'alemany comparteixen molt, però se separen en un grapat de sons. Uns quants segons de parla clara solen bastar per distingir-los.
Molts reconeixedors ho fan com a producte secundari del reconeixement de les paraules. Decideixen la llengua a partir de l'inici de l'àudio, com una probabilitat per a cada llengua que coneixen. Aquest disseny té dues conseqüències. Les probabilitats sempre sumen u, de manera que no hi ha una resposta «cap llengua»: el silenci, una tos o una síntesi musical també reben una llengua, sovint amb una puntuació de confiança. I la decisió es pren a partir de l'inici, que és la pitjor mostra que es pot triar. Molts enregistraments comencen amb salutacions, noms i topònims, que porten molt poca informació de llengua: "Good morning, Maria, welcome to Berlin" és gairebé tan alemany com anglès. Altres comencen amb silenci o una tos, i un detector al qual se li demana que decideixi sobre això decidirà igualment, amb confiança, sobre res de res. Els àudios reals també ho fan: un sermó en romanès que comença amb soroll de la sala i «Bună dimineața» pot sentir-se com l'italià «Buona domenica», amb total certesa.
El cost d'una resposta errònia també és pitjor del que sembla. Un reconeixedor que descodifica en la llengua equivocada no escriu malament; reescriu. «For God so loved the world», descodificat com a romanès, va sortir com «Forgot to love the world». El romanès «mândria slujește», descodificat com a anglès, va sortir com «Pride serves», que és una traducció correcta d'una frase que ningú no havia demanat traduir. Les paraules són fluides i la transcripció no n'avisa de cap manera, cosa que fa que l'error sigui car.
Cinc coses enganyen més sovint els detectors:
Quin d'aquests problemes et toca depèn de si l'àudio arriba en directe o ja és en un fitxer.
En una transcripció en directe no hi ha un enregistrament sencer per mirar. L'àudio arriba mentre es parla, i la transcripció ha d'arribar al mateix temps. Per això la llengua es detecta mentre el parlant parla, i se segueix si canvia. Això és el que vol dir la nota sota el commutador Spoken language quan inicies una transcripció en directe al tauler: la llengua del parlant es detecta automàticament, i pot canviar en qualsevol moment.
Un canvi es confirma abans d'aplicar-lo, de manera que un sol tros de soroll no arrossega la transcripció cap a una altra llengua. El punt feble és l'inici: si les primeres paraules són una salutació amb soroll, la primera línia pot sortir en la llengua equivocada. Indicar la llengua evita això.
Els fitxers funcionen de manera diferent, perquè tot l'enregistrament ja hi és.
Un fitxer és un problema millor: no cal confiar en els primers segons. En un fitxer, la llengua es decideix a partir de l'enregistrament sencer, de manera que una salutació amb soroll al principi no pot decidir-la.
La llengua d'un fitxer continua sent una hipòtesi de treball, no un veredicte. Un enregistrament que canvia de llengua de manera real a mitja estona, com una entrevista que passa de l'anglès al romanès a la segona meitat, es segueix en lloc de forçar-se, i també es tracta un enregistrament que alterna entre llengües al llarg de tot el recorregut.
Un detector que decideix una vegada i no torna a mirar és segur de si mateix en el lloc equivocat.
Cap detector no ajuda gaire quan tot l'enregistrament és sorollós. La detecció és el valor per defecte perquè és correcta la major part del temps i no et costa res. Per a alguns enregistraments, però, has d'indicar la llengua, i el tauler indica quins són: indicar la llengua parlada millora l'encert en enregistraments sorollosos i amb accents marcats.
Aquests són els casos on la detecció té menys per treballar. El soroll elimina les pistes de les quals depèn un detector; un accent marcat les desplaça cap a una altra llengua; una parella de llengües molt properes ofereix poques pistes des del principi. Un parlant d'anglès amb un accent portuguès marcat en una sala amb reverberació és difícil d'ubicar només pel so, i si el detector l'ubica malament, la transcripció converteix la parla en anglès en portuguès durant tot el temps que duri l'error. Indicar la llengua elimina la pregunta, de manera que tot l'esforç va a les paraules.
Una llista curta:
Indicar la llengua és una configuració de la transcripció, no del compte, de manera que pots decidir-ho per cada enregistrament. Tot l'anterior es resumeix en una sola opció de l'API.
spokenLanguage vol dir detectar; session.update en ple fluxA l'API, spokenLanguage és un codi d'idioma com en; si l'omets, la llengua es detecta. Apareix dins de settings en una transcripció de fitxer o d'enllaç, i a les opcions d'una sessió en temps real. La detecció i la indicació cobreixen les mateixes 100 llengües. La traducció a fins a 10 d'aquestes és una elecció separada, i no depèn de quina llengua s'hagi detectat o indicat. Com la traducció segueix el ritme de la parla és el tema de La latència de la traducció en directe, explicada.
{ "name": "Board meeting", "settings": { "spokenLanguage": "en", "speakerLabels": "auto" } }
Una sessió en temps real pren la mateixa opció en crear-la, i pots canviar-la mentre l'àudio circula. Un missatge de text session.update amb un spokenLanguage nou s'aplica a la parla a partir d'aquell moment; si el poses a "" o "auto", la sessió torna a la detecció, i un codi no compatible s'ignora. Una vista de subtítols amb un botó d'idioma pot permetre que l'operador indiqui la llengua en el moment que veu una primera línia equivocada, sense reconnectar.
{ "type": "session.update", "spokenLanguage": "ro" }
La llista de codis, amb els seus noms, és a GET /v1/languages, que no necessita clau. El flux complet en temps real, des de crear una sessió al teu servidor fins a llegir esborranys i confirmacions, és a Transcripció en temps real sobre un WebSocket, i la referència interactiva és a {{api}}/docs. Al tauler, la mateixa elecció és el commutador Spoken language quan inicies una transcripció nova, i les claus per a l'API són a Developers.