Traduzione automatica · Originale inglese
Iniziare — Android
speech-android fornisce un'elaborazione vocale on-device per Android utilizzando ONNX Runtime. La pipeline funziona VAD + STT + TTS con supporto per barge-in, completamente offline dopo il download del modello.
Requisiti
- Android 8+ (API 26)
- arm64-v8a architettura
Scarica l'app demo pre-costruita per provarla immediatamente:
Dipendenza del grado
Aggiungi il SDK al tuo build.gradle.kts:
implementation("audio.soniqo:speech:0.0.20")
Avvio rapido
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
I modelli predefiniti auto-download da HuggingFace sul primo utilizzo (~500 MB totale). Dopo il download iniziale, tutte le inferenze vengono completamente offline.
Rilevamento di fine turno
Abilita Smart Turn v3.2 quando una pausa VAD dovrebbe essere trattata come una domanda piuttosto che un punto finale immediato; segna gli ultimi otto secondi del giro corrente una volta dopo ogni pausa confermata; un punteggio sotto la soglia mantiene la stessa svolta aperta, mentre il tappo di massima silenzio garantisce un eventuale punto di fine.
val modelDir = ModelManager.ensureModels(context, enableSmartTurn = true)
val pipeline = SpeechPipeline(
SpeechConfig(
modelDir = modelDir,
enableSmartTurn = true,
turnCompletionThreshold = 0.5f,
turnCompletionMaxSilenceSec = 2.0f,
)
)
Questo opt-in aggiunge un modello 11.1 MB int8 pinned; l'inferenza rimane completamente offline. Smart Turn è stato creato da Pipecat/Daily ed è distribuito sotto BSD-2-Clause.
Input vocale di sistema (RecognitionService)
La SDK spedisce un ready-made SpeechRecognitionService che si inserisce nel quadro di Android SpeechRecognizer API — nessun codice da scrivere. Una volta che l'app è selezionata come il riconoscimento vocale predefinito, qualsiasi app di terze parti chiama SpeechRecognizer.createSpeechRecognizer(context) (con il no) ComponentName) ottiene completamente on-device STT attraverso la vostra pipeline.
1. Discussione RECORD_AUDIO e servizio 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. Aggiungi 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. Impostare il servizio come impostazione predefinita del sistema (Impostazioni → Sistema → Lingue e input → Presa vocale su stock Android, o tramite adb):
adb shell settings put secure voice_recognition_service \
your.package/audio.soniqo.speech.service.SpeechRecognitionService
4. Verificare eseguendo la schermata Recognizer test , che chiama SpeechRecognizer.createSpeechRecognizer(ctx) (nessun componente) e registra ogni callback quadro — utile per confermare il round-trip del legante senza bisogno di logcat.
Il servizio implementa onCheckRecognitionSupport (API 33+) riportando le cover 27 BCP-47 delle lingue Parakeet TDT v3 marcate installedOnDeviceLanguage una volta che i modelli sono presenti (o pendingOnDeviceLanguage mentre stanno scaricando). L'attenzione audio viene acquisita con AUDIOFOCUS_GAIN_TRANSIENT per la durata di una sessione.
Gboard, Samsung Keyboard, e Google Assistant raggruppano i propri riconosciutori e saltano il default del sistema. Le app che chiamano esplicitamente il framework SpeechRecognizer API (o costruiscono il proprio UI sopra di esso) sono quelle che fluiscono attraverso il vostro servizio.
Modelli
Tutti i modelli vengono eseguiti tramite ONNX Runtime con l'accelerazione NNAPI. INT8 quantizzata per impostazione predefinita.
| Modello | Compiti | Dimensione |
|---|---|---|
| Parakeet TDT v3 ( INT8) | Discorso al testo (114 lingue) | 891 MB |
| Kokoro-82M (INT8) | Testo a velocità (8 lingue) | 330 MB |
| Silero VAD v5 | Rilevamento dell’attività vocale | 2 MB |
| DeepFilterNet3 | Cancellazione del rumore | 8 MB |
Codice sorgente: github.com / soniqo / speech-android
Prossimo passo
- Benchmarks — Android
- Linux C API — configurazione Linux incorporata