Maskinöversättning · Engelskt original
Komma igång - Android
speech-android ger på-enhet talbehandling för Android med ONNX Runtime. Rörledningen kör VAD + STT + TTS with barge-in support, helt offline after model download.
Krav
- Android 8+ (API 26)
- arm64-v8a arkitektur
Ladda ner den förbyggda demo-appen för att prova den omedelbart:
Gradle beroende
Lägg till SDK till din build.gradle.kts:
implementation("audio.soniqo:speech:0.0.20")
Snabbstart
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
Standardmodellerna auto-download från HuggingFace vid första användning (~ 500 MB totalt). Efter den första nedladdningen körs all inferens helt offline.
End-of-turn detektion
Aktivera Smart Turn v3.2 när en VAD paus bör behandlas som en fråga snarare än en omedelbar slutpunkt. Det gör de sista åtta sekunderna av den aktuella vändningen en gång efter varje bekräftad paus; en poäng under tröskeln håller samma svängning öppen, medan den maximala tystnadslocket garanterar en eventuell slutpunkt.
val modelDir = ModelManager.ensureModels(context, enableSmartTurn = true)
val pipeline = SpeechPipeline(
SpeechConfig(
modelDir = modelDir,
enableSmartTurn = true,
turnCompletionThreshold = 0.5f,
turnCompletionMaxSilenceSec = 2.0f,
)
)
Denna opt-in lägger till en pinned 11.1 MB int8 modell; slutsatsen förblir helt offline. Smart Turn skapades av Pipecat/Daily och distribueras under BSD-2-Clause.
Systemröstinmatning (RecognitionService)
SDK levererar en färdig tillverkad SpeechRecognitionService som pluggar in Android ramverk SpeechRecognizer API - ingen kod för att skriva. När din app väljs som standardröstigenkännare, någon tredjepartsapp som ringer SpeechRecognizer.createSpeechRecognizer(context) (ingen ComponentName) får helt på-enhet STT genom din pipeline.
1. Declare RECORD_AUDIO och tjänsten 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. Lägg till 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. Ställ in tjänsten som systemets standard (Inställningar → System → Språk & input → Röstinmatningsplockare på lager Android, eller via adb):
adb shell settings put secure voice_recognition_service \
your.package/audio.soniqo.speech.service.SpeechRecognitionService
4. Verifiera genom att köra demo-appens Recognizer-test -skärm, som kallar SpeechRecognizer.createSpeechRecognizer(ctx) (ingen komponent) och loggar in varje ramuppmaning - användbar för att bekräfta binderr rundturen utan att behöva logkat.
Tjänsten implementerar onCheckRecognitionSupport (API 33+) som returnerar 27 BCP-47 språk Parakeet TDT v3 täcker, markerade installedOnDeviceLanguage När modeller är närvarande (eller pendingOnDeviceLanguage medan de laddar ner). Audio fokus förvärvas med AUDIOFOCUS_GAIN_TRANSIENT under en sessions varaktighet.
Gboard, Samsung Keyboard och Google Assistant buntar sina egna kännare och hoppar över systemets standard. Appar som uttryckligen kallar ramen SpeechRecognizer API (eller bygger sitt eget UI ovanpå det) är de som strömmar genom din tjänst.
Modeller
Alla modeller körs via ONNX Runtime med NNAPI acceleration. INT8 kvantiserad som standard.
| Modell | Uppgifter | Storlek |
|---|---|---|
| Parakeet TDT v3 (INT8) | Tal-to-Text (114 språk) | 891 MB |
| Kokoro-82M (INT8) | Text-till-tal (8 språk) | 330 MB |
| Silero VAD v5 | Detektering av röstaktivitet | 2 MB |
| DeepFilterNet3 | Buller avbokning | 8 MB |
Källa: github.com/soniqo/speech-android
Nästa steg
- Benchmarks -- Android inferensprestanda
- Linux C API -- inbäddad Linux setup