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
- Android 8+ (API 26)
- arm64-v8a arkitektur
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
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.
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 v5 | Påvisning av taleaktivitet | 2 MB |
| DeepFilterNet3 | Støyavbestilling | 8 MB |
Kildekode: github.com/soniqo/speech-android
Neste trinn
- Benchmarks — Android inferensytelse
- Linux C API - innebygd Linux