Az átirat megmutatja, mi hangzott el. Interjúknál, meetingeknél és podcastoknál ugyanilyen fontos, hogy ki mondta — ezt nevezi a beszédtechnológia beszélő-diarizációnak. Az iPhone 1.8.5, a Mac App Store 1.3.2 és a Mac DMG 1.5.1 verziótól a Whisper Notes teljesen helyben futtatja a diarizációt.
Bemutatjuk a működését, közöljük a felhőben készült referencia alapján mért eredményeket, és leírjuk azt az egy nehéz esetet, amelyet pusztán jobb modellel nem tudtunk megoldani — valamint a gyakorlati megoldásunkat.
Mit csinál
Nyiss meg egy jegyzetet — felvételt, importált hang- vagy videófájlt, illetve meetingfelvételt — és koppints a beszélők gombjára. Néhány másodperc múlva minden bekezdés beszélőcímkét és időbélyeget kap.
Beszélőcímkék Macen és iPhone-on. Egy mondatra koppintva oda ugrik a lejátszás.
A címkék kezdetben „Beszélő 1” és „Beszélő 2” néven jelennek meg. Egy átnevezés az egész átiratban frissíti a nevet. Bármely mondatra koppintva a hang pontosan az adott pillanathoz ugrik, így az idézet könnyen ellenőrizhető az eredeti hang alapján.
A beszélő átnevezése a jegyzet minden bekezdését frissíti.
A meetingfelvételeknél a beszélőfelismerés automatikusan lefut a hívás után; ez a Beállításokban kikapcsolható. A címkék exportáláskor is megmaradnak: a Beszélőkkel ellátott átirat másolása a vágólapra másolja őket, az SRT- és VTT-fájlok pedig a feliratokban őrzik meg őket.
A diarizáció a hangot elemzi, nem a szavakat, ezért ugyanúgy működik az alkalmazás által átírható több mint 100 nyelven.
19 MB-os modell a Neural Engine-en
A diarizáció három lépésben válaszolja meg, hogy „ki mikor beszélt”. A hangot beszédszakaszokra vágja. Minden szakaszból hanglenyomat készül — egy tömör vektor, amely magát a hangot írja le, nem a szavakat. Ezután csoportosítja a lenyomatokat: az azonos klaszterbe kerülő szakaszok ugyanazt a címkét kapják.
A Whisper Notes a Core ML-re konvertált pyannote community-1 folyamatot használja, így mindkét szakasz a Neural Engine-en fut. Az egyszeri letöltés 19 MB, egy 5.7 perces beszélgetés feldolgozása pedig 2–4 másodperc egy M sorozatú Macen.
Hang → beszédszakaszok → hanglenyomatok → klaszterek → címkék
Minden lépés az eszközön fut.
Ez a diarizációnál különösen fontos. A hanglenyomat biometrikus adat — úgy azonosít valakit, mint az ujjlenyomat. Helyi feldolgozáskor a te, a kollégáid és az interjúalanyok hanglenyomata az eszközön készül, csoportosul, majd törlődik. Soha nem küldjük el sehova.
Mit mértünk
A diarizációhoz két rögzített fájlból álló benchmarkot használunk. A referenciát az ElevenLabs felhőalapú ASR- és diarizációs szolgáltatása készíti, majd kézzel ellenőrizzük. A mérés minden 10 ms beszédet egy beszélőhöz rendel, és a kimenet és a referencia közötti legjobb megfeleltetést veszi. Két fájl kis minta, ezért az eredmények iránymutatók, nem véglegesek.
Az első fájl tipikus eset: egy ötperces angol podcast két jól elkülönülő hanggal. A legtöbb interjú, podcast és négyszemközti meeting ilyen.
| Kétbeszélős angol podcast (5 perc) | Eredmény |
|---|---|
| Képkockaszintű hozzárendelés (10 ms felbontás) | 96.7% |
| Mondatszintű pontosság (amit olvasol) | 99.1% |
| Feldolgozási idő, M sorozatú Neural Engine | 2–4 mp |
A fennmaradó 0.9% három, összesen 3.4 másodperces határeltolódás, ami a referencia saját felbontásán belül van. Ilyen anyagnál a helyi eredmény megegyezik a referenciát készítő felhőszolgáltatáséval.
A nehéz eset
A második fájl szándékosan nehéz: két hasonló férfihang egy visszhangos szobában, valamint egy műsorvezető, aki 19 alkalommal szól közbe, átlagosan 2.3 másodpercre. A vendég 272 másodpercet, a műsorvezető 43 másodpercet beszél. Ez az az akusztikai profil, amely miatt a beszélő-diarizáció bármely nyelven elbukik: hasonló hangok rövid megszólalásokban váltják egymást.
Az automatikus klaszterezés itt összeomlik. A két hanglenyomat olyan közel van, hogy az algoritmus összevonja őket, és szinte az egész beszélgetést egy címkéhez rendeli. A felvétel történetesen egy kínai interjú, így tesztelhettük a kézenfekvő hipotézist — vajon egy nyelvre szakosodott modell jobban teljesít-e. CPU-folyamatban futtattunk két, kifejezetten kínai beszéden tanított beszélőmodellt:
| Modell | Angol podcast | Nehéz eset* | Idő (5.7 perc hang) |
|---|---|---|---|
| pyannote community-1 (saját, Neural Engine) | 96.7% | 81–82% | 2–4 mp |
| CAM++ (kínai tanítás, CPU) | 93.9% | 81.2% | 36–103 mp |
| ERes2NetV2 (kínai tanítás, CPU) | — | 80.5% | 220–290 mp |
* Képkockaszintű hozzárendelés a nehéz fájlon, megadott beszélőszámmal. Enélkül minden modell egy beszélő felé omlik össze.
Mindkét modell ugyanúgy összeomlik, miközben 10–100-szor több számítást igényel. A nehézség akusztikai, nem nyelvi — a korlát az, hogy a mai hangembeddingek mit tudnak megkülönböztetni bármely nyelven.
Ezért megadtunk a folyamatnak egy tényt, amelyet nem tud biztosan kikövetkeztetni: hány ember van a szobában. A menüben 2 és 6 közötti beszélőszámot megadva a nehéz fájl az összeomlásból 89% mondatszintű pontosságra javul. Az automatikus felismerés maradt az alapértelmezett, mert tipikus anyagnál helyesen működik.
Újrafuttatás pontos beszélőszámmal. Ugyanez a menü beszélőcímkés SRT- és VTT-fájlokat exportál.
A rövid közbeszólások pontosítása
Rögzített beszélőszám mellett a fennmaradó hibák körülbelül fele a három másodpercnél rövidebb közbeszólásokban volt. Egy kétmásodperces részlet kevés jelet ad az embeddingmodellnek, gyors szóváltásnál pedig a hanglenyomat átvesz valamennyit a szomszédos beszélőből.
A klaszterezés után ezért a folyamat minden 3.5 másodpercnél rövidebb mondatot újravizsgál: pontosan az adott mondat képkockáira illesztett maszkkal újraszámolja a hanglenyomatot, összeveti az egyes beszélők horgonyával — leghosszabb megszólalásaik átlagával —, és csak egyértelmű különbségnél cserél címkét. A meglévő modellt használja, nincs további letöltés.
| Végső mondatszintű pontosság | Pontosítás előtt | Utána |
|---|---|---|
| Nehéz eset (megadott beszélőszám) | 89.0% | 94.8% |
| Angol podcast (automatikus) | 98.5% | 99.1% |
A küszöb konzervatív: a két fájlban a pontosító 21 címkét cserélt fel, és egyetlen új hibát sem okozott.
Korlátok
• A címkék a felvétel befejezése után jelennek meg, nem hívás közben. Ha a meeting alatt élő felirat kell beszélőnevekkel, egy felhőszolgáltatás, például az Otter vagy a Notta a megfelelő eszköz.
• Átfedő beszédnél minden mondat egy címkét kap.
• A hasonló hangok továbbra is nehezek. A nehéz fájlon elért 94.8% a jelenlegi felső határ megadott beszélőszámmal, nem megoldott probléma.
Elérhetőség
A beszélőfelismerés része az egyszeri $6.99 vásárlásnak az alkalmazás három átírási motorjával — Parakeet V3, Whisper Large V3 Turbo és SenseVoice —, valamint a helyi AI-szerkesztéssel együtt. Nincs külön csomag és nincs fiók.
• iPhone: App Store, 1.8.5 vagy újabb verzió.
• Mac App Store: 1.3.2 vagy újabb verzió.
• Közvetlen Mac-letöltés (DMG): 1.5.1 vagy újabb verzió a whispernotes.app oldalról, ingyenes próbaidőszakkal.
A meetingrögzítés működéséről az offline meetingátírásról szóló cikkünkben olvashatsz.