Tłumaczenie automatyczne · Oryginał angielski
Rozpoczęcie - Android
speech-android zapewnia przetwarzanie mowy na urządzeniu dla Android za pomocą ONNX Runtime. Gazociąg prowadzi VAD + STT + TTS z obsługą barge- w pełni offline po pobraniu modelu.
Wymagania
- Android 8+ (API 26)
- Architektura arm64-v8a
Pobierz wcześniej zbudowaną aplikację demo, aby spróbować natychmiast:
Zależność od upraw
Dodaj SDK do swojego build.gradle.kts:
implementation("audio.soniqo:speech:0.0.20")
Szybki 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
Domyślne modele auto- download z HuggingFace po pierwszym użyciu (~ 500 MB total). Po wstępnym pobraniu wszystkie wnioski są w pełni wyłączone.
Wykrywanie zakrętów
Włącz Smart Turn v3.2, gdy pauza VAD powinna być traktowana jako pytanie, a nie jako bezpośredni punkt końcowy. Zalicza ostatnie osiem sekund bieżącego obrotu raz po każdej potwierdzonej przerwie; wynik poniżej progu utrzymuje ten sam obrót otwarty, podczas gdy maksymalna cicha czapka gwarantuje ostateczny punkt końcowy.
val modelDir = ModelManager.ensureModels(context, enableSmartTurn = true)
val pipeline = SpeechPipeline(
SpeechConfig(
modelDir = modelDir,
enableSmartTurn = true,
turnCompletionThreshold = 0.5f,
turnCompletionMaxSilenceSec = 2.0f,
)
)
Ten opt- in dodaje jeden przypięty model 11.1 MB int8; wniosek pozostaje całkowicie wyłączony. Smart Turn został stworzony przez Pipecat / Daily i jest dystrybuowany w BSD-2-Clause.
System Voice Input (RecognitionService)
SDK statków gotowych SpeechRecognitionService które wtykają się w ramy Android SpeechRecognizer API - nie ma kodu do zapisu. Po wybraniu aplikacji jako domyślnego rozpoznawania głosu, każda aplikacja trzecia wywołanie SpeechRecognizer.createSpeechRecognizer(context) (z ComponentName) otrzymuje w pełni na urządzeniu STT przez rurociąg.
1. Declare RECORD_AUDIO i usługi w 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. Dodaj 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. Ustaw usługę jako domyślną funkcję systemową (Ustawienia → System → Języki i wejście → Picker wejściowy głosu na magazynie Android lub za pośrednictwem adb):
adb shell settings put secure voice_recognition_service \
your.package/audio.soniqo.speech.service.SpeechRecognitionService
4. Weryfikacja poprzez uruchomienie aplikacji demo Badanie rozpoznawcze ekran, który wywołuje SpeechRecognizer.createSpeechRecognizer(ctx) (brak komponentu) i loguje każdy framework callback - przydatny do potwierdzenia podróży segregatora bez potrzeby logcat.
Usługa implementuje onCheckRecognitionSupport (API 33+) zwraca 27 BCP-47 języki Parakeet TDT v3 Pokrywy, oznaczone installedOnDeviceLanguage raz dostępne modele (lub pendingOnDeviceLanguage podczas pobierania). Audio focus jest nabywany z AUDIOFOCUS_GAIN_TRANSIENT na czas trwania sesji.
Gboard, Samsung Keyboard i Google Assistant pakietują własne rozpoznawacze i pomijają domyślną wartość systemu. Aplikacje, które wyraźnie nazywają ramki SpeechRecognizer API (lub zbudować własne UI na górze) są te, które przepływają przez usługi.
Modele
Wszystkie modele uruchamiane przez ONNX Runtime z przyspieszeniem NNAPI. INT8 domyślnie oznaczony ilościowo.
| Wzór | Zadanie | Rozmiar |
|---|---|---|
| Parakeet TDT v3 (INT8) | Przemówienie do tekstu (114 języków) | 891 MB |
| Kokoro-82M (INT8) | Text- to- Speech (8 languages) | 330 MB |
| Silero VAD v5 | Wykrywanie aktywności głosowej | 2 MB |
| DeepFilterNet3 | Anulowanie hałasu | 8 MB |
Kod źródła: github.com /soniqo/speech-android
Kolejne kroki
- Wartości odniesienia - Wydajność wnioskowania Android
- Linux C API - wbudowane ustawienie Linux