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

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
Ważne

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.

Caveat

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órZadanieRozmiar
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 v5Wykrywanie aktywności głosowej2 MB
DeepFilterNet3Anulowanie hałasu8 MB

Kod źródła: github.com /soniqo/speech-android

Kolejne kroki