Automatische vertaling · Engels origineel
Aan de slag . Android
speech-android voorziet in spraakverwerking op het apparaat voor Android met ONNX Runtime. De pijplijn loopt VAD + STT + TTS met ondersteuning voor het inspringen, volledig offline na modeldownload.
Vereisten
- Android 8+ (API 26)
- arm64-v8a architectuur
Download de vooraf gebouwde demo-app om het direct te proberen:
Afhankelijkheid gradle
Voeg de SDK toe aan je build.gradle.kts:
implementation("audio.soniqo:speech:0.0.20")
Snel starten
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
De standaardmodellen automatisch downloaden van HuggingFace bij het eerste gebruik (~500 MB totaal). Na de eerste download draait alle gevolgtrekking volledig offline.
Detectie aan het einde van de bocht
Schakel Smart Turn v3.2 in wanneer een VAD pauze moet worden behandeld als een vraag in plaats van een direct eindpunt. Het scoort de laatste acht seconden van de huidige draai eenmaal na elke bevestigde pauze; een score onder de drempel houdt dezelfde draai open, terwijl de maximum-stilte cap een uiteindelijk eindpunt garandeert.
val modelDir = ModelManager.ensureModels(context, enableSmartTurn = true)
val pipeline = SpeechPipeline(
SpeechConfig(
modelDir = modelDir,
enableSmartTurn = true,
turnCompletionThreshold = 0.5f,
turnCompletionMaxSilenceSec = 2.0f,
)
)
Deze opt-in voegt een gepinde 11.1 MB int8 model toe; gevolggeving blijft volledig offline. Smart Turn is aangemaakt door Pipecat/Daily en is verdeeld onder BSD-2-Clause.
System Voice Input (RecognitionService)
De SDK is voorzien van een kant-en-klare SpeechRecognitionService die aansluit op het Android SpeechRecognizer API geen code om te schrijven. Zodra uw app is geselecteerd als de standaard voice herkenner, elke app van derden aanroepen SpeechRecognizer.createSpeechRecognizer(context) (zonder ComponentName) krijgt volledig on-device STT door uw pijplijn.
1. Aangeven RECORD_AUDIO en de dienst in 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. app/src/main/res/xml/recognition_service.xml toevoegen:
<?xml version="1.0" encoding="utf-8"?>
<recognition-service xmlns:android="http://schemas.android.com/apk/res/android" />
3. Stel de service in als standaard systeem (Instellingen → Systeem → Talen & invoer → Voice input picker op voorraad Android, of via adb):
adb shell settings put secure voice_recognition_service \
your.package/audio.soniqo.speech.service.SpeechRecognitionService
4. Controleer door de demo-app te draaien Herkennertest-scherm, dat SpeechRecognizer.createSpeechRecognizer(ctx) (geen component) aanroept, en logt elke framework callback in die nuttig is voor het bevestigen van de rondreis zonder logcat.
De dienst implementeert onCheckRecognitionSupport (API 33+) met de 27 BCP-47 talen Parakeet TDT v3 covers, gemarkeerd installedOnDeviceLanguage eenmaal modellen aanwezig zijn (of pendingOnDeviceLanguage terwijl ze opnieuw downloaden). AudiofoCUS_GAIN_TRANSIENT is verworven met AUDIOFOCUS_GAIN_TRANSIENT
Gboard, Samsung Keyboard en Google Assistant bundelen hun eigen herkenners en slaan de systeemstandaard over. Apps die expliciet het framework SpeechRecognizer API noemen (of hun eigen UI erbovenop bouwen) zijn degene die door uw service stromen.
Modellen
Alle modellen draaien via ONNX Runtime met NNAPI acceleratie. INT8 Standaard gequantiseerd.
| Model | Taak | Grootte |
|---|---|---|
| Parakeet TDT v3 (INT8) | Speech-to-Text (114 talen) | 891 MB |
| Kokoro-82M (INT8) | Tekst-tot-spraak (8 talen) | 330 MB |
| Silero VAD v5 | Detectie van spraakactiviteit | 2 MB |
| DeepFilterNet3 | Geluidsannulering | 8 MB |
Broncode: github.com/soniqo/speech-android
Volgende stappen
- Benchmarks Android-inferentieprestaties
- Linux C API Ingebedde Linux setup