TranscripteurLocal.kt 32 lignes · 966 octets
package fr.ebii.card2vcf.audio

/**
 * Interface de transcription locale (ASR sur l'appareil).
 *
 * Implémentée par [TranscripteurVosk] ; un fake est fourni dans les tests.
 * Quand le modèle est absent des assets (build `-Pvosk=none`), l'[etat] vaut
 * [Etat.INDISPONIBLE] et l'UI doit forcer le mode serveur.
 */
interface TranscripteurLocal {

    enum class Etat { DISPONIBLE, INDISPONIBLE }

    val etat: Etat

    /**
     * Alimente le moteur avec un buffer PCM capturé par [AudioNoteRecorder].
     * Appelé sur le thread d'enregistrement.
     *
     * @return Un résultat partiel si disponible, null sinon.
     */
    fun accepterEchantillons(data: ShortArray, longueur: Int): String?

    /**
     * Demande le résultat final après la fin de l'enregistrement.
     * @return Le texte transcrit (peut être vide).
     */
    fun finaliser(): String

    /** Réinitialise l'état interne pour une nouvelle session. */
    fun reinitialiser()
}