Μαθαίνοντας μια μηχανή να ακούει ένα ελληνικό δημοτικό συμβούλιο
Το dataset του OpenCouncil, το επερχόμενο ανοιχτό ASR μοντέλο μας, το Google Summer of Code, και γιατί όλα αυτά έχουν σημασία.
Το OpenCouncil απομαγνητοφωνηεί συνεδριάσεις Δημοτικών Συμβούλιων χρησιμοποιώντας ASR (Automatic Speech Recognition) μοντέλα, και ύστερα διορθώνοντας χειροκίνητα τα λάθη του AI. Η ομάδα ξοδεύει αρκετές ώρες ανά συμβούλιο για αυτές τις διορθώσεις, ώστε να υπάρχει ένα πιστό στον ήχο αποτέλεσμα. Εδώ γεννιέται το ερώτημα: μπορούμε να κάνουμε fine-tune, δηλαδή να βάλουμε ένα ανοιχτό ASR μοντέλο να μάθει από τα δεδομένα του OpenCouncil, ώστε να μειωθεί ο χρόνος διόρθωσης; Είμαι ο Άγγελος, και ασχολούμαι με αυτό το πρόβλημα στο project μου για το Google Summer of Code.
Το Google Summer of Code δίνει ευκαιρία σε φοιτητές ή νέους προγραμματιστές να κάνουν μια καλοκαιρινή πρακτική σε ένα project ανοιχτού κώδικα. Διαλέγεις έως τρεις οργανισμούς από τη λίστα των συνεργαζόμενων και στέλνεις μια γραπτή πρόταση για το πώς θα έλυνες ένα πρόβλημά τους. Ο οργανισμός διαλέγει με ποιους υποψήφιους θέλει να δουλέψει, και η Google εγκρίνει τα τελικά project. Έχοντας εγκριθεί λοιπόν, εξασφάλισα μια τρίμηνη εξ αποστάσεως πρακτική, η οποία μου δίνει την ευκαιρία να μάθω και να συνεργαστώ με μέντορες τους maintainers του οργανισμού, την ομάδα του OpenCouncil.
Τι υπάρχει ήδη
Υπάρχουν ελεύθερα (ανοιχτού κώδικα) και κλειστά μοντέλα που μπορούν να χρησιμοποιηθούν για ASR (Αutomatic Speech Recognition). Έπειτα από benchmarks 1 (δοκιμές) σε παλιότερες συνεδριάσεις δημοτικών συμβουλίων όπου είναι γνωστό και διορθωμένο το κείμενο του ήχου της συνεδρίασης, η ομάδα του OpenCouncil επέλεξε να χρησιμοποιεί ένα κλειστό μοντέλο, το Scribe v2 της Eleven Labs, καθώς αυτό απέδωσε καλύτερα, δηλαδή έκανε λίγοτερα λάθη απομαγνητοφώνησης, μετρημένα στα πραγματικά δεδομένα του OpenCouncil. Παρακάτω εξηγείται πιο αναλυτικά πώς βγαίνει το ποσοστό λαθών.
Το καλύτερο ελεύθερο ASR μοντέλο λέγεται Whisper και είναι της OpenAI. Αυτό, χωρίς ειδική εκπαίδευση στα ελληνικά, παράγει ένα μέτριο αποτέλεσμα. Ένα ελληνικό πιο ειδικά εκπαιδευμένο (fine-tune) που δοκιμάσαμε δεν ανταποκρίθηκε στον δικό μας ήχο και απέδωσε 3 φορές χειρότερα από το Whisper.
Στο τεστ που τρέξαμε το Whisper έκανε λάθος 15 λέξεις στις 100, ενώ το καλύτερο κλειστό μοντέλο 13. Αυτή τη μικρή διαφορά θέλουμε να κλείσουμε. Δεν του λείπουν, λοιπόν, τα ελληνικά, λείπουν όμως τα εξής: η ανοχή στον θόρυβο της αίθουσας, στον κόσμο που μιλάει ο ένας πάνω στον άλλον, στην νομικίστικη ορολογία, τα ονόματα, οι αριθμοί αποφάσεων και ΦΕΚ. Εκεί σκοντάφτει κάθε γενικό σύστημα, κι εκεί έρχεται το project μου, το fine-tuning ενός ελεύθερου μοντέλου πάνω στις πραγματικές ομιλίες των ελληνικών δημοτικών συμβουλίων.
Πώς απομαγνητοφωνεί το OpenCouncil
Το OpenCouncil παίρνει τον ήχο μιας συνεδρίασης και βγάζει απομαγνητοφώνηση, ομιλητές και θέματα, ώστε να μπορεί κανείς να ψάξει τι ειπώθηκε και ποιος το είπε. Η διαδικασία περνάει από τρία στάδια:
Μοντέλο αναγνώρισης ομιλίας ASR: Γράφει το αρχικό κείμενο.
Καθάρισμα με γλωσσικό μοντέλο LLM (σαν το ChatGPT): Πιάνονται κοινά λάθη στη γραμματική, τη σύνταξη και τη στίξη, φτιάχνονται τα ομόηχα και διορθώνονται ονόματα δημοτικών συμβούλων (αν το προηγούμενο μοντέλο τα έγραψε λάθος), με στόχο να μην αλλάζει το νόημα.
Ανθρώπινη Διόρθωση: Στο τέλος, ένας άνθρωπος ακούει ολόκληρη την συνεδρίαση και διορθώνει ό,τι ξέφυγε.
Το καθάρισμα με LLM βοηθάει, αλλά έχει ένα όριο που με απασχόλησε εξαρχής: δεν ακούει τον ήχο, βλέπει το παραγόμενο κείμενο και το διορθώνει. Αν το ASR άκουσε λάθος ένα όνομα κι έγραψε κάτι άσχετο, το LLM δεν έχει από πού να το πιάσει. Το πραγματικό κέρδος είναι να βελτιώσουμε το ίδιο το «αυτί».
Και εδώ είναι το ωραίο: όλες αυτές οι αλλαγές (του LLM και των ανθρώπων) κρατιούνται σε αρχείο. Έχουν μαζευτεί γύρω στις 300.000 διορθώσεις. Από αυτές αποφασίσαμε να προσπαθήσουμε να εκπαιδεύσουμε το υπάρχον ελεύθερο μοντέλο, ώστε να προσαρμοστεί και να τις αποδίδει πιο σωστά από μόνο του. Γι’ αυτό φτιάχνουμε δικό μας dataset.
Πώς αξιολογούνται τα μοντέλα
Για να ξέρουμε αν όντως βελτιώθηκε κάτι, θέλουμε έναν αριθμό που να συγκρίνεται. Αυτός είναι το WER (Word Error Rate), δηλαδή το ποσοστό των λέξεων που βγαίνουν λάθος (όσο πιο χαμηλό, τόσο καλύτερα).
Είναι ατελές —μετράει το «και» αντί «κι» όσο κι ένα λάθος επώνυμο— αλλά χρησιμοποιείται ευρέως στη βιβλιογραφία, επομένως μπορούμε να συγκρίνουμε άμεσα κάθε μοντέλο και πάροχο. Κι επειδή κάθε φορά θα εξετάζουμε την απόδοση του μοντέλου σε νέα, πιο πρόσφατα, δημοτικά συμβούλια, αυτό το ποσοστό είναι αναμενόμενο να βγαίνει διαφορετικό σε κάθε τρέξιμο. Επομένως, ο πιο τίμιος δείκτης δεν είναι ένα σκέτο νούμερο· είναι πόσο βελτιώνεται το fine-tuned μοντέλο σε σχέση με το αρχικό.
Πώς θα εκπαιδεύσουμε το μοντέλο
Για εκπαίδευση χρειάζεσαι πολλά, καθαρά ζευγάρια ήχου και σωστού κειμένου: έναν ήχο και ένα κείμενο που να λέει στο μοντέλο «έτσι θέλω να μου το αποδώσεις». Τα έχουμε ήδη μέσα στο OpenCouncil, αλλά ανακατεμένα.
Στην πορεία, με την ομάδα φτιάξαμε και χρησιμοποιήσαμε ένα μικρό εργαλείο: μια web εφαρμογή στην οποία ακούμε λίγα δευτερόλεπτα ήχου ενώ βλέπουμε δίπλα-δίπλα το πριν και το μετά της διόρθωσης. Για κάθε ζευγάρι ήχου - κειμένου, διαλέγουμε Συμπερίληψη ή Αποκλεισμός — φιλτράροντας έτσι τα εκατοντάδες χιλιάδες ζευγάρια που διατηρεί το OpenCouncil σε ένα μικρότερο σύντολο το οποίο θεωρούμε πιο “εκπαιδευτικό” για τον σκοπό του fine tuning.
Για να μη χαρακτηρίζονται όλες οι διορθώσεις ως ίδιες, τις χωρίσαμε σε κατηγορίες:
Καθαρά ακουστικά λάθη: Το μοντέλο άκουσε μια λέξη σαν άλλη, του ξέφυγε μια λέξη, ή έγραψε μία που δεν ειπώθηκε ποτέ.
Ονόματα: Πρόσωπα, περιοχές, φορείς, ακρωνύμια όπως η ΔΕΥΑ. Για ένα δημοτικό συμβούλιο είναι σημαντικά και επαναλαμβανόμενα.
«Γραφιστικές» διορθώσεις: Στίξη, κεφαλαία, μικροαλλαγές ύφους που δεν αλλάζουν τι ειπώθηκε.
Σημείωση: Οι πρώτες δύο ομάδες μαθαίνουν στο μοντέλο να ακούει καλύτερα. Οι «γραφιστικές» όχι (περίπου το 1/3 των διορθώσεων αφορούσε στίξη ή κεφαλαιοποίηση), οπότε τις δώσαμε λιγότερη σημασία, γιατί δεν διδάσκουν τίποτα στο «αυτί».
Κάποιες διορθώσεις ήταν λίγο ασυγχρόνιστες. Κάναμε λοιπόν και μικρές χειροκίνητες διορθώσεις στον συγχρονισμό, ώστε ο ήχος να ταιριάζει ακριβώς στο κείμενο. Έτσι ανακαλύψαμε και διάφορες περιπτώσεις προφοράς που σίγουρα θα βοηθήσουν το μοντέλο.
Τι μαζέψαμε τον πρώτο μήνα:
Το review έτρεχε για ένα μήνα καθημερινά. Πάνω από 10.000 διορθώσεις έχουν περάσει από ανθρώπινη κρίση.
Κρατήσαμε τις καλύτερες, γύρω στις 5.000.
Το υλικό καλύπτει 544 ομιλητές σε 10 διαφορετικές πόλεις.
Το dataset έχει κάτι που δεν βρίσκεις συχνά ελεύθερα: πραγματικές ανθρώπινες διορθώσεις, όχι crowd-sourced αναγνώσεις σε στούντιο. Θα θέλαμε να το έχουμε δημοσιεύσει στο Hugging Face, αλλά για λόγους προστασίας προσωπικών δεδομένων ψάχνουμε τον σωστό τρόπο ώστε να γίνει αυτό.
Spoiler: Ένα πρώτο, πρώιμο fine-tune
Τρέξαμε ήδη ένα πρώτο fine-tune, νωρίς και πρόχειρα: whisper-large-v3 με τεχνική LoRA (που εκπαιδεύει μόλις το 0,5% των βαρών και χωράει σε μία κάρτα γραφικών), πάνω στις επιλεγμένες διορθώσεις, με δύο ολόκληρες πόλεις κρυμμένες για τεστ.
Τα πρώτα σημάδια ήταν αρκετά ενθαρρυντικά ώστε να συνεχίσουμε. Δεν θα μοιραστώ νούμερα ακόμη, καθώς το δείγμα ήταν μικρό, αλλά το πρώτο σήμα είναι θετικό. Τον Ιούλιο επικεντρώνομαι στη διαδικασία του fine-tuning.
Τι ακολουθεί
Χωρισμός δεδομένων: Το τελικό test θα είναι τα πρόσφατα συμβούλια (από Ιούνιο και μετά, ενώ το project ξεκίνησε τον Μάιο). Έτσι το test μένει καθαρό, χωρίς κίνδυνο να ξαναδεί το μοντέλο κάτι που είδε στην εκπαίδευση.
Ισορροπία Dataset: Στις 5.000 επιλεγμένες δύσκολες διορθώσεις θα προσθέσουμε άλλες τόσες διασκορπισμένες μέσα από το δείγμα, και γύρω στις 20.000 κανονικές ομιλίες που δεν είχαν λάθη, ώστε το μοντέλο να μη “ξεχάσει” την καθημερινή ομιλία.
Diarization (”Ποιος μιλάει πότε”): Ερευνούμε αν ο καλύτερος διαχωρισμός ομιλητών βοηθάει και την ίδια τη απομαγνητοφώνηση.
Επικάλυψη ομιλίας: Προσθέτουμε πεδίο για τις στιγμές που ακούγεται δεύτερος άνθρωπος από πίσω. Πώς εκπαιδεύεται το Whisper εκεί; Είναι ένα ανοιχτό ερώτημα.
Εναλλακτικές επιλογές: Αν περισσέψει χρόνος, θέλουμε το Whisper να κρατάει 2-3 εναλλακτικές εκδοχές του τι άκουσε σε μια δύσκολη λέξη μαζί με έναν βαθμό σιγουριάς, ώστε το επόμενο στάδιο (LLM) να ξέρει πού να κοιτάξει.
Το benchmark είναι εσωτερικό run της 10ης Ιουνίου 2026.







