Strojový překlad · Anglický originál
Začínáme - Android
speech-android poskytuje zpracování řeči zařízení Android pomocí ONNX Runtime. Plynovod běží VAD + STT + TTS s podporou barge-, plně offline po stažení modelu.
Požadavky
- Android 8+ (API 26)
- arm64-v8a architektura
Stáhněte si předkonstruovanou demo aplikaci a okamžitě to zkuste:
Závislá závislost na nosnicích
Přidat SDK do vašeho build.gradle.kts:
implementation("audio.soniqo:speech:0.0.20")
Rychlý 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
Výchozí modely automaticky stahují z HuggingFace při prvním použití (~ 500 MB celkem). Po počátečním stahování je veškerý inference plně offline.
Detekce konce-of-otočení
Povolit Smart Turn v3.2, kdy by se měla pauza VAD považovat za otázku, spíše než za bezprostřední cílový bod. Skóruje posledních osm sekund aktuálního otáčení jednou po každé potvrzené pauze; skóre pod prahem udržuje stejný směr otevřený, zatímco maximální mlčení cap zaručuje konečný cílový bod
val modelDir = ModelManager.ensureModels(context, enableSmartTurn = true)
val pipeline = SpeechPipeline(
SpeechConfig(
modelDir = modelDir,
enableSmartTurn = true,
turnCompletionThreshold = 0.5f,
turnCompletionMaxSilenceSec = 2.0f,
)
)
Tento opt- in přidává jeden přišpendlený 11.1 MB int8 model; inference zůstává plně offline. Smart Turn byl vytvořen Pipecat / Denní a je distribuován pod BSD-2-Clause.
Systémový hlasový vstup (Rozpoznávací služba)
SDK přepravuje readymade SpeechRecognitionService které se zapojí do rámce Android SpeechRecognizer API - žádný kód pro zápis. Jakmile je vaše aplikace zvolena jako výchozí hlasový rozpoznávač, každá třetí strana aplikace volá SpeechRecognizer.createSpeechRecognizer(context) (bez ComponentName) dostane plně na-zařízení STT přes potrubí.
1. Declare RECORD_AUDIO a služby v 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. Přidat 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. Nastavit službu jako výchozí systém (Nastavení → Systém → Jazyky a vstup → Picker hlasu na skladě Android, nebo přes adb):
adb shell settings put secure voice_recognition_service \
your.package/audio.soniqo.speech.service.SpeechRecognitionService
4. Ověřit spuštěním demo aplikace Zkouška rozpoznávání obrazovka, která volá SpeechRecognizer.createSpeechRecognizer(ctx) (bez komponentu) a zaznamenává každý rámcový call back - užitečné pro potvrzení vázacího round-trip bez nutnosti logcat.
Servisní nástroje onCheckRecognitionSupport (API 33+) vrácení 27 BCP-47 jazyky Parakeet TDT v3 kryty, označené installedOnDeviceLanguage pokud jsou přítomny modely (nebo pendingOnDeviceLanguage při stahování). Audio zaměření je získáno s AUDIOFOCUS_GAIN_TRANSIENT po dobu trvání zasedání.
Gboard, Samsung Keyboard, a Google Assistant svazovat své vlastní rozpoznávače a přeskočit výchozí systém. Apps, které explicitně volat rámec SpeechRecognizer API (nebo postavit vlastní UI na to) jsou ty, které proudí přes vaše služby.
Modely
Všechny modely běží přes ONNX Runtime s NNAPI akcelerací. INT8 kvantifikován ve výchozím nastavení.
| Vzor | Úkol | Velikost |
|---|---|---|
| Parakeet TDT v3 (INT8) | Speech-to-Text (114 jazyků) | 891 MB |
| Kokoro-82M (INT8) | Učebnicový projev (8 jazyků) | 330 MB |
| Silero VAD v5 | Detekce hlasové aktivity | 2 MB |
| DeepFilterNet3 | Zrušení hluku | 8 MB |
Zdroj: github.com /soniqo/speech-android
Další kroky
- Referenční hodnoty - výkon inference Android
- Linux C API - vložené Linux nastavení