Traducere automată · Originalul în engleză
Noțiuni de bază început bază Android
speech-android oferă o procesare a vorbirii pe dispozitiv pentru Android utilizând ONNX Runtime. Conducta rulează VAD + STT + TTS cu suport pentru barjă, complet offline după descărcare model.
Cerințe
- Android 8+ (API 26)
- arm64-v8a arhitectura
Descărcați aplicația demo pre-construită pentru a încerca imediat:
Dependenţa de grad
Adaugă SDK la dvs. build.gradle.kts:
implementation("audio.soniqo:speech:0.0.20")
Start rapid
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
Modelele implicite auto-download de la HuggingFace la prima utilizare (~500 MB total). După descărcarea inițială, toate deducțiile sunt complet offline.
Detectare finală a turnului
Activează Smart Turn v3.2 atunci când o pauză VAD ar trebui tratată ca o chestiune mai degrabă decât ca un obiectiv imediat. Ea marchează ultimele opt secunde ale turnării curente o dată după fiecare pauză confirmată; un scor sub pragul menține aceeași turnantă deschisă, în timp ce capacul maxim de tăcere garantează un obiectiv final eventual.
val modelDir = ModelManager.ensureModels(context, enableSmartTurn = true)
val pipeline = SpeechPipeline(
SpeechConfig(
modelDir = modelDir,
enableSmartTurn = true,
turnCompletionThreshold = 0.5f,
turnCompletionMaxSilenceSec = 2.0f,
)
)
Acest opt-in adaugă un cod 11.1 MB int8 model; inference rămâne complet offline. Smart Turn a fost creat de Pipecat/Daily și este distribuit sub BSD-2-Clause.
Sistem de intrare vocală (service de recunoaștere)
SDK nave un gata-made SpeechRecognitionService care se conectează în cadrul Android SpeechRecognizer API ? Nici un cod pentru a scrie. Odată ce aplicația este selectată ca recunoștitor vocal implicit, orice aplicație terță parte apelează SpeechRecognizer.createSpeechRecognizer(context) (fără ComponentName) devine pe deplin pe-dispozitiv STT prin conducta.
1. Declaraţie RECORD_AUDIO şi serviciul în 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. Adăugați 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. Setați serviciul ca implicit de sistem (Setări → Sistem → Limbi & input → Detector de intrare vocală pe stoc Android, sau prin adb):
adb shell settings put secure voice_recognition_service \
your.package/audio.soniqo.speech.service.SpeechRecognitionService
4. Verificați prin rularea aplicației demo Recognizer test ecran, care solicită SpeechRecognizer.createSpeechRecognizer(ctx) (nicio componentă) și logează fiecare apel cadru
Implementarea serviciului onCheckRecognitionSupport (API 33+) returnând copertele 27 BCP-47 Limbi Parakeet TDT v3, marcate installedOnDeviceLanguage o dată ce modelele sunt prezente (sau pendingOnDeviceLanguage în timp ce ei descărcaţi. Atenţie audio este dobândit cu AUDIOFOCUS_GAIN_TRANSIENT pe durata unei sesiuni.
Gboard, Samsung Keyboard, și Google Assistant grupa propriii lor recunoștitori și săriți peste implicitul sistemului. Aplicațiile care apelează în mod explicit cadrul SpeechRecognizer API (sau să construiască propriul UI pe partea de sus a acestuia) sunt cele care curge prin serviciul dumneavoastră.
Modele
Toate modelele rulează prin ONNX Runtime cu accelerația NNAPI. INT8 cuantizată implicit.
| Model | Sarcina | Dimensiune |
|---|---|---|
| Parakeet TDT v3 (INT8) | Discurs-la-Text (114 limbi) | 891 MO |
| Kokoro-82M (INT8) | Text-to-Speech (8 limbi) | 330 MO |
| Silero VAD v5 | Detectarea activității vocale | 2 MO |
| DeepFilterNet3 | Anularea zgomotului | 8 MO |
Codul sursă: github.com/soniqo/speech-android
Următoarele etape
- Benchmarks ا Android performanță de inferență
- Linux C API Editat Linux setup