La detecció automàtica no encerta mai: fixa la teva llengua

El dictat surt en la llengua equivocada? La detecció automàtica vacil·la amb la parla bilingüe per disseny. Fixa la llengua un cop i s’hi queda.

Teodor Deleanu10 de juliol del 20268 min de lectura

Si dictes en més d'una llengua, ja has vist la fallada. Dius una frase en romanès i la transcripció torna com un anglès destrossat fonèticament: paraules reals, cap de teva. O gira a mitja frase: la primera meitat en la llengua correcta i la segona en alguna cosa a la qual el model ha decidit que havies canviat. O, la meva preferida, sopa d'alfabets mesclats: caràcters llatins amb uns quants de ciríl·lics escampats, com si el model s'hagués cobert les esquenes lletra a lletra.

Això no és una queixa sobre un producte. És un mode de fallada previsible de la detecció automàtica de llengua, incloent-hi la del motor per defecte del Keebye, afinat per a l'anglès. Colpeja qui parla anglès amb accent i qui alterna llengües al llarg del dia. Una desenvolupadora que té el Slack en polonès i els missatges de commit en anglès dona a la detecció automàtica exactament els senyals mesclats que pitjor gestiona.

La segona meitat de la queixa és més silenciosa però igual de real: quan que hi ha un ajust de llengua, sovint està enterrat. Tres menús endins, darrere d'un selector de motor, més enllà d'un commutador el nom del qual no menciona la llengua per res. Si canvies de llengua vint vegades al dia, un ajust enterrat és funcionalment cap ajust.

Vull explicar per què passen aquestes batzegades —fent servir la batalla del meu propi producte, perquè el Keebye tenia aquest problema abans de tenir-ne la solució— i després ensenyar quina forma té una solució de debò.

Per què la detecció automàtica va a batzegades (i per què no és ben bé un error)

Aquesta és la mecànica sincera. Els models de veu moderns fan identificació de llengua en silenci, com a part de la descodificació. El model escolta, es forma una conjectura interna sobre quina llengua està sentint i descodifica contra aquella conjectura. Quan l'àudio és net, sense accent i monolingüe, això funciona tan bé que no hi penses mai.

Ara dona-li parla real. Un accent desplaça les vocals cap als fonemes d'una altra llengua. Una frase conté tres manlleus de l'anglès, com totes les converses tècniques. Hi ha una criatura de fons, o parles al micròfon d'un portàtil. Cadascuna d'aquestes coses fa que la conjectura interna de llengua del model sigui menys segura, i una conjectura poc segura pot girar entre fotogrames. Quan gira, la descodificació gira amb ella, i obtens una transcripció que canvia de llengua a mig pensament.

La part crucial: a la majoria d'eines no hi ha res que ancori aquella conjectura. El model decideix, en silenci, per intervenció, i tu no pots sobreescriure-ho. Això no és un error de cap app en concret: és el que és la detecció automàtica silenciosa. Un model prenent una decisió que no pots corregir.

Ho conec íntimament perquè el motor per defecte del Keebye té exactament aquesta propietat. Parakeet, el nostre model per defecte afinat per a l'anglès, ignora qualsevol indicació de llengua a la capa de descodificació: no li pots dir què estàs a punt de dir. Amb anglès clar és excel·lent, i per això és el que ve per defecte. Amb àudio poc clar pot anar a batzegades entre llengües com tota la resta de la categoria. T'ho explico primer del meu propi producte perquè la solució només té sentit un cop acceptes que el problema viu a l'arquitectura, no en la deixadesa d'algun competidor.

Què fa exactament fixar una llengua?

La solució és deixar de demanar al model que endevini. El Keebye inclou un segon motor on-device —el Canary 1B v2 de NVIDIA, quantitzat a int8— que cobreix exactament 25 llengües: alemany, anglès, búlgar, croat, danès, eslovac, eslovè, espanyol, estonià, finès, francès, grec, hongarès, italià, letó, lituà, maltès, neerlandès, polonès, portuguès, romanès, rus, suec, txec i ucraïnès. A diferència del motor per defecte, el Canary accepta una instrucció de llengua i la respecta.

El Keebye ho exposa com una fixació: un ajust de llengua explícit que es passa al motor Canary a cada intervenció. Fixa el romanès i el descodificador farà servir el romanès en comptes de fer una tria automàtica de llengua. El reconeixement encara pot ser incorrecte, sobretot amb manlleus i àudio sorollós, però la tria de llengua ja no és una conjectura sense supervisar.

L'ajust es llegeix en viu, a cada dictat. Canvia'l i el pròxim dictat de mantenir premut farà servir la llengua nova sense reiniciar l'app. Això importa més del que sembla: un control de llengua és molt més útil quan canviar-lo no interromp la feina.

I com que el Canary s'executa on-device com tota la resta del Keebye, la fixació no et costa la història de la privadesa. El model fa uns 1,3 GB, es baixa un cop; després d'això, el teu romanès, el teu polonès i el teu ucraïnès no surten mai de la màquina. (Per què creiem que el dictat multilingüe en local importa és un article per si sol: el dictat no hauria de ser només en anglès. Aquest n'és la seqüela pràctica: aquell article defensa les llengües, aquest va de fer-les realment utilitzables.)

Dos clics, no tres menús endins

Una fixació que no pots abastar és una fixació que no faràs servir, o sigui que el canvi viu a la barra de menús. La icona del Keebye té un menú «Dictation Language» amb una llista curta i seleccionada d'11 llengües: anglès, romanès, francès, alemany, espanyol, italià, portuguès, neerlandès, polonès, rus i ucraïnès. Dos clics des de qualsevol app: clic a la icona, clic a la llengua. No obres la configuració, no surts de la finestra on estaves treballant.

La llista completa de 25 llengües viu a la configuració, per a les que queden fora de la llista curta. Però la llista curta cobreix la realitat diària de la major part de la feina bilingüe: escrius al teu equip en una llengua i a un client o a un agent d'IA en una altra, i necessites que el canvi no costi res.

Hi ha una opció més que val la pena conèixer, perquè canvia del tot com fa servir la fixació certa gent: un commutador de traducció a l'anglès. Parles en la teva llengua i l'anglès cau al cursor; mateix motor, mateixa execució on-device. Si el teu monòleg interior va en romanès però la teva sortida ha de ser en anglès (missatges de commit, prompts per a un agent de programació, respostes a un equip internacional), això esfondra el pas de traducció que feies dins del cap. Jo el faig servir més del que esperava.

Què et costa la fixació

25 llengües són 25 llengües. Les eines de dictat al núvol en llisten moltes més, perquè enviar àudio a un model gran de servidor és la manera barata d'afegir llengües. Aquest és el compromís real de l'on-device: un model que cap al teu Mac cobreix menys món que un model que omple un centre de dades. Si la teva llengua no és a la llista de 25, el motor multilingüe del Keebye avui no et cobreix, i prefereixo dir-ho que no pas arrodonir cap amunt.

Una fixació és una fixació. Aquesta és la cara oposada del determinisme, i vull ser-hi clar: si fixes el romanès i després parles en anglès, el Keebye descodificarà fidelment malament el teu anglès com si fos romanès fins que ho canviïs. El motor fa exactament el que li has dit. Tot l'atractiu de la detecció automàtica era que mai no hauries de pensar en això; la fixació canvia aquella comoditat per previsibilitat. Segons la meva experiència, el canvi val la pena, perquè una conjectura errònia que no pots controlar és pitjor que un ajust erroni que pots arreglar amb dos clics. Però és un canvi, no un regal.

La llista curta de la barra de menús és d'11 llengües, no de 25. Si la teva parella diària inclou, posem, el finès o el grec, hauràs de passar per la configuració per a una de les dues bandes. Seleccionar vol dir que la llengua d'algú no ha entrat al menú ràpid.

On queda la queixa

La queixa al nivell de la categoria —«el meu dictat surt sempre en la llengua equivocada»— és en realitat una queixa sobre decisions silencioses. El model va endevinar, va endevinar malament i no hi havia manera de dir-li el contrari. Tota solució que manté l'endevinació (millor detecció, finestres d'àudio més llargues, llindars de confiança) només fa que la fallada sigui més rara i més estranya. La solució que acaba de debò amb la queixa és tornar la decisió a l'usuari.

Si ara mateix estàs vivint això amb una altra eina, les nostres pàgines de comparació són sinceres sobre on encaixa cadascuna: Keebye vs Superwhisper i Keebye vs Wispr Flow tracten totes dues la qüestió de la llengua, entre d'altres. Per provar la fixació en si, comença la prova gratuïta aquí sota, repeteix la frase en romanès o en polonès del principi d'aquest article i mira quanta part de les batzegades venia d'una conjectura sense supervisar i no pas del teu accent.

Fixa la llengua que fas servir de debò

Comença la prova gratuïta i repeteix una resposta en la teva llengua materna que la detecció automàtica t’hagués destrossat.

Start free trial

Early access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.

Continua llegint