Traducere automată · Originalul în engleză

Noțiuni de bază început bază Android

speech-android oferă o procesare a vorbirii pe dispozitiv pentru Android utilizând ONNX Runtime. Conducta rulează VAD + STT + TTS cu suport pentru barjă, complet offline după descărcare model.

Cerințe

Descărcați aplicația demo pre-construită pentru a încerca imediat:

Dependenţa de grad

Adaugă SDK la dvs. build.gradle.kts:

implementation("audio.soniqo:speech:0.0.20")

Start rapid

val modelDir = ModelManager.ensureModels(context)
val pipeline = SpeechPipeline(SpeechConfig(modelDir = modelDir))
pipeline.events.collect { event ->
    when (event) {
        is SpeechEvent.TranscriptionCompleted -> println(event.text)
        is SpeechEvent.ResponseDone -> pipeline.resumeListening()
        else -> {}
    }
}
pipeline.start()
pipeline.pushAudio(samples) // 16kHz mono float32
Important

Modelele implicite auto-download de la HuggingFace la prima utilizare (~500 MB total). După descărcarea inițială, toate deducțiile sunt complet offline.

Detectare finală a turnului

Activează Smart Turn v3.2 atunci când o pauză VAD ar trebui tratată ca o chestiune mai degrabă decât ca un obiectiv imediat. Ea marchează ultimele opt secunde ale turnării curente o dată după fiecare pauză confirmată; un scor sub pragul menține aceeași turnantă deschisă, în timp ce capacul maxim de tăcere garantează un obiectiv final eventual.

val modelDir = ModelManager.ensureModels(context, enableSmartTurn = true)
val pipeline = SpeechPipeline(
    SpeechConfig(
        modelDir = modelDir,
        enableSmartTurn = true,
        turnCompletionThreshold = 0.5f,
        turnCompletionMaxSilenceSec = 2.0f,
    )
)

Acest opt-in adaugă un cod 11.1 MB int8 model; inference rămâne complet offline. Smart Turn a fost creat de Pipecat/Daily și este distribuit sub BSD-2-Clause.

Sistem de intrare vocală (service de recunoaștere)

SDK nave un gata-made SpeechRecognitionService care se conectează în cadrul Android SpeechRecognizer API ? Nici un cod pentru a scrie. Odată ce aplicația este selectată ca recunoștitor vocal implicit, orice aplicație terță parte apelează SpeechRecognizer.createSpeechRecognizer(context) (fără ComponentName) devine pe deplin pe-dispozitiv STT prin conducta.

1. Declaraţie RECORD_AUDIO şi serviciul în AndroidManifest.xml:

<uses-permission android:name="android.permission.RECORD_AUDIO" />

<application>
    <service
        android:name="audio.soniqo.speech.service.SpeechRecognitionService"
        android:exported="true"
        android:permission="android.permission.RECORD_AUDIO">
        <intent-filter>
            <action android:name="android.speech.RecognitionService" />
        </intent-filter>
        <meta-data
            android:name="android.speech"
            android:resource="@xml/recognition_service" />
    </service>
</application>

2. Adăugați app/src/main/res/xml/recognition_service.xml:

<?xml version="1.0" encoding="utf-8"?>
<recognition-service xmlns:android="http://schemas.android.com/apk/res/android" />

3. Setați serviciul ca implicit de sistem (Setări → Sistem → Limbi & input → Detector de intrare vocală pe stoc Android, sau prin adb):

adb shell settings put secure voice_recognition_service \
  your.package/audio.soniqo.speech.service.SpeechRecognitionService

4. Verificați prin rularea aplicației demo Recognizer test ecran, care solicită SpeechRecognizer.createSpeechRecognizer(ctx) (nicio componentă) și logează fiecare apel cadru

Implementarea serviciului onCheckRecognitionSupport (API 33+) returnând copertele 27 BCP-47 Limbi Parakeet TDT v3, marcate installedOnDeviceLanguage o dată ce modelele sunt prezente (sau pendingOnDeviceLanguage în timp ce ei descărcaţi. Atenţie audio este dobândit cu AUDIOFOCUS_GAIN_TRANSIENT pe durata unei sesiuni.

Caveat

Gboard, Samsung Keyboard, și Google Assistant grupa propriii lor recunoștitori și săriți peste implicitul sistemului. Aplicațiile care apelează în mod explicit cadrul SpeechRecognizer API (sau să construiască propriul UI pe partea de sus a acestuia) sunt cele care curge prin serviciul dumneavoastră.

Modele

Toate modelele rulează prin ONNX Runtime cu accelerația NNAPI. INT8 cuantizată implicit.

Model SarcinaDimensiune
Parakeet TDT v3 (INT8)Discurs-la-Text (114 limbi)891 MO
Kokoro-82M (INT8)Text-to-Speech (8 limbi)330 MO
Silero VAD v5Detectarea activității vocale2 MO
DeepFilterNet3 Anularea zgomotului8 MO

Codul sursă: github.com/soniqo/speech-android

Următoarele etape