Maskinoversettelse · Engelsk original

Kom i gang — Android

speech-android gir talebehandling på enhet for Android ved hjelp av ONNX Runtime. Rørledningen kjører VAD + STT + TTS med grill-in støtte, helt frakoblet etter modell nedlasting.

Krav

Last ned den forhåndsbygde demo-appen for å prøve det umiddelbart:

Gradle avhengighet

Legg til SDK til build.gradle.kts:

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

Rask start

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
Viktig

Standardmodeller automatisk nedlasting fra HuggingFace ved første bruk (~500 MB totalt). Etter den første nedlastingen, kjører all inferens helt frakoblet.

Deteksjon av slutt på sving

Slå på Smart Turn v3.2 når en VAD pause bør behandles som et spørsmål i stedet for et øyeblikkelig endepunkt. Den tar de siste åtte sekundene av den aktuelle turen en gang etter hver bekreftet pause. En score under terskelen holder den samme turen åpen, mens maksimal silenshet hette garanterer et endepunkt.

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

Denne opt-in legger til en festet 11.1 MB int8-modellen; inferensen er fortsatt helt frakoblet. Smart Turn ble opprettet av Pipecat/Daily og distribueres under BSD-2-Clause.

System Stemmeinngang (gjenkjennelsestjeneste)

SDK sender en klar-laget SpeechRecognitionService som kobler til Androids rammeverk SpeechRecognizer API - ingen kode å skrive. Når appen din er valgt som standard talegjenkender, blir noen tredjeparts app som ringer SpeechRecognizer.createSpeechRecognizer(context) (med ingen ComponentName) fullt ut på enhet STT gjennom rørledningen.

1. Declaration RECORD_AUDIO og tjenesten i 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. Legg til 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. Sett tjenesten som standard for systemet (Innstillinger → System → Languages & input → Stemmeinngangsvelger på lager Android, eller via adb):

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

4. Bekreft ved å kjøre demo-appens Recognizer-test-skjerm, som ringer SpeechRecognizer.createSpeechRecognizer(ctx) (ingen komponent) og logger alle rammeangrep - nyttig for å bekrefte bindemiddelet rundstrip uten å trenge loggkat.

Tjenesten gjennomfører onCheckRecognitionSupport (API 33+) å returnere 27 BCP-47 språk Parakeet TDT v3 deksel, merket installedOnDeviceLanguage Når modellene er tilstede (eller pendingOnDeviceLanguage mens de lastes ned. Lydfokus er kjøpt med AUDIOFOCUS_GAIN_TRANSIENT i løpet av en sesjon.

Caveat

Gboard, Samsung Keyboard og Google Assistant pakke sine egne gjenkjennere og hoppe over systemstandarden. Apper som eksplisitt kaller rammen SpeechRecognizer API (eller bygge sin egen UI på toppen av det) er de som flyter gjennom tjenesten din.

Modeller

Alle modeller kjører via ONNX Runtime med NNAPI akselerasjon. INT8 kvantisert som standard.

Modell Oppgave Størrelse
Parakeet TDT v3 (INT8)Tale-to-Text (114 språk)891 MB
Kokoro-82M (INT8) Tekst til tale (8 språk)330 MB
Silero VAD v5Påvisning av taleaktivitet2 MB
DeepFilterNet3Støyavbestilling8 MB

Kildekode: github.com/soniqo/speech-android

Neste trinn